
Gestire più server, tenere sotto controllo i container Docker, automatizzare i deployment e monitorare le risorse di sistema da un’unica interfaccia: è esattamente quello che promette Komodo, un progetto open-source che negli ultimi mesi sta guadagnando sempre più attenzione nella community homelab e non solo.
Se hai già utilizzato Portainer, l’idea di base ti sarà familiare ma Komodo spinge il concetto un passo più avanti.
Oltre alla gestione dei container, integra un sistema di build, procedure automatizzate, alerting e un agente leggero chiamato Periphery che permette di collegare e supervisionare server remoti senza la complessità di soluzioni enterprise.
Il tutto completamente gratuito e con il codice sorgente disponibile su GitHub.
In questa guida vedremo come installare e configurare Komodo su Ubuntu Server 26.04, utilizzando Docker Compose e MongoDB come backend.
Seguiremo ogni passaggio dalla preparazione dell’ambiente fino al primo accesso all’interfaccia web, con qualche consiglio utile per adattare la configurazione al proprio setup.
Che tu stia cercando un pannello di controllo per il tuo homelab o uno strumento più strutturato per gestire ambienti multi-server, Komodo potrebbe essere esattamente quello che fa per te.
PREREQUISITI
- Ubuntu Server 26.04 aggiornato
- Accesso root o utente con sudo
- Docker Engine installato (vedi sotto)
- Porte 9120 disponibile nel firewall
INSTALLAZIONE DI DOCKER ENGINE
Aggiornare i pacchetti con il comando:
|
0 |
sudo apt update && sudo apt upgrade -y
|
Installare le dipendenze con il comando:
|
0 |
sudo apt install -y ca-certificates curl gnupg
|
Aggiungere la chiave GPG ufficiale di Docker con il comando:
|
0
1
2
3
|
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
Aggiungere il repository Docker con il comando:
|
0
1
2
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
Installare Docker con il comando:
|
0
1
2
|
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
Verificare che Docker funzioni con il comando:
|
0 |
sudo docker run --rm hello-world
|
Se è tutto ok dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
4f55086f7dd0: Pull complete
d5e71e642bf5: Download complete
Digest: sha256:f9078146db2e05e794366b1bfe584a14ea6317f44027d10ef7dad65279026885
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
|
Aggiungere il proprio utente al gruppo docker per evitare di usare sudo ogni volta con il comando:
|
0 |
sudo usermod -aG docker $USER && newgrp docker
|
CREAZIONE DELLA STRUTTURA DI CARTELLE
|
0
1
2
|
mkdir -p ~/komodo
cd ~/komodo
|
DOWNLOAD DEL FILE DI CONFIGURAZIONE
Komodo fornisce un file compose.yaml e un file di variabili d’ambiente pronti all’uso. Scaricarli nella cartella appena creata:
File Docker Compose (con MongoDB — opzione consigliata):
|
0
1
|
wget -O mongo.compose.yaml \
https://raw.githubusercontent.com/moghtech/komodo/main/compose/mongo.compose.yaml
|
File delle variabili d’ambiente:
|
0
1
|
wget -O compose.env \
https://raw.githubusercontent.com/moghtech/komodo/main/compose/compose.env
|
⚠️ ATTENZIONE: Se il tuo server ha hardware datato o un kernel vecchio che non supporta MongoDB recente, usa invece ferretdb.compose.yaml:
|
0
1
|
wget -O ferretdb.compose.yaml \
https://raw.githubusercontent.com/moghtech/komodo/main/compose/ferretdb.compose.yaml
|
CONFIGURAZIONE DELLE VARIABILI DI AMBIENTE
Aprire compose.env con un editor:
|
0 |
nano compose.env
|
Le variabili essenziali da modificare sono:
Tag versione immagine (2 = ultima major release)
|
0 |
COMPOSE_KOMODO_IMAGE_TAG="2"
|
Percorso backup del database
|
0 |
COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups
|
Credenziali MongoDB — Modificarle!!!
|
0
1
|
KOMODO_DATABASE_USERNAME=admin
KOMODO_DATABASE_PASSWORD=una_password_sicura
|
Fuso orario
|
0 |
TZ=Europe/Rome
|
URL pubblico di Komodo (usare IP o dominio reale)
|
0 |
KOMODO_HOST=http://192.168.1.100:9120
|
Titolo visualizzato nel browser
|
0 |
KOMODO_TITLE=Komodo
|
Credenziali admin iniziale — Modificarle!!!
|
0
1
|
KOMODO_INIT_ADMIN_USERNAME=admin
KOMODO_INIT_ADMIN_PASSWORD=una_password_sicura
|
Segreti JWT e webhook — Modificarli con stringhe casuali!!!
|
0
1
|
KOMODO_WEBHOOK_SECRET=segreto_webhook_casuale (fsj09fuy039rjiodcj0923urhjdi)
KOMODO_JWT_SECRET=segreto_jwt_casuale (08dsfjksaOi32ein23o9ruu23)
|
Nome del primo server (di solito l’hostname va bene)
|
0 |
KOMODO_FIRST_SERVER_NAME=server-locale
|
Salvare e chiudere il file di configurazione
CREAZIONE DELLA CARTELLA DI BACKUP
Creare la cartella con il comando:
|
0 |
sudo mkdir -p /etc/komodo/backups
|
AVVIO DI KOMODO CON DOCKER COMPOSE
|
0
1
2
3
|
docker compose -p komodo \
-f ~/komodo/mongo.compose.yaml \
--env-file ~/komodo/compose.env \
up -d
|
Verificare che tutti e tre i container siano in esecuzione:
|
0 |
docker compose -p komodo ps
|
L’output atteso mostra mongo, core e periphery tutti in stato running come mostrato sotto:
|
0
1
2
3
|
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
komodo-core-1 ghcr.io/moghtech/komodo-core:2 "entrypoint.sh core" core 13 seconds ago Up 12 seconds 0.0.0.0:9120->9120/tcp, [::]:9120->9120/tcp
komodo-mongo-1 mongo "docker-entrypoint.s…" mongo 19 seconds ago Up 12 seconds 27017/tcp
komodo-periphery-1 ghcr.io/moghtech/komodo-periphery:2 "entrypoint.sh perip…" periphery 13 seconds ago Up 12 seconds 8120/tcp
|
APERTURE FIREWALL
Di seguito i comandi:
|
0
1
2
|
sudo ufw allow 9120/tcp
sudo ufw reload
|
PRIMO ACCESSO DALL’INTERFACCIA WEB
Aprire il browser e navigare su:
http://<IP-del-server>:9120
⚠️ IMPORTANTE: al primo avvio fare clic su Sign Up, non su Log In.
Inserire le credenziali impostate in compose.env (KOMODO_INIT_ADMIN_USERNAME / KOMODO_INIT_ADMIN_PASSWORD). Questo crea l’account amministratore iniziale.
Se è andato tutto a buon fine dovremmo accedere alla Dashboard di Komodo
VERIFICA DEL SERVER LOCALE
Dopo il login andare su Servers nel menu di sinistra. Il server locale (chiamato come impostato in KOMODO_FIRST_SERVER_NAME) dovrebbe già risultare connesso tramite il container Periphery avviato in automatico.
COMANDI UTILI
Vedere i log in tempo reale con il comando:
|
0 |
docker compose -p komodo -f ~/komodo/mongo.compose.yaml logs -f
|
Fermare Komodo con il comando:
|
0 |
docker compose -p komodo -f ~/komodo/mongo.compose.yaml down
|
Aggiornare Komodo all’ultima versione con i seguenti comandi:
|
0
1
2
|
docker compose -p komodo -f ~/komodo/mongo.compose.yaml pull
docker compose -p komodo -f ~/komodo/mongo.compose.yaml up -d
|
Per gestire server aggiuntivi con Komodo, bisogna installare il Periphery agent su ciascuno di essi. La guida ufficiale è disponibile su Connect More Servers | Komodo
PRO E CONTRO
PRO
Open source e gratuito: nessun piano a pagamento per le funzionalità core, a differenza di Portainer che nasconde molte feature dietro licenza Business.
Multi-server nativo: l’agente Periphery permette di collegare e monitorare server remoti in modo semplice, senza configurazioni complesse.
Tutto in uno: gestione container, build di immagini, deployment automatizzati, procedure schedulate e alerting sono integrati nella stessa piattaforma.
Interfaccia moderna e reattiva: la UI è pulita, veloce e decisamente più curata rispetto ad alcune alternative.
Integrazione Git: supporto nativo per repository Git, utile per workflow GitOps e sincronizzazione di stack Docker Compose.
Webhook e automazione: supporta trigger via webhook per pipeline CI/CD leggere senza dipendere da strumenti esterni.
Comunità attiva: sviluppo frequente, issue tracker reattivo e buona documentazione ufficiale.
CONTRO
Nessun supporto Kubernetes: è pensato esclusivamente per ambienti Docker; chi gestisce cluster K8s deve guardare altrove (Rancher, ArgoCD, ecc.).
Richiede MongoDB o FerretDB: aggiunge un componente in più da mantenere rispetto a soluzioni che usano SQLite o un semplice file.
Curva di apprendimento iniziale: il modello Core + Periphery può disorientare chi si aspetta uno strumento plug-and-play come Portainer.
Ecosistema ancora giovane: rispetto a soluzioni più mature mancano alcune integrazioni e plugin di terze parti.
Nessuna gestione IAM avanzata: il controllo degli accessi è presente ma basilare; non è adatto ad ambienti enterprise con esigenze complesse di ruoli e permessi.
Terminali remoti dipendenti dalla rete: la funzionalità di shell remota via browser può essere instabile su connessioni lente o con latenza elevata.
In sintesi Komodo è una scelta eccellente per homelab e piccoli ambienti multi-server basati su Docker, ma non è ancora pronto per sostituire strumenti enterprise o per chi lavora con Kubernetes

0 commenti