Uncloud – Ein Tool zum Deployen von Container-Apps über mehrere Server hinweg, ohne die Komplexität von Kubernetes
(uncloud.run)- Uncloud ist ein Open-Source-Tool, mit dem sich containerisierte Webanwendungen auf mehreren Servern bereitstellen und skalieren lassen – ganz ohne Kubernetes
- Der auf Docker Compose basierende Workflow bleibt erhalten und unterstützt Zero-Downtime-Deployments, automatisches HTTPS und serverübergreifende Skalierung
- Ohne zentrale Control Plane werden die einzelnen Maschinen über ein WireGuard-basiertes P2P-Netzwerk verbunden, sodass der Cluster weiterläuft, selbst wenn einige Server offline sind
- Enthält automatisches HTTPS über den Caddy-Reverse-Proxy, integrierte DNS-basierte Service Discovery und Load Balancing
- Auch in hybriden Cloud- und On-Premises-Umgebungen auf dieselbe Weise einsetzbar, wodurch sich Kontrolle über die Infrastruktur und vorhersehbare Kosten sichern lassen
PaaS-ähnlicher Workflow
- Bietet ein einfaches Deployment-Erlebnis wie Heroku oder Fly.io und bewahrt zugleich die vollständige Kontrolle über Server und Daten
- Vorhersehbare Kostenstruktur statt Abrechnung pro Anfrage
- Keine Vendor-Lock-in, Debugging mit Standard-SSH-Tools möglich
- Docker-Compose-freundliche Struktur, mit der Build, Push und Deployment per einem Befehl ausgeführt werden
- Keine Image-Registry erforderlich, Unterstützung für Zero-Downtime-Rolling-Deployments
- Replikat-Skalierung über mehrere Maschinen hinweg möglich
Wartungsarmes Design
- Keine Control Plane und kein Quorum-Management erforderlich, wodurch die Verwaltungs-Komplexität minimiert wird
- Unterstützt sichere Kommunikation zwischen Maschinen ohne offene Ports
- Automatische Service-Erkennung und automatische HTTPS-Ausstellung auf Basis von Let's Encrypt integriert
Funktionsweise
- Statt eines komplexen Clusters basiert es auf einem einfachen Netzwerk von Maschinen und bietet eine stabile Infrastruktur ohne hohen Wartungsaufwand
- Jede Maschine nimmt an einem WireGuard-Mesh-Netzwerk teil und führt automatische Peer-Erkennung sowie NAT-Traversal durch
- Container erhalten eine eigene IP und können serverübergreifend direkt kommunizieren
- Vollständig verteilte Architektur: Ohne zentralen Control-Node synchronisiert jede Maschine den Cluster-Zustand
- Selbst wenn einige Maschinen offline sind, bleibt der Cluster betriebsfähig
- Steuerung der gesamten Infrastruktur über eine Docker-ähnliche CLI
- Deployment, Monitoring und Skalierung sind allein mit SSH-Zugriff auf eine einzelne Maschine möglich
Hauptfunktionen
- Überall deploybar: Unterstützt alle Linux-Maschinen, darunter Cloud-VMs, dedizierte Server und On-Premises-Systeme
- Automatisches HTTPS: Der integrierte Caddy-Reverse-Proxy übernimmt die TLS-Zertifikatsausstellung ohne Konfiguration und aktiviert HTTPS automatisch
- Load Balancing: Verteilt Traffic auf Container-Replikate, die über mehrere Maschinen verteilt sind
- Service Discovery: Das integrierte DNS verfolgt automatisch die Position von Services im Netzwerk
- Infrastructure as Code: Der komplette App-Stack lässt sich mit bestehenden Docker-Compose-Dateien definieren
- Kein Vendor-Lock-in: Cloud und eigene Hardware lassen sich frei kombinieren
1 Kommentare
Hacker-News-Kommentar
Hallo, ich bin der Entwickler. Danke fürs Teilen.
Uncloud ist ein Container-Orchestrator ohne Control Plane. Vereinfacht gesagt ist es Docker Compose über mehrere Maschinen hinweg, ergänzt um ein automatisches WireGuard-Mesh, Service Discovery und HTTPS über Caddy. Jede Maschine synchronisiert den Cluster-Zustand per P2P mithilfe von Fly.ios Corrosion, sodass kein Quorum aufrechterhalten werden muss.
Nachdem ich Kubernetes sowohl in Startups als auch in Unicorn-Unternehmen betrieben habe, wurde mir klar, dass die meisten Teams in Wirklichkeit nur Container auf ein paar Maschinen zuverlässig ausführen wollen und dafür lediglich Networking, Rollouts und HTTPS brauchen. Der operative Overhead von K8s ist dafür im Vergleich einfach zu hoch.
Die wichtigsten Merkmale sind folgende:
Projektlink: https://github.com/psviderski/uncloud
uc machine initinterncurl | bashmit Root-Rechten ausführt, wirkt sicherheitstechnisch riskant. Ich würde es gern testen, aber wahrscheinlich nicht auf echten Maschinen laufen lassen.Ich habe den Großteil meiner Karriere mit Kubernetes verbracht und frage mich, was genau die Vorteile einer Architektur ohne Control Plane sind. Für mich ist die Control Plane gerade die zentrale Funktion von K8s.
Ein paar hundert Nodes und zehntausende Container sind in einem gemanagten Cluster dank automatischer Updates keine große Belastung. Ich frage mich, ob die Schmerzen, die Leute beim Self-Hosting von K8s erleben, der Hintergrund für solche Alternativen sind.
Selbst bei Netzpartitionen kann jede Partition unabhängig weiterlaufen. Es ist eine Art Rückkehr zur Einfachheit früherer Chef-/Ansible-Zeiten, ergänzt um die Lehren aus K8s.
Tolles Projekt. Ich werde es später auf jeden Fall ausprobieren.
Wenn du nach einer einfacheren Alternative suchst, ist auch Kamal interessant. Das ist ein Tool, das von einem Unternehmen betrieben wird, das K8s und die Cloud vollständig hinter sich gelassen hat, und es ist in der Praxis erprobt.
Mich würde interessieren, ob es eine Funktion gibt, die beim Festlegen von Servern automatisch Server-Hardening durchführt.
Ich bin Docker-Swarm-Nutzer. Uncloud ist die erste Alternative, die ich wirklich interessant finde.
Ich habe folgende Fragen:
x-ports: app.example.com:8000/httpsdefiniert.Alternativ kann man über
x-caddy: Caddyfiledie Caddy-Konfiguration anpassen. Details dazu stehen in der offiziellen Dokumentation.Derzeit gibt es keine Netzwerkisolierung zwischen Stacks. Die entsprechende Diskussion läuft in GitHub Discussion #94.
Mich würde interessieren, welches Verhalten du erwartest.
Die Antwort auf Frage 2 und 3 lautet „noch nicht“ bzw. „derzeit ja“. Die zugehörige Diskussion findet sich in Discussion #94.
Aus der Perspektive eines Swarm-Nutzers würde mich interessieren, welche Schwächen oder Unbequemlichkeiten von Swarm Uncloud deiner Meinung nach verbessern könnte.
Wirklich ein tolles Projekt. Es lohnt sich auch, andere Tools mit ähnlicher Zielsetzung anzusehen.
Falls du noch weitere kennst, wäre eine Ergänzung super.
Ich habe kürzlich Coolify ausprobiert, und es wirkte etwas unausgereift. Derzeit nutze ich Dokku, hätte aber gern eine bessere UI für die Datenbankverwaltung.
Ich bin mit k3s zufrieden, freue mich aber über neue Versuche in dem Zwischenbereich zwischen Docker Compose und vollständigem K8s. Besonders die WireGuard-Integration finde ich spannend.
Wirklich ein tolles Tool. Danke für die Arbeit.
Mich würde interessieren, wie die Zustandsreplikation im Backend funktioniert. CRDTs und Gossip-Protokolle werden erwähnt, aber die konkrete Implementierung bleibt unklar.
Wenn nicht K8s, warum dann nicht Nomad?
Das heißt, die Nutzung ist außerhalb von Self-Hosting eingeschränkt; faktisch ist eine freie Bereitstellung als Dienst kaum möglich. Siehe dazu den vollständigen Lizenztext.
Zur Referenz teile ich noch zwei interessante P2P-Bausteine: