Initial vault setup
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
---
|
||||
title: Uncloud
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, deployment, docker-swarm, cluster, go]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Deployment, https://github.com/psviderski/uncloud]
|
||||
---
|
||||
|
||||
# 🚀 Uncloud
|
||||
|
||||
> **L'orchestrateur Docker multi-host** — cluster Docker Swarm simplifié, CLI puissante, machine images déployables en quelques secondes, idéal pour gérer un parc de serveurs hétérogènes.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [uncloud.run](https://uncloud.run/) |
|
||||
| **GitHub** | [psviderski/uncloud](https://github.com/psviderski/uncloud) |
|
||||
| **License** | Apache-2.0 |
|
||||
| **Langage** | **Go** (⚠️ binaire statique) |
|
||||
| **Étoiles GitHub** | 5 204 ⭐ |
|
||||
| **Catégorie** | [[cat-deployment\|Deployment & PaaS]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**Uncloud** est un **orchestrateur de cluster Docker** récent (2024) créé par Pavlo Shvidersky (un développeur Go réputé). Sa promesse : **rendre Docker Swarm aussi simple à utiliser que Docker Compose**, mais avec les bénéfices d'un vrai cluster multi-host (haute disponibilité, scaling, rolling updates).
|
||||
|
||||
La **CLI `unc`** est le cœur de l'expérience : un seul binaire Go, statique, qui se connecte à un **control plane** auto-hébergé (un seul conteneur Docker). Avec `unc deploy <image>`, on déclare un service (réplicas, ressources, ports, healthcheck) et Uncloud le **planifie sur le cluster Swarm** automatiquement, en répartissant la charge. Les `unc machine` permettent de provisionner des **machines distantes** (VPS, Hetzner, Scaleway, DigitalOcean, Vultr) depuis la CLI.
|
||||
|
||||
L'**innovation** est la **machine image** : un format déclaratif (YAML) qui décrit un service complet (image, env, volumes, healthcheck, scaling, réseau). On peut **versionner ces définitions dans Git** et les **redeployer** sur n'importe quel cluster Uncloud. C'est **GitOps pour Docker Swarm**.
|
||||
|
||||
**Différences avec les PaaS classiques** : Uncloud **n'a pas d'UI web** (CLI + éventuellement TUI), il **ne cache pas Docker Swarm** (il s'appuie dessus), il est **orienté SRE/dev** qui veulent un **workflow `compose.yml → cluster`** sans Kubernetes. C'est **plus bas niveau** que Coolify mais **plus puissant** qu'un docker-compose manuel.
|
||||
|
||||
**Public cible** : **devs Go / SRE** qui aiment la CLI, **équipes** qui veulent industrialiser un cluster Swarm, **homelabbers avancés** qui sortent du mono-serveur. Pour un PaaS avec UI, [[app-coolify]] / [[app-dokploy]] ; pour Swarm "PaaS-y", [[app-caprover]].
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Installation de la CLI (Linux/macOS)
|
||||
|
||||
```bash
|
||||
# Via le binaire pré-compilé
|
||||
curl -fsSL https://github.com/psviderski/uncloud/releases/latest/download/unc-linux-amd64 -o /usr/local/bin/unc
|
||||
chmod +x /usr/local/bin/unc
|
||||
unc version # vérif
|
||||
```
|
||||
|
||||
### Initialisation d'un cluster
|
||||
|
||||
```bash
|
||||
# Sur le premier host (control plane)
|
||||
unc init
|
||||
# Cette commande :
|
||||
# - initialise Docker Swarm
|
||||
# - démarre le control plane Uncloud
|
||||
# - configure le contexte CLI local
|
||||
|
||||
# Sur chaque host additionnel (worker)
|
||||
unc machine create ssh://user@host2.example.com
|
||||
# Uncloud provisionne Swarm + joint le cluster automatiquement
|
||||
```
|
||||
|
||||
### docker-compose.yml du control plane (auto-installé)
|
||||
|
||||
```yaml
|
||||
# Généré par `unc init`, pas besoin de l'écrire manuellement
|
||||
services:
|
||||
uncloud-api:
|
||||
image: ghcr.io/psviderski/uncloud:latest
|
||||
container_name: uncloud-api
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080" # API
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./data:/data
|
||||
network_mode: host
|
||||
```
|
||||
|
||||
> ⚠️ **L'API Uncloud a besoin d'accéder au socket Docker** de l'hôte. Isoler sur un hôte de confiance.
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
1. **Initialiser le cluster** : `unc init` sur le host principal
|
||||
2. **Ajouter des machines** : `unc machine create ssh://user@host` (Hetzner, Scaleway, VPS perso, etc.)
|
||||
3. **Déployer un service** : `unc deploy -i nginx:latest --replicas 3 --port 80:80 nginx`
|
||||
4. **Machine image (GitOps)** : créer un `nginx.yml` avec `image`, `replicas`, `healthcheck`, `ports` ; `unc apply -f nginx.yml`
|
||||
5. **Scaler** : `unc scale nginx=5` (rolling update sur le cluster)
|
||||
6. **Load balancing** : Uncloud crée un **service mesh** Swarm interne, les services se découvrent par DNS
|
||||
7. **TLS** : provisionner un reverse proxy (Traefik, Caddy) devant, ou activer le `unc proxy` intégré
|
||||
8. **Logs centralisés** : `unc logs nginx -f` agrège les logs des 3 replicas
|
||||
|
||||
## 🔗 Alternatives
|
||||
|
||||
- **Docker Swarm natif** — sous-jacent à Uncloud, plus bas niveau
|
||||
- **Coolify** — PaaS UI web, plus user-friendly, pas Swarm-first
|
||||
- **Dokploy** — concurrent de Coolify, UI Next.js
|
||||
- **CapRover** — PaaS Swarm avec UI web, plus âgé
|
||||
- **Kubernetes (K3s)** — orchestrateur plus puissant mais beaucoup plus complexe
|
||||
- **Nomad** — alternative à K8s par HashiCorp, plus simple
|
||||
- **Pulumi / Ansible + Compose** — DIY, plus de contrôle, plus verbeux
|
||||
- **Fly.io** — PaaS managé multi-région, équivalent cloud
|
||||
|
||||
## 🔒 Sécurité
|
||||
|
||||
- **SSH key auth** : Uncloud utilise SSH pour provisionner les machines, **désactiver le password auth**
|
||||
- **mTLS Swarm** : activer `--listen-addr` avec un cert sur le control plane
|
||||
- **Compte Uncloud** : un premier compte créé à `unc init`, **2FA recommandée**
|
||||
- **Volumes chiffrés** : utiliser des **drivers de volumes chiffrés** (LUKS, ZFS crypt) sur les hosts
|
||||
- **Limiter l'accès au socket Docker** : isoler le control plane sur un hôte dédié
|
||||
- **Mettre à jour** : `unc update` régulièrement (CLI + control plane)
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Site officiel](https://uncloud.run/)
|
||||
- [Documentation](https://uncloud.run/docs)
|
||||
- [Dépôt GitHub psviderski/uncloud](https://github.com/psviderski/uncloud)
|
||||
- [Exemples de machine images](https://github.com/psviderski/uncloud/tree/main/examples)
|
||||
- [Uncloud vs Kubernetes (blog)](https://uncloud.run/blog)
|
||||
|
||||
## 🔗 Pages Liées
|
||||
|
||||
- [[cat-deployment]]
|
||||
- [[app-coolify]]
|
||||
- [[app-dokploy]]
|
||||
- [[app-caprover]]
|
||||
- [[app-portainer]]
|
||||
- [[cat-docker]]
|
||||
- [[securisation-home-lab]]
|
||||
- [[recettes-docker-compose]]
|
||||
Reference in New Issue
Block a user