Main features
- Docker Compose files for services and volumes
- Zero-downtime rolling deployments with health checks
- Images pushed directly to machines without a registry
- Automatic WireGuard mesh with NAT traversal
- Built-in DNS service discovery and load balancing
- Automatic HTTPS with Caddy, certificates shared across machines
- Optional managed DNS names under uncld.dev
- Persistent volumes and placement on chosen machines
- Pre-deploy hooks, configs and secrets
- Docker-like CLI that manages the cluster over SSH
What Uncloud does
Uncloud joins Docker hosts into a cluster and deploys containerized apps across them. Machines can be cloud VMs, dedicated servers or a spare computer at home, in any mix of providers and locations. You define services in a normal Docker Compose file and deploy them with the uc command-line tool, which feels much like docker and docker compose. The project describes its target as the space between expensive hosted PaaS products and the operational weight of Kubernetes.
Deployments are rolling updates that wait for health checks, so a new version replaces the old one without downtime. Replicas can be spread across machines, containers reach each other by service name through a built-in DNS server, and requests are load-balanced between replicas. Caddy runs on the machines as the reverse proxy and obtains Let’s Encrypt certificates; the certificates and ACME challenges are stored in the cluster so any machine can serve a domain.
A detail that removes a common chore: Uncloud can build an image on your laptop and push it straight to the target machines, sending only missing layers, so you do not need to run or pay for a container registry.
How it differs from Swarm and Kubernetes
There is no central control plane and no quorum. Each machine keeps a synchronized copy of the cluster state, and you can manage the whole cluster by connecting over SSH to any one machine. If some machines go offline, the rest carry on. Machines are linked by an automatically configured WireGuard mesh with peer discovery and NAT traversal, so containers on different hosts talk over a private network without exposing ports to the internet.
Operations are imperative rather than reconciled: deploy and scale commands can show a plan of the containers and volumes they will create or remove before you approve it. When something breaks, you are dealing with ordinary Docker containers that you can inspect with the usual tools.
Self-hosting Uncloud
You install the CLI on macOS or Linux (Windows through WSL), then run uc machine init against a server reachable over SSH as root or a user with passwordless sudo. The command installs Docker if needed, the Uncloud daemon, a Docker network and Caddy, and can reserve a free subdomain under uncld.dev from the project’s managed DNS service. Further machines are added the same way. The documentation lists Ubuntu 22.04 or Debian 11 on AMD64 or ARM64 with at least 1 vCPU and 512 MB of RAM as the tested minimum, and says the daemon itself uses no more than about 150 MB of RAM in small setups.
Hosted version
None. Uncloud is a self-hosted tool; the only service the project runs is the optional DNS for uncld.dev names.
Limitations
Uncloud is pre-1.0 and the README warns of occasional breaking changes; automatic rollback on a failed deploy is listed as coming soon. It supports a subset of the Compose specification. There is no web dashboard, no Git-triggered build, no preview environments and no managed databases: you run databases as Compose services and trigger deploys from your own machine or CI.
Who it suits
Uncloud suits developers who already use Docker Compose and want to run the same files on several servers with HTTPS and rolling updates, without adopting Kubernetes or Swarm. It sits close to Kamal in spirit, adding networking and multi-machine scheduling. If you want a web interface and Git-based deploys, look at Coolify or Dokploy.
Technical details
Self-hosting needs
- Docker
Built with
- Go
- Rust
GitHub topics
- containers
- deployment
- devops
- docker
- docker-compose
- golang
- kubernetes
- orchestration
- self-hosted
- uncloud
Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.