Repolode
psviderski

psviderski/uncloud

Deploys and scales containerised apps across your own Docker hosts over a WireGuard mesh, without Kubernetes or Swarm.

Open-source alternative to:Heroku

Stars
5,566
Forks
184
Open issues
89
Last commit
10 days ago

What is it?

Uncloud is a lightweight tool for running containerised web apps across a set of Docker hosts, including cloud VMs, dedicated servers and bare metal. It sets up a WireGuard mesh between the machines, so containers on different hosts get unique IPs and can talk to each other directly.

The cluster has no central control plane or quorum. Each machine keeps a synced copy of the cluster state through peer-to-peer communication, so operations keep working when some machines are offline. Services are defined with Docker Compose files, and the CLI offers Docker-like commands. Built-in service discovery, load balancing, and a Caddy reverse proxy handle ingress with automatic HTTPS.

It suits developers who want to host their own apps on their own machines and need more than a single Docker host, but do not want to operate Kubernetes.

Key features

  • 01Builds a WireGuard mesh network between Docker hosts with automatic peer discovery.
  • 02Accepts standard Docker Compose files for defining services and volumes.
  • 03Provides built-in DNS-based service discovery and load balancing.
  • 04Handles HTTPS ingress with automatic Let's Encrypt certificates via Caddy.
  • 05Supports rolling updates for zero-downtime deployments.
  • 06Runs without a central control plane, so no single machine is a point of failure.

Use cases

  • Hosting your own web apps across a few cloud VMs or a home server.
  • Running a highly available service across multiple regions or providers.
  • Self-hosting stateful services with volumes managed across machines.
  • Replacing a single Docker host setup without adopting Kubernetes.

Quick start

  1. 1

    Install the Uncloud CLI with Homebrew

    brew install psviderski/tap/uncloud
  2. 2

    Initialise your first machine over SSH

    uc machine init root@your-server-ip
  3. 3

    Deploy a Docker image and publish port 8000 as HTTPS on your domain

    uc run -p app.example.com:8000/https image/my-app
  4. 4

    Create a DNS A record that points your domain to the server's IP address, then wait for DNS propagation

Things to know

  • Automatic rollback on failure is not available yet, according to the README.
  • Setup requires SSH access to your own servers, and the machine daemon and Docker are installed on each one.

In collections

Topics

FAQ

What is uncloud?
Deploys and scales containerised apps across your own Docker hosts over a WireGuard mesh, without Kubernetes or Swarm. Uncloud is a lightweight tool for running containerised web apps across a set of Docker hosts, including cloud VMs, dedicated servers and bare metal. It sets up a WireGuard mesh between the machines, so containers on different hosts get unique IPs and can talk to each other directly.
Is uncloud free to use? What license does it have?
uncloud is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
Is uncloud still maintained?
Actively maintained. The last commit to uncloud was on Oct 14, 2026.
What can I use uncloud for?
Hosting your own web apps across a few cloud VMs or a home server. Running a highly available service across multiple regions or providers. Self-hosting stateful services with volumes managed across machines. Replacing a single Docker host setup without adopting Kubernetes.
How do I install uncloud?
Install the Uncloud CLI with Homebrew: brew install psviderski/tap/uncloud Initialise your first machine over SSH: uc machine init root@your-server-ip Deploy a Docker image and publish port 8000 as HTTPS on your domain: uc run -p app.example.com:8000/https image/my-app Create a DNS A record that points your domain to the server's IP address, then wait for DNS propagation
Where can I get uncloud?
The source code and installation instructions are on GitHub: https://github.com/psviderski/uncloud

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects