# Self-host and scale web apps
without the complexity

Take your Docker Compose apps to production with zero-downtime deployments, automatic HTTPS, and cross-machine scaling. No Kubernetes required.

Quick start
Star on GitHub

    # Start with any cloud VM or your own server

    $ uc machine init root@137.123.45.67

    # Deploy your app with automatic HTTPS

    $ uc run --name my-app -p app.example.com:8000/https app-image:latest

    ✨ Your app is available at https://app.example.com

    # Achieve high availability by adding more machines and scaling the app

    $ uc machine add ubuntu@65.21.45.67

    $ uc scale my-app 2

## Cloud-like experience you control

Keep the Docker Compose workflows you love while deploying anywhere with ease.

### Mix and Match Infrastructure

- Mix and match cloud and on-premise across regions and providers
- Deploy customer-facing apps on reliable cloud VMs
- Run resource-hungry background jobs on budget-friendly bare metal servers
- Transform that dusty Mac mini into a powerful staging environment

### Effortless Operation

- Zero-config distributed Docker cluster
- No control plane to manage
- Keep apps running even when machines go offline
- Battle-tested WireGuard networking connects all your machines and workloads right out of the box
- Automatic HTTPS for your domains using Let's Encrypt

### Developer Experience You Love

- Deploy and manage across machines with familiar Docker-like commands
- Use the same Docker Compose from local dev to production
- Find your services instantly with built-in service discovery and DNS
- Communicate securely with services across machines without opening ports

How it works

### Simple by design,
powerful in practice

Uncloud replaces complex clusters with a simple network of machines working seamlessly together — no maintenance overhead, just reliable infrastructure.

Secure private network
Each machine joins a WireGuard mesh network with automatic peer discovery and NAT traversal. Containers get unique IPs and can communicate directly across machines.
Fully decentralised
Unlike traditional orchestrators, there's no central control plane to maintain. Each machine maintains a synchronised copy of the cluster state through peer-to-peer communication, keeping cluster operations functional even if some machines go offline.
Smart CLI
Control your entire infrastructure using intuitive Docker-like commands from anywhere. Deploy, monitor, and scale applications across all your machines while the CLI only needs SSH access to a single machine.
Multi-provider cluster of 3 machines

### Deploy anywhere

Run your apps on any Linux machine — from cloud VMs and dedicated servers to bare metal at your office or home.

### Automatic HTTPS

Get free TLS certificates and automatic HTTPS for your domains with zero configuration using built-in Caddy reverse proxy.

### Load balancing

Distribute traffic across container replicas running on different machines for improved reliability and performance.

### Service discovery

Access any service by its name from any container using the built-in DNS that automatically tracks services across your network.

### Infrastructure as Code

Define your entire app stack in a familiar Docker Compose file. No need to learn a new config format.

### No vendor lock-in

Mix cloud providers and your own hardware freely to optimise costs and performance, without changing how you deploy or manage apps.

## See in action

Deploy a highly available web app with automatic HTTPS across multiple regions and on-premises in just a couple minutes.

## Be part of the development journey

Uncloud is an open source project I'm actively developing. I'd love to share this journey with you. Subscribe to follow the progress, get early insights into new features, and be the first to know when it's ready for production use. No marketing, ads or spam.

Want to contribute? Check out the GitHub issues and join the Discord server.