Installare Portainer su NAS Synology
1.
Configurazione tipo (HW/SW)
Nel mio caso mi trovo nella seguente situazione (cioè, se avete la mia stessa configurazione e seguite la guida, vi garantisco che funziona):
- Synology DS-1522+
- DSM 7.2.1 Update3
- Portainer CE 2.19.4
2.
Prerequisiti
Come detto dovete naturalmente avere:
- NAS Synology che supporti Docker (cioè su cui si possa installare il pacchetto Container Manager). Per vedere se il vostro NAS è compatibile potete guardare qui: https://www.synology.com/en-global/dsm/packages/ContainerManager
- DSM 7.x
3.
Breve introduzione/spiegazione
Spiego molto brevemente e a grandi linee cos’è Portainer e perché
è utile averlo, invece di usare il Container Manager stock.
Innanzitutto i Container sono un modo attuale per la
gestione stand-alone e isolata delle applicazioni. Non sono altro che delle
Virtual Machine (generalmente con una distribuzione molto leggera di Linux), in
cui lo sviluppatore installa tutto il necessario per il funzionamento della sua
applicazione, e che poi viene distribuita come un pacchetto “pronto all’uso”
(si chiama Immagine) che gira in una sandbox.
Sul nostro server, un software orchestrator (Docker, nel nostro caso) si occupa
di eseguire e gestire i vari Container.
Da una Immagine possono essere creati infiniti Container, cioè la stessa versione
specifica della Virtual Machine può avere n copie (Container) che girano
sul nostro sistema (ogni Container ha la sua configurazione).
Chiaramente ogni Container necessita di configurazioni specifiche o di mappare
delle directory fisiche su cui salvare i dati (che altrimenti andrebbero persi
ogni volta che si applica una nuova versione dell’Immagine). Perciò ogni volta
che si crea un nuovo Container, è necessario inserire queste configurazioni.
Portainer è un software (che già a sua volta in un
Container) che permette di gestire facilmente i vari container, controllando
anche più orchestrator (o “Nodi”; nella versione CE - Community Edition, che è
gratuita, sono gestibili fino a 3 Nodi), ma soprattutto permettendo di
controllare facilmente il “versioning”.
Il Container Manager di Synology include già la sua implementazione di Docker Compose,
ma “Stack” (l’implementazione di Portainer) secondo me è decisamente superiore.
Chiramente non è l’unico aspetto che fa preferire (a me e a molti altri)
Portainer rispetto al manager base.
Visto che provare non vi costa nulla (se non un po’ di
tempo), vi consiglio di fare un tentativo per vedere come vi trovate.
4.
Installazione del Container Manager
Come prima cosa è necessario installare il pacchetto “Container
Manager” sul nostro NAS.
Se lo avete già installato, potete passare al punto successivo.
Aprire la pagina web di gestione del vostro NAS, quindi
lanciare l’applicativo “Package Center” che si trova sul Desktop.
Se non lo avete sul Desktop, aprire il menu in alto a sinistra e lo troverete come prima voce.
Si aprirà la pagina con tutti i pacchetti ufficiali installati
e installabili.
Nella barra di ricerca scrivere “container” e premere invio per
effettuare la ricerca
Cliccare su “Container Manager” per aprire la pagina di
dettaglio del pacchetto
Cliccare sul tasto “Install”
Attendere che termini la procedura di installazione. Al
termine lo stato del pacchetto sarà “Running”
5.
Creare la directory persistente dei file
E’ necessario creare una cartella sul NAS che permetta la
persistenza dei file (che altrimenti andrebbero persi ad ogni aggiornamento del
Container), in modo che sia anche possibile effettuare (e ripristinare, all’occorrenza)
i backup periodici.
Aprire quindi “File Station” (dal Desktop o dal menu in alto
a sinistra)
Cliccare sul tasto “Create” e quindi scegliere “Create
shared folder”
Nella finestra che si apre, inserire “docker” (tutto minuscolo!) come nome, e cliccare su “Next”
Proseguire cliccando su “Next”
Di nuovo cliccare su “Next”
Al riepilogo, proseguire cliccando ancora su “Next”
Senza modificare le impostazioni dei permessi (non serve),
confermare cliccando su “Apply”
Tornare su “File Station” e selezionare la cartella “docker”
appena creata
Cliccare quindi sul bottone “Create” e scegliere la voce “Create
folder”
Chiamare la nuova cartella “portainer” (tutto minuscolo, è
importante!) e cliccare su “OK”
6.
Preparare lo script
Ora che la directory per il salvataggio dei dati è pronta e
il Container Manager installato, possiamo preparare lo script per l’installazione
di Portainer.
Lo script serve perché Portainer deve essere installato con
privilegi alti (per poter gestire i container, deve poter girare come root),
per cui anche lo script di installazione deve essere eseguito con l’utente
root.
Per fare ciò ci sono 2 possibilità:
- Collegarsi in SSH e lanciare i comandi da console
- Creare un Task che giri con i permessi di root ed esegua lo script
Visto che il secondo modo è di gran lunga il più semplice,
vi spiegherò quello.
Prima di tutto occorre aprire il “Control Panel” dal Desktop
o dal menu in alto a sinistra
Aprire “Task Scheduler”
In questo tool troviamo tutto ciò che è schedulato sul NAS,
compresi i backup di “Hyper Backup” il check SMART dei dischi.
Andiamo quindi a creare un nuovo task schedulato (che eseguiremo solo a
comando) per la nostra installazione.
Cliccare su
“Create” à “Scheduled
Task” à “User-defined
script”
Nella finestra che si apre, inserire “Install Portainer” (o
il nome che preferite) come nome del Task.
Selezionare “root” come utente.
Togliere la spunta al flag “Enabled”
Passare al
tab “Schedule” e selezionare l’opzione “Run on the following date”
Passare al tab “Task Settings” e inserire quanto segue:
- Mettere la spunta a “Send run details by email” (per essere avvisati via mail quando il task termina e sapere se è riuscito oppure è andato in errore)
- In “Email” inserire il vostro indirizzo email
- In “User-defined script” inserire il seguente codice:
docker run -d --name=portainer \
-p 8000:8000 \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
--restart=always \
portainer/portainer-ce
Dove “/volume1/docker/portainer” è il percorso della cartella creata nel passaggio precedente (se l'avete creata secondo la procedura non dovete modificare nulla, altrimenti aggiustate questo percorso in base alla vostra configurazione).
Cliccare su “OK” per salvare il Task.
Comparirà a questo punto un messaggio di alert. Confermare
cliccando su “OK”
Inserire la password amministrativa e cliccare su “Submit”
Attendere qualche istante e il nostro script sarà pronto
7.
Eseguire lo Script
Selezionare lo script appena creato
Cliccare sul bottone “Run”
E ora non rimane che attendere l’esecuzione dello script.
Potrebbe volerci qualche minuto per il download dell’immagine, ma vi arriverà
la mail appena terminato tutto.
Se tutto è andato a buon fine, potete verificare che il container di Portainer sia attivo e funzionante, aprendo il tool “Container Manager” e selezionando la sezione “Container”
8.
Collegarsi a Portainer
Per collegarsi alla pagina web di Portainer è sufficiente aprire
il browser e digitare l’indirizzo
http://192.168.x.x:9000
dove “192.168.x.x” è l’IP del vostro NAS.
Si aprirà una pagina che richiede la configurazione dell’utente
amministrativo. Inserire il nome utente che preferite e una password a vostra
scelta, quindi cliccare su “Create user”
Comparirà una schermata con un Wizard che permette la scelta
dell’ambiente a cui collegarsi. Nel nostro caso vogliamo gestire l’installazione
docker su cui è installato anche Portainer, quindi scegliamo l’opzione “Get
Started”
FINE!
L’installazione è completata, ora è possibile gestire l’istanza
docker del NAS Synology direttamente da Portainer, selezionando l’ambiente
appena creato
9.
Conclusioni
Gestire i Container e le Immagini docker da Portainer è
molto più comodo e immediato. Giocandoci un po’ ve ne accorgerete subito.
Una funzionalità che mi sento di consigliarvi caldamente è
di usare gli Stack (l’implementazione Portainer di docker-compose) per tutto. E’
decisamente meglio rispetto alla funzionalità Project del Container Manager di
Synology, e permette la creazione di nuovi Stack usando il Web Editor
integrato, caricando un file YML, puntando a un file docker-compose presente in
un repository su Git oppure usando un template personalizzato realizzato da
voi.
Trovate più info se guardate la documentazione di Portainer.
Un altro accorgimento che mi sento di consigliarvi caldamente
è di puntare sempre ad una versioen specifica dell’immagine, quando create un
container (ad esempio “cloudflare/cloudflared:2024.1.4” e non “cloudflare/cloudflared:latest”),
perché ciò vi permette di aggiornare ogni container solo quando volete, e di
poter tenere senza problemi 2 versioni (ad esempio se avete un container di “produzione”
e uno di “test”) diverse senza il rischio di aggiornare involontariamente anche
altri container. Ci sono strumenti per ricevere notifiche in caso di
pubblicazione di nuove versioni delle immagini (ad esempio “What’s up docker?”,
su cui pubblicherò un post nei prossimi giorni).
Analizzerò più nel dettaglio questi aspetti nei prossimi
post, dove mostrerò la procedura di installazione e configurazione di alcuni
container utili.
Commenti
Posta un commento