166 lines
6.9 KiB
Markdown
166 lines
6.9 KiB
Markdown
---
|
|
title: Komodo
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, docker, container, orchestration, multi-server, deploy, monitoring-docker]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/moghtech/komodo]
|
|
---
|
|
|
|
# 🐳 Komodo
|
|
|
|
> **L'orchestrateur Docker multi-serveurs en Rust** — déployez et supervisez vos stacks sur N hôtes depuis une interface unique.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [komo.do](https://komo.do/) |
|
|
| **GitHub** | [moghtech/komodo](https://github.com/moghtech/komodo) |
|
|
| **License** | GPL-3.0 (custom-ish : core AGPL, libs permissives) |
|
|
| **Langage** | Rust (backend) + TypeScript (UI) |
|
|
| **Étoiles GitHub** | 11,3k ⭐ |
|
|
| **Dernière MAJ** | 2026-06-06 |
|
|
| **Catégorie** | [[cat-docker\|Docker]] |
|
|
|
|
## 📝 Description
|
|
|
|
**Komodo** est une **plateforme d'orchestration et de déploiement** écrite en Rust, conçue pour gérer des **stacks docker-compose sur plusieurs serveurs** depuis une interface web unique. Là où [[app-portainer]] nécessite un *agent* par hôte, Komodo utilise un binaire **`komodod`** déployé sur chaque serveur cible, qui communique avec le serveur central via une API REST/WebSocket sécurisée.
|
|
|
|
Le résultat : un seul *dashboard* pour superviser 1, 3 ou 30 serveurs, déployer une stack sur l'un, l'autre, ou tous, et recevoir des alertes unifiées. Idéal pour les homelabs multi-machines (Raspberry Pi + NAS + serveur Proxmox…) ou les petites équipes d'ops.
|
|
|
|
- ✅ **Multi-serveurs** (illimité) depuis une seule UI
|
|
- ✅ **Stacks docker-compose** déployables par groupe de serveurs (*batch deploy*)
|
|
- ✅ **Procédures custom** (scripts shell) exécutables à distance
|
|
- ✅ **Resources monitoring** (CPU/RAM/Disk/Net par serveur)
|
|
- ✅ **Alertes** : CPU élevé, disk full, conteneurs down, MAJ dispos
|
|
- ✅ **Gestion des secrets** (variables chiffrées au repos)
|
|
- ✅ **RBAC** (utilisateurs, groupes, permissions fines)
|
|
- ✅ **Audit log** (qui a fait quoi, quand)
|
|
- ✅ **Builds Docker** à distance (depuis un repo git)
|
|
- ✅ **Webhooks** (déclenchement Git push, CI, etc.)
|
|
- ✅ **Single binary** (`komodod` en Go-like Rust), faible empreinte
|
|
|
|
**Public cible** : **homelabs avancés multi-machines** et **petites équipes DevOps** qui veulent un Portainer-like mais en mieux, ou un alternative moderne à Ansible Tower.
|
|
|
|
**Alternatives directes** : [[app-portainer]] (référence, plus mature), [[app-dockge]] (mono-serveur, plus simple), [[app-arcane]] (mono-serveur, moderne), **Ansible** / **Terraform** (IaC, plus bas niveau).
|
|
|
|
## 🚀 Installation
|
|
|
|
### Architecture
|
|
|
|
- **`komodo-core`** : API centrale + UI (1 conteneur / 1 binaire)
|
|
- **`komodo-periphery`** : agent léger à installer sur **chaque serveur distant**
|
|
|
|
### Option 1 : Docker Compose (serveur central)
|
|
|
|
```yaml
|
|
# docker-compose.yml — serveur central
|
|
version: '3.8'
|
|
services:
|
|
komodo:
|
|
image: ghcr.io/moghtech/komodo:1.18.0
|
|
container_name: komodo
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
ports:
|
|
- "9120:9120" # web UI
|
|
- "8120:8120" # API REST
|
|
volumes:
|
|
- komodo_data:/data
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.komodo.rule=Host(`komodo.example.com`)"
|
|
- "traefik.http.routers.komodo.entrypoints=websecure"
|
|
- "traefik.http.routers.komodo.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.komodo.loadbalancer.server.port=9120"
|
|
|
|
volumes:
|
|
komodo_data:
|
|
```
|
|
|
|
### Option 2 : Agent sur chaque serveur distant
|
|
|
|
```bash
|
|
# Sur CHAQUE serveur à manager
|
|
curl -fsSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery | bash
|
|
# Édite /etc/komodo/periphery.config.toml :
|
|
# - ip = "0.0.0.0"
|
|
# - port = 8120
|
|
# - komodo_url = "https://komodo.example.com" # le serveur central
|
|
# - api_key = "..." # généré côté Komodo
|
|
sudo systemctl restart komodo-periphery
|
|
```
|
|
|
|
> Le serveur central peut aussi être lui-même un *periphery* (self-managed).
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Accéder à l'UI** : `https://komodo.example.com:9120` (ou via Traefik)
|
|
2. **Créer le compte admin** et générer une **API key**
|
|
3. **Ajouter un serveur** : *Servers > New* > IP, port, clé API du `komodod` distant
|
|
4. **Créer un premier déploiement** : *Stacks > New* > chemin vers le `compose.yaml`
|
|
5. **Lier la stack à un ou plusieurs serveurs** (sélection multiple possible)
|
|
6. **Configurer les alertes** : *Alerts > New* (Discord, Telegram, email, webhook…)
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
|
|
- [[app-portainer]] — Référence, mature, K8s/Swarm support
|
|
- [[app-dockge]] — Mono-serveur, plus simple
|
|
- [[app-arcane]] — Mono-serveur, UI Svelte moderne
|
|
- **Ansible AWX** — Plus générique, plus complexe
|
|
- **Coolify** — PaaS self-hosted (app store + deploy)
|
|
- **Dokku** — Mini-Heroku sur un serveur
|
|
- **CasaOS** — Plus qu'un orchestrateur
|
|
|
|
### Propriétaires
|
|
|
|
- **Portainer Business** — SSO, RBAC, support commercial
|
|
- **Rancher** (SUSE) — Enterprise K8s
|
|
- **Octopus Deploy** — CD enterprise
|
|
- **Spacelift** — IaC orchestration
|
|
- **Harness** — CI/CD + deployment
|
|
|
|
### Tableau comparatif
|
|
|
|
| Critère | Komodo | Portainer CE | Dockge | Ansible AWX | Coolify |
|
|
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
| Multi-serveur | ✅ (natif) | ✅ (agent) | ❌ | ✅ | ✅ |
|
|
| K8s | ❌ | ✅ | ❌ | ❌ | ❌ |
|
|
| RBAC | ✅ | Basique | ❌ | ✅ | ✅ |
|
|
| App store | ❌ | ✅ (templates) | ❌ | ❌ | ✅ |
|
|
| Build distant | ✅ | ❌ | ❌ | ✅ | ✅ |
|
|
| Langage | Rust | Go | TypeScript | Python | TypeScript |
|
|
| Licence | GPL-3.0 | Zlib (CE) | MIT | Apache-2.0 | Apache-2.0 |
|
|
|
|
**Verdict** : **Komodo brille en multi-serveurs** avec une UX moderne. Pour un homelab mono-machine, [[app-dockge]] ou [[app-arcane]] sont plus simples. Pour du K8s, [[app-portainer]] reste le choix sûr.
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- ⚠️ **Le serveur central Komodo contrôle N agents** = **surface d'attaque multipliée**. Compromettre Komodo = compromis tous les serveurs enregistrés.
|
|
- **Auth obligatoire + 2FA** activée sur le compte admin.
|
|
- **TLS partout** : [[app-traefik]] avec Let's Encrypt pour l'UI ; `komodod` distant accessible uniquement via WireGuard/Tailscale/VPN.
|
|
- **Tokens API scoped** : ne jamais réutiliser la même clé pour tous les serveurs.
|
|
- **Secrets Komodo chiffrés** au repos avec une *passphrase* — la sauvegarder dans un coffre (Bitwarden, KeePass).
|
|
- **RBAC strict** : si plusieurs utilisateurs, limiter les permissions par groupe.
|
|
|
|
## 📚 Ressources
|
|
|
|
- [GitHub moghtech/komodo](https://github.com/moghtech/komodo)
|
|
- [Site officiel](https://komo.do/)
|
|
- [Documentation](https://komo.do/docs)
|
|
- [Démo live](https://demo.komo.do/)
|
|
|
|
## Pages Liées
|
|
- [[cat-docker]] — Catégorie Docker
|
|
- [[app-portainer]] — Référence, plus mature
|
|
- [[app-dockge]] — Alternative mono-serveur
|
|
- [[app-traefik]] — Reverse proxy
|
|
- [[recettes-docker-compose]] — Templates Compose
|
|
- [[securisation-home-lab]] — Durcir l'infra
|