Uncloud: Lightweight Container Orchestration without Kubernetes Overhead

Summary
Uncloud is a lightweight tool for deploying and managing containerized applications across a network of Docker hosts, bridging the gap between Docker and Kubernetes. It offers a decentralized, peer-to-peer orchestration solution with minimal overhead, simplifying the deployment of web apps across cloud VMs and bare metal. With features like automatic service discovery, load balancing, and HTTPS, Uncloud provides a powerful yet simple alternative to complex orchestrators.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
Uncloud is a lightweight clustering and container orchestration tool that simplifies the deployment and management of web applications across cloud VMs and bare metal servers. It aims to bridge the gap between Docker and Kubernetes, offering a solution with minimized cluster management overhead. Unlike traditional orchestrators, Uncloud features a fully decentralized design with no central control plane, ensuring cluster operations remain functional even if some machines go offline. It creates a secure WireGuard mesh network between your Docker hosts, providing automatic service discovery, load balancing, ingress with HTTPS, and a familiar Docker-like CLI for managing your applications.
Installation
Getting started with Uncloud is straightforward. Follow these steps to install the CLI and initialize your first machine:
-
Install Uncloud CLI:
brew install psviderski/tap/uncloud # or using curl (macOS/Linux) curl -fsS https://get.uncloud.run/install.sh | shFor more installation options, refer to the official documentation.
-
Initialize your first machine:
uc machine init root@your-server-ip -
Deploy your app: Deploy an app from a Docker image and publish its container port 8000 as HTTPS using
app.example.comdomain:uc run -p app.example.com:8000/https image/my-app -
Configure DNS: Create a DNS A record in your DNS provider (e.g., Cloudflare, Namecheap) that points
app.example.comto your server's IP address. Allow a few minutes for DNS propagation. Your app will then be accessible athttps://app.example.com. -
Clean up (optional):
uc ls # Copy the service name from the output and run the rm command: uc rm my-app-nameTo fully uninstall Uncloud on a machine, run
uncloud-uninstall.
Examples
Uncloud provides a seamless experience for deploying and managing containerized applications. The project's README includes a quick demo showcasing how to deploy the uncloud.run website to two remote machines from a compose.yaml file. This demonstrates exposing a container port as HTTPS on a custom domain, all managed by Uncloud.
For a more advanced use case, you can deploy a highly available web app with automatic HTTPS across multiple regions and on-premises infrastructure in minutes.
Additionally, interactive tutorials and playgrounds are available on iximiuz Labs:
- Setting up a new Uncloud cluster: This tutorial guides you through creating a new cluster with two machines and deploying a simple web service.
- Uncloud playground: A pre-initialized Uncloud cluster where you can experiment directly in your browser.
For more community recipes and templates for deploying popular services, check out the uncloud-recipes repository.
Why Use Uncloud?
Uncloud is designed for developers who seek the flexibility of self-hosted infrastructure without the operational complexity typically associated with Kubernetes. It aims to offer a sweet spot between expensive cloud platforms and complex orchestrators, allowing you to:
- Own your infrastructure and data: Run applications on any combination of cloud VMs and personal hardware, maintaining control over your data while enjoying a cloud-like experience.
- Stay simple as you grow: Start with a single machine and easily add more as needed, without changing your workflow or worrying about complex YAML configurations or highly-available control planes.
- Build with proven primitives: Get production-grade networking, deployment primitives, service discovery, load balancing, and ingress with HTTPS out of the box, without needing to become a distributed systems expert.
- Support sustainable computing: Minimize system overhead to maximize resources available for your applications.
Uncloud's goal is to make deployment and management of containerized applications feel as seamless as using a cloud platform, whether on a $5 VPS, a spare Mac mini, or a rack of bare metal servers.
Links
- GitHub Repository: https://github.com/psviderski/uncloud
- Documentation: https://uncloud.run/docs
- Join Discord: https://discord.gg/eR35KQJhPu
- Follow on X: https://x.com/psviderski
- Sponsor the Project: https://github.com/sponsors/psviderski
- Uncloud Recipes: https://github.com/psviderski/uncloud-recipes
- iximiuz Labs Tutorials: https://labs.iximiuz.com/tutorials/uncloud-create-cluster-ebebf72b
- iximiuz Labs Playground: https://labs.iximiuz.com/playgrounds/uncloud-cluster-64523f7c
- Newsletter: https://uncloud.run/#subscribe