Initial vault setup
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user