Introduzione
In questa guida, vediamo come installare Docker e Portainer nel modo più semplice possibile, riuscendo ad ottenere anche un discreto livello di sicurezza nel caso si installasse su una VPS con ip pubblico.Il sistema operativo di riferimento sarà Debian 12, ma naturalmente la guida può essere seguita anche su OS non debian-based con i dovuti accorgimenti e modifiche ai comandi comuni.
Tralasciamo volutamente la "spiegazione" di cosa sia docker, per non allungare troppo la guida. Velocemente, ricordiamoci che le componenti fondamentali sono:
- Docker Engine: Ovvero il responsabile dell'esecuzione e gestione dei container Docker sul nostro sistema operativo (host). Di base fornisce un'interfaccia a riga di comando (CLI) per poter gestire, o più in generale "interagire" con i Container.
- Docker Images: Sono i templates che definiscono il contenuto e configurazione di un container. Le immagini contengono tutti gli elementi e i set di istruzioni necessarie per avviare l'applicazione "containerizzata". Più container possono utilizzare la stessa immagine per essere avviati. Le immagini possono essere prelevate da canali ufficiali o create per essere poi condivise sui vari canali.
- Docker Registry: Ovvero un repository pubblico utilizzato per archiviare e condividere le immagini. Docker Hub è il registro predefinito "ufficiale" da cui prelevare le immagini, ma possono essere utilizzati anche registri privati.
- Docker Compose: Si tratta di un tool ufficiale che aiuta nella configurazione e gestione dei propri contenitori. Normalmente il tutto viene gestito tramite i comandi Docker CLI. Compose ci permette invece di utilizzare un singolo file YAML per configurare i container e le eventuali relazioni fra essi.
Installazione
Se state installando Docker su una VPS accessibile pubblicamente, consigliamo intanto una lettura della guida
Guida Verificata - [Server] Come proteggere il tuo server Linux
Introduzione In questa breve guida, vediamo come proteggere in modo semplice un server linux, che sia una VPS, un server dedicato, o anche semplicemente il vostro raspberry connesso alla rete. Data l'enormità delle distribuzioni linux con cui è...

