mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 19:13:34 +00:00
update README: header, features, why uncloud
This commit is contained in:
@@ -1,11 +1,69 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img src="./website/images/logo.svg" height="100" alt="Uncloud logo"/>
|
<img src="./website/images/logo.svg" height="100" alt="Uncloud logo"/>
|
||||||
<h1>Uncloud</h2>
|
<h1>Uncloud</h1>
|
||||||
A lightweight Docker clustering tool for running web apps on your own servers — from cloud VMs to bare metal.<br>
|
<strong>Docker simplicity. Multi-machine power.</strong>
|
||||||
Replace Heroku and Render, no Kubernetes required.
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Quick start
|
Uncloud is a lightweight clustering and container orchestration tool that lets you deploy and manage web apps across
|
||||||
|
cloud VMs and bare metal with minimized cluster management overhead. It creates a secure WireGuard mesh network between
|
||||||
|
your Docker hosts and provides automatic service discovery, load balancing, ingress with HTTPS, and simple CLI commands
|
||||||
|
to manage your apps.
|
||||||
|
|
||||||
|
Unlike traditional orchestrators, there's no central control plane and quorum to maintain. Each machine maintains a
|
||||||
|
synchronized copy of the cluster state through peer-to-peer communication, keeping cluster operations functional even if
|
||||||
|
some machines go offline.
|
||||||
|
|
||||||
|
Uncloud aims to be the solution for developers who want the flexibility of self-hosted infrastructure without the
|
||||||
|
operational complexity of Kubernetes.
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
* **Deploy anywhere**: Combine cloud VMs, dedicated servers, and bare metal into a unified computing environment —
|
||||||
|
regardless of location or provider.
|
||||||
|
* **Zero-config private network**: Automatic WireGuard mesh with peer discovery and NAT traversal. Containers get unique
|
||||||
|
IPs for direct cross-machine communication.
|
||||||
|
* **No control plane**: Fully decentralized design eliminates single points of failure and reduces operational overhead.
|
||||||
|
* **Imperative over declarative**: Favoring imperative operations over state reconciliation simplifies both the mental
|
||||||
|
model and troubleshooting.
|
||||||
|
* **Service discovery**: Built-in DNS server resolves service names to container IPs.
|
||||||
|
* **Automatic HTTPS**: Built-in Caddy reverse proxy handles TLS certificate provisioning and renewal using Let's
|
||||||
|
Encrypt.
|
||||||
|
* **Docker-like CLI**: Familiar commands for managing both infrastructure and applications.
|
||||||
|
* **Remote management**: Control your entire infrastructure through SSH access to any single machine in the cluster.
|
||||||
|
* **Sustainable computing**: Only 120 MB of memory overhead per machine, the rest is for your apps.
|
||||||
|
|
||||||
|
Coming soon:
|
||||||
|
|
||||||
|
* Project isolation through environments/namespaces
|
||||||
|
* Infrastructure as Code using Docker Compose format
|
||||||
|
* Persistent volumes and secrets management
|
||||||
|
* Monitoring and log aggregation
|
||||||
|
* Database deployment and management
|
||||||
|
* Curated application catalog
|
||||||
|
|
||||||
|
Here is a diagram of an Uncloud multi-provider cluster of 3 machines:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 💫 Why Uncloud?
|
||||||
|
|
||||||
|
Modern cloud platforms like Heroku and Render offer amazing developer experiences but at a premium price. Traditional
|
||||||
|
container orchestrators like Kubernetes provide power and flexibility but require significant operational expertise. I
|
||||||
|
believe there's a sweet spot in between — a pragmatic solution for the majority of us who aren't running at Google
|
||||||
|
scale. You should be able to:
|
||||||
|
|
||||||
|
* **Own your infrastructure and data**: Whether driven by costs, compliance, or flexibility, run applications on any
|
||||||
|
combination of cloud VMs and personal hardware while maintaining the cloud-like experience you love.
|
||||||
|
* **Stay simple**: Don't worry about control planes, highly-available clusters, or complex YAML configurations for
|
||||||
|
common use cases.
|
||||||
|
* **Build with proven primitives**: Get production-grade networking, deployment primitives, service discovery, load
|
||||||
|
balancing, and ingress with HTTPS out of the box without becoming 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 you're running on a $5 VPS, a spare Mac mini, or a rack of bare metal servers.
|
||||||
|
|
||||||
|
## 🚀 Quick start
|
||||||
|
|
||||||
1. Install Uncloud CLI:
|
1. Install Uncloud CLI:
|
||||||
|
|
||||||
@@ -19,8 +77,8 @@ curl -fsS https://get.uncloud.run/install.sh | sh
|
|||||||
uc machine init root@your-server-ip
|
uc machine init root@your-server-ip
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Create a DNS A record pointing `app.example.com` to your server's IP address, then deploy your app with
|
3. Create a DNS A record pointing `app.example.com` to your server's IP address, then deploy your app with automatic
|
||||||
automatic HTTPS:
|
HTTPS:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
uc run --name my-app -p app.example.com:8000/https registry/app
|
uc run --name my-app -p app.example.com:8000/https registry/app
|
||||||
@@ -28,17 +86,20 @@ uc run --name my-app -p app.example.com:8000/https registry/app
|
|||||||
|
|
||||||
That's it! Your app is now running and accessible at https://app.example.com ✨
|
That's it! Your app is now running and accessible at https://app.example.com ✨
|
||||||
|
|
||||||
## Project status
|
## 🏗 Project status
|
||||||
|
|
||||||
Uncloud is an open source project I'm ([@psviderski](https://github.com/psviderski)) actively developing. I'd love to
|
Uncloud is currently in active development and is **not ready for production use**. Features may change significantly
|
||||||
share this journey with you. [Subscribe](https://uncloud.run/) to follow the progress, get early insights into new
|
and there may be breaking changes between releases.
|
||||||
features, and be the first to know when it's ready for production use.
|
|
||||||
|
|
||||||
I'd also love your input:
|
I'd love your input:
|
||||||
|
|
||||||
- 🐛 Found a bug? [Open an issue](https://github.com/psviderski/uncloud/issues)
|
* 🐛 Found a bug? [Open an issue](https://github.com/psviderski/uncloud/issues)
|
||||||
- 💡 Have ideas? [Join the discussion](https://github.com/psviderski/uncloud/discussions)
|
* 💡 Have ideas? [Join the discussion](https://github.com/psviderski/uncloud/discussions)
|
||||||
|
|
||||||
## Motivation
|
## 📫 Stay updated
|
||||||
|
|
||||||
|
* [Subscribe](https://uncloud.run/#subsribe) to my newsletter to follow the progress, get early insights into new
|
||||||
|
features, and be the first to know when it's ready for production use.
|
||||||
|
* Watch this repository for releases.
|
||||||
|
* Follow [@psviderski](https://github.com/psviderski) on GitHub.
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|||||||
Reference in New Issue
Block a user