Files
2026-06-09 18:40:21 +02:00

6.0 KiB


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
GitHub psviderski/uncloud
License Apache-2.0
Langage Go (⚠️ binaire statique)
Étoiles GitHub 5 204
Catégorie cat-deployment

📝 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)

# 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

# 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é)

# 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

🔗 Pages Liées