Skip to main content

Docker (consigliato)

Linux. --network host è necessario affinché il container possa raggiungere i tuoi BMC direttamente sulla tua rete locale tramite la porta UDP 623 (la porta IPMI/RMCP+). Senza host networking, il container resta dietro il NAT di Docker e non può completare una sessione IPMI con il tuo hardware.
Windows / macOS. Docker Desktop non supporta l’host networking, quindi mappa invece la porta:
Entrambi i comandi montano un volume con nome (ipmideck-data) su /data. Quel volume contiene il tuo config.yaml, il database SQLite e la chiave di cifratura che protegge le credenziali BMC archiviate, così sopravvivono a un riavvio, a un aggiornamento o a un docker rm. Senza -v ottieni un’installazione nuova e vuota ogni volta che il container viene ricreato. Una volta avviato il container, apri http://<your-ip>:3000 e segui la procedura guidata.
L’immagine pubblicata vive su Docker Hub all’indirizzo hub.docker.com/r/devluigi06/ipmideck.

pip

Il pacchetto pip richiede che ipmitool sia installato sull’host, ipmideck si appoggia a ipmitool per ogni operazione IPMI. Installalo prima dal gestore di pacchetti della tua distribuzione (per esempio apt install ipmitool o dnf install ipmitool).
Su Debian 12+ e Ubuntu 23.04+, un semplice pip install si rifiuta di girare e fallisce con error: externally-managed-environment. È previsto, vedi Installare su Debian e Ubuntu qui sotto.

Installare su Debian e Ubuntu (PEP 668)

Su un sistema Debian 12+ o Ubuntu 23.04+ di serie, pip install ipmideck si ferma con:
Questo non è un bug di ipmideck. La distribuzione riserva il Python di sistema al proprio gestore di pacchetti, apt ne dipende, e impedisce a pip di scriverci dentro. Ci sono due modi supportati per installare comunque ipmideck.

pipx (consigliato)

pipx installa un’applicazione Python da riga di comando nel suo ambiente virtuale isolato ed espone il comando risultante a livello globale, senza mai toccare il Python di sistema. È esattamente la forma di ipmideck, quindi questo è il percorso che consigliamo:
pipx colloca l’eseguibile in ~/.local/bin. Debian e Ubuntu aggiungono automaticamente quella directory al tuo PATH una volta che esiste, ma solo per le nuove sessioni di shell, quindi la primissima installazione stampa un avviso e ipmideck non viene ancora trovato nella shell da cui l’hai eseguito:
Apri un nuovo terminale (o riconnettiti via SSH) e il comando funziona. Se la tua shell ancora non lo trova, aggiungi la directory esplicitamente e poi avvia una nuova shell:
Verifica l’installazione con la modalità demo, che non richiede hardware reale:

venv

Un ambiente virtuale aggira PEP 668 allo stesso modo, ed è la scelta giusta se stai lavorando da un checkout dei sorgenti:
Il comando ipmideck è disponibile ogni volta che quell’ambiente è attivato.
Anche pip install --break-system-packages ipmideck funziona, ma scrive direttamente nel Python di sistema e può rompere apt se la versione di una dipendenza va in conflitto. Preferisci pipx o un venv.

Dove ipmideck archivia i dati

ipmideck scrive la sua configurazione e il database in una directory dati:
  • Docker: /data dentro il container (l’immagine imposta IPMIDECK_DATA_DIR=/data; rendilo persistente con un volume).
  • pip su Linux: /data per impostazione predefinita, che un utente non-root normalmente non può scrivere.
  • pip su Windows: ./data, relativo alla directory da cui esegui ipmideck.
Su Linux, eseguire ipmideck come utente normale senza sovrascrivere la directory dati fallisce all’avvio con PermissionError: [Errno 13] Permission denied: '/data'. Punta IPMIDECK_DATA_DIR a una directory di tua proprietà, come mostrato qui sotto.
Punta la directory dati a una posizione scrivibile:
Puoi sovrascrivere la posizione su qualsiasi piattaforma con la variabile d’ambiente IPMIDECK_DATA_DIR. Questa directory contiene config.yaml, il database SQLite e il file della chiave di cifratura usato per proteggere le credenziali BMC archiviate. Vedi Configurazione e Esecuzione di ipmideck per i dettagli.

Esecuzione come servizio (Linux)

ipmideck start in un terminale apre la console interattiva e si ferma quando chiudi la sessione. Per mantenere ipmideck in esecuzione in background e avviarlo al boot, eseguilo invece sotto systemd. Crea un utente dedicato, installa ipmideck per lui con pipx e dagli una directory dati di sua proprietà:
Poi scrivi l’unit:
Abilitalo e avvialo:
Sotto systemd non c’è alcun terminale collegato, quindi ipmideck salta la console interattiva e riversa log in chiaro nel journal (journalctl -u ipmideck -f), esattamente come il container Docker. systemctl stop invia SIGTERM, che attiva lo stesso arresto pulito che restituisce il controllo delle ventole ai tuoi BMC. Vedi Modalità headless / non-TTY.

Prossimi passi