Prima di procedere, come sempre, assicuriamoci che il nostro sistema sia aggiornato
Bash:
Accedi o Registrati per vedere questo contenuto.
Su Debian 12, installiamo intanto i pacchetti richiesti
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Procediamo ora con l'installazione
Bash:
Accedi o Registrati per vedere questo contenuto.
Aggiungiamo ora il nostro utente attivo al gruppo Docker, in modo da poter eseguire i comandi senza il "sudo"
Bash:
Accedi o Registrati per vedere questo contenuto.
Assicuriamoci poi che il servizio Docker sia stato avviato
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
A questo punto, docker è installato e funzionante, possiamo già usarlo per creare i nostri container con i comandi CLI. Ma noi vogliamo gestire il tutto in modo ottimale, magari con qualche aiuto grafico! Quindi procediamo nell'installazione del nostro primo container, ovvero Portainer!
Ogni container, se arrestato, perderà tutte le modifiche fatte e al prossimo avvio ripartirà secondo le istruzioni iniziali (o dell'immagine iniziale). Per ovviare a questo problema, è possibile creare un "volume permanente" sul nostro sistema host che verrà usato dal container, in modo virtualizzato.
Per installare Portainer creiamo prima un volume digitando
Bash:
Accedi o Registrati per vedere questo contenuto.
Adesso creiamo il container per Portainer
Bash:
Accedi o Registrati per vedere questo contenuto.
Questo comando CLI scaricherà l'ultima immagine disponibile di Portainer, i dati locali verranno salvati nel volume creato sopra e esporrà le porte predefinite di portainer, ovvero la 9443 e la 8000. Quest'ultima (8000) è un tunnel server TCP ed è opzionale, necessaria solo se intendiamo usare l'Edge agent.
ATTENZIONE: La porta 9443 verrà esposta pubblicamente, quindi se stiamo installando Portainer su una VPS assicuriamoci di bloccarla con un firewall, ci accederemo poi tramite tunnel ssh (spiegazione di seguito). Se invece non vogliamo rendere la porta accessibile, basta modificare leggermente il comando sopra, sostituendo
-p 9443:9443
con -p 127.0.0.1:9443:9443
, in questo modo possiamo ugualmente accedere alla porta tramite tunnel ssh e la porta sarà disponibile solo in localhost.Ora, navigando su
Accedi o Registrati per vedere questo link.
dovremmo vedere la schermata iniziale di portainer, che ci chiederà di creare un nuovo utente amministratore, ma la vediamo fra poco.Accedere a Portainer installato su una VPS
Nel caso in cui abbiamo installato portainer su una VPS, come indicato sopra, abbiamo bloccato tramite firewall la porta 9443. Ma ora come facciamo ad accedere a questa porta dal nostro pc di casa?Semplicemente sfruttando un tunnel ssh, ovvero accediamo alla nostra macchina in ssh e creiamo un tunnel per esporre la porta 9443 SOLO al nostro computer (finchè la sessione ssh rimane attiva).
Se usiamo un sistema unix, possiamo farlo direttamente tramite il normale comando ssh:
Bash:
Accedi o Registrati per vedere questo contenuto.
Ad esempio, se la nostra macchina ha IP 1.2.3.4:
Bash:
Accedi o Registrati per vedere questo contenuto.
navigando ora su
Accedi o Registrati per vedere questo link.
vedremo la schermata iniziale di PortainerNOTA: Al primo avvio di Portainer, l'interfaccia web risponderà solo per 10 minuti, il tempo necessario per creare l'account amministratore. Quindi se da quando abbiamo avviato il container per Portainer a quando ci accediamo per la prima volta, sono passati 10 minuti, dovremmo riavviare il container per renderlo nuovamente disponibile. Possiamo farlo digitando:
Bash:
Accedi o Registrati per vedere questo contenuto.
Se invece siamo su sistema Windows, possiamo creare un tunnel tramite Putty
Sotto la schermata "Tunnels" dobbiamo indicare la porta sorgente (Source port) e l'indirizzo destinazione (Destination). Assicuriamoci di cliccare il tasto "Add" in modo da avere una schermata simile a questa
Possiamo ora procedere a collegarci normalmente in SSH alla nostra VPS e portainer sarà disponibile all'indirizzo indicato.
Appena creato l'account amministratore, possiamo usare Portainer per gestire tutti i nostri container e crearli (o rimuoverli) in modo decisamente semplificato.
Tramite la voce "Stack" possiamo avviare i comandi Compose, numerosi esempi sono disponibili nelle repository dei programmi noti, ad esempio per nginx (
Accedi o Registrati per vedere questo link.
) possiamo usare sotto la voce "Stack" quanto segue
YAML:
Accedi o Registrati per vedere questo contenuto.
O per Qbittorrent
YAML:
Accedi o Registrati per vedere questo contenuto.
Dove modifichiamo in base alle nostre esigenze i volumi, le porte e quant'altro.
Esempio simile discusso leggermente più nel dettaglio può essere trovato in fondo a questa guida:

Guida Verificata - Creare un mini NAS con OpenMediaVault e Docker
Introduzione In questa guida vediamo brevemente come installare OpenMediaVault per creare il nostro piccolo NAS casalingo, sfruttando possibilmente un single board computer, come un raspberry o un odroid. In più, aggiungeremo docker per la...

Ultima nota: ricordiamoci che i container NON si aggiornano da soli, ma il più delle volte dovremmo scaricare l'immagine aggiornata e avviare nuovamente il container, con la sicurezza che i nostri file locali non verranno modificati grazie ai volumi permanenti. Ad esempio, per aggiornare Portainer, basterà usare i comandi
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Come possiamo intuire, verrà usato lo stesso volume portainer_data dell'installazione precedente, il risultato sarà l'aggiornamento dell'immagine.
Per il momento abbiamo terminato, giunti alla fine di questa breve guida, spero possa esservi d’aiuto