[GUIDA]: qbittorrent a container in Container Station
Inviato: 07 dic 2020, 17:06
I container sono una tecnologia ormai affermatissima che permette la virtualizzazione e il deploy delle applicazioni in maniera rapida e semplice, offrendo prestazioni ottimali rispetto alla classica virtualizzazione delle macchine.
Nei container infatti viene virtualizzata una parte del sistema operativo, esponendo all’applicazione le sole risorse (in termini di file system, CPU e memoria) che sono strettamente necessarie (e impostate in fase di deploy), isolando il container da tutto il resto e risparmiando le risorse che sarebbero invece necessarie per virtualizzare un’intera macchina su cui installare poi il sistema operativo e le applicazioni.
Quando parliamo di container parliamo sicuramente di Docker, standard de facto in questo campo, ma esistono alternative meno affermate come LXC – Linux Container.
Questa vuole essere una guida pratica, basata sullo stesso approccio che ho usato io nell’avvicinarmi a questa tecnologia (ovvero, la necessità di avere qbittorrent - qbt - aggiornato senza attendere ogni volta il pacchetto per QTS e rischiare i problemi che in passato mi ha causato), ma per chi volesse saperne di più online c’è tutta la documentazione per farsi una cultura di qualsiasi livello, magari partendo da qui:
https://www.docker.com/resources/what-container
Un disclaimer è d’obbligo: questa guida nasce dalla mia esperienza personale (sono un appassionato di informatica ma anche un professionista in ambito enterprise), ma ogni sistema è diverso e non conosco i dettagli di ogni singolo modello di QNAP, vi assumete perciò la responsabilità di tutti gli interventi che effettuate sul vostro NAS. Se non siete sicuri di quello che fate, non procedete!
1. Iniziamo!
Partiamo da Container Station (di seguito CS), l’applicazione di QTS presente nell'App Center ufficiale che facilita l’interazione con il motore Docker installato dall’app stessa sul nostro QNAP. All’avvio avremo una vista d’insieme dei nostri attuali container:
Per crearne uno nuovo clicchiamo su Create e nella barra di ricerca scriviamo “qbittorrent”: CS è già configurata per cercare nel registro (repository, repo) online di docker, consultabile anche da browser all’indirizzo:
Il repo contiene la parte più corposa delle applicazioni, ovvero le immagini, un altro concetto fondamentale di Docker. Un’immagine è un file che contiene la fotografia esatta tutto ciò di cui necessita il software per funzionare e può essere preparata dall'azienda propietaria del sw, da uno sviluppatore o un semplice appassionato, e caricata sul repository a disposizione di tutti, accompagnata solitamente da un po’ di documentazione per l’utilizzo.
La ricerca che abbiamo impostato prima restituisce tutte le corrispondenze per quanto digitato, ovvero una selezione di immagini relative a qbittorrent:
2. Impostazione del container
Scegliamo l’immagine “linuxserver/qbittorent” e clicchiamo su “Create”, si apre la prima schermata di configurazione del container, dove impostiamo il nome dello stesso, il limite di utilizzo della CPU (suggerisco un 20%, sarà comunque modificabile in seguito) e la quantità di memoria (1024MB dovrebbero bastare). Ricordate che stiamo parlando di risorse massime, nell’utilizzo normale il consumo effettivo sarà probabilmente minore:
Poi passiamo alle impostazioni avanzate, cliccando su “Advanced settings”. La prima voce riguarda le variabili di ambiente, ovvero parametri necessari al funzionamento dell’applicazione che saranno disponibili all’interno del container. Solitamente le immagini hanno un’impostazione di default per queste voci, consiglio di non modificarle a meno di particolari esigenze ed essendo assolutamente sicuri di cosa si sta facendo:
3. Configurazione di rete
Quello che ci interessa particolarmente è la scheda Network, dove definiamo come il container sarà raggiungibile all’interno della nostra rete locale. Personalmente suggerisco l’impostazione
“Bridge”, che attraverso il Virtual Switch di QTS ci permette di impostare un IP statico in modo da raggiungere il container come se fosse installato su una macchina con un suo indirizzo dedicato e isolato. Docker permette di fare configurazioni molto avanzate di networking, CS ce le semplifica nascondendo le opzioni più complesse ma in ogni caso ora non ci servono, non vogliamo rischiare di pasticciare con il nostro NAS!
4. A tutto volume
Procediamo infine verso la configurazione delle Cartelle Condivise (Shared Folder), che rappresentano i volumi (altro concetto importantissimo in Docker), ovvero i percorsi di file system che il container avrà a disposizione per lavorare. Un’immagine solitamente dichiara quali sono i volumi essenziali di cui ha bisogno e questi devono essere collegati a percorsi fisici già esistenti nel sistema che ospita il container (quindi il nostro NAS) o in alternativa lasciare che CS prepari appositamente dei volumi al momento di creazione del container, ma visibili solo da questo. Questa impostazione richiede perciò un minimo di riflessione, anche in base all’utilizzo che l’applicazione dovrà fare dei volumi. Ad esempio qbittorrent necessita di due volumi:
Per specificare i nostri percorsi dovremo rifiutare l’aiuto che CS vuole darci, ignorando la sezione precompilata “New volume” (altrimenti verrebbero creati dei volumi inaccessibili dall’esterno), e compilando la successiva “Volume from host” aggiungendo (“Add”) due percorsi dal nostro NAS e indicando dove saranno montati (mount point) all’interno del container:
5. 3...2...1...deploy!
Siamo pronti per creare il Container! Clicchiamo su “Create” per visualizzare un ultimo riepilogo delle impostazioni:
Clicchiamo su “OK” per lanciare il processo di creazione. Per qualche secondo potrà sembrare che CS non stia facendo nulla, ma poi apparirà il task in background che prima scaricherà l’immagine dal repository (viene salvata in locale per i successivi utilizzi) e poi procederà al deploy del container.
6. Verifica e prova sul campo
Terminato il deploy avremo il container nell’overview e potremo accedere ai suoi dettagli cliccando sul nome. Qui saranno presenti i controlli per fermarlo o cancellarlo, e la console che mostra il log dell’applicazione, utile per indagare eventuali malfunzionamenti o comportamenti inattesi:
Cliccando sulla voce URL in cima si aprirà l’interfaccia web di qbitttorent che vi chiederà utente e password (admin e adminadmin per default, trattandosi di una nuova installazione), e potremo controllare la versione appena installata:
Possiamo quindi procedere alle impostazioni come di consuetudine, e verificare che queste siano accessibili nel percorso indicato per la config:
Adesso avete un’installazione di qbittorrent funzionante e, soprattutto, isolata dal sistema principale del vostro NAS. Se qualcosa non funziona come dovrebbe o avete sbagliato alcune impostazioni, non preoccupatevi, è sufficiente rimuovere il container e prepararne uno nuovo, il rischio di fare “disastri” è davvero minimo, direi quasi nullo. Inoltre, nessuno vi impedisce di avere più installazioni contemporanee (magari per provare una nuova versione prima di sostituire l’attuale), che punti alla stessa configurazione o ad una dedicata.
Se avete dubbi o domande fatele pure qui di seguito, cercherò di aiutarvi come posso, e ovviamente accolgo volentieri qualsiasi osservazione o suggerimento per migliorare la guida.
A presto!
Nei container infatti viene virtualizzata una parte del sistema operativo, esponendo all’applicazione le sole risorse (in termini di file system, CPU e memoria) che sono strettamente necessarie (e impostate in fase di deploy), isolando il container da tutto il resto e risparmiando le risorse che sarebbero invece necessarie per virtualizzare un’intera macchina su cui installare poi il sistema operativo e le applicazioni.
Quando parliamo di container parliamo sicuramente di Docker, standard de facto in questo campo, ma esistono alternative meno affermate come LXC – Linux Container.
Questa vuole essere una guida pratica, basata sullo stesso approccio che ho usato io nell’avvicinarmi a questa tecnologia (ovvero, la necessità di avere qbittorrent - qbt - aggiornato senza attendere ogni volta il pacchetto per QTS e rischiare i problemi che in passato mi ha causato), ma per chi volesse saperne di più online c’è tutta la documentazione per farsi una cultura di qualsiasi livello, magari partendo da qui:
https://www.docker.com/resources/what-container
Un disclaimer è d’obbligo: questa guida nasce dalla mia esperienza personale (sono un appassionato di informatica ma anche un professionista in ambito enterprise), ma ogni sistema è diverso e non conosco i dettagli di ogni singolo modello di QNAP, vi assumete perciò la responsabilità di tutti gli interventi che effettuate sul vostro NAS. Se non siete sicuri di quello che fate, non procedete!
1. Iniziamo!
Partiamo da Container Station (di seguito CS), l’applicazione di QTS presente nell'App Center ufficiale che facilita l’interazione con il motore Docker installato dall’app stessa sul nostro QNAP. All’avvio avremo una vista d’insieme dei nostri attuali container:
Per crearne uno nuovo clicchiamo su Create e nella barra di ricerca scriviamo “qbittorrent”: CS è già configurata per cercare nel registro (repository, repo) online di docker, consultabile anche da browser all’indirizzo:
Il repo contiene la parte più corposa delle applicazioni, ovvero le immagini, un altro concetto fondamentale di Docker. Un’immagine è un file che contiene la fotografia esatta tutto ciò di cui necessita il software per funzionare e può essere preparata dall'azienda propietaria del sw, da uno sviluppatore o un semplice appassionato, e caricata sul repository a disposizione di tutti, accompagnata solitamente da un po’ di documentazione per l’utilizzo.
La ricerca che abbiamo impostato prima restituisce tutte le corrispondenze per quanto digitato, ovvero una selezione di immagini relative a qbittorrent:
2. Impostazione del container
Scegliamo l’immagine “linuxserver/qbittorent” e clicchiamo su “Create”, si apre la prima schermata di configurazione del container, dove impostiamo il nome dello stesso, il limite di utilizzo della CPU (suggerisco un 20%, sarà comunque modificabile in seguito) e la quantità di memoria (1024MB dovrebbero bastare). Ricordate che stiamo parlando di risorse massime, nell’utilizzo normale il consumo effettivo sarà probabilmente minore:
Poi passiamo alle impostazioni avanzate, cliccando su “Advanced settings”. La prima voce riguarda le variabili di ambiente, ovvero parametri necessari al funzionamento dell’applicazione che saranno disponibili all’interno del container. Solitamente le immagini hanno un’impostazione di default per queste voci, consiglio di non modificarle a meno di particolari esigenze ed essendo assolutamente sicuri di cosa si sta facendo:
3. Configurazione di rete
Quello che ci interessa particolarmente è la scheda Network, dove definiamo come il container sarà raggiungibile all’interno della nostra rete locale. Personalmente suggerisco l’impostazione
“Bridge”, che attraverso il Virtual Switch di QTS ci permette di impostare un IP statico in modo da raggiungere il container come se fosse installato su una macchina con un suo indirizzo dedicato e isolato. Docker permette di fare configurazioni molto avanzate di networking, CS ce le semplifica nascondendo le opzioni più complesse ma in ogni caso ora non ci servono, non vogliamo rischiare di pasticciare con il nostro NAS!
4. A tutto volume
Procediamo infine verso la configurazione delle Cartelle Condivise (Shared Folder), che rappresentano i volumi (altro concetto importantissimo in Docker), ovvero i percorsi di file system che il container avrà a disposizione per lavorare. Un’immagine solitamente dichiara quali sono i volumi essenziali di cui ha bisogno e questi devono essere collegati a percorsi fisici già esistenti nel sistema che ospita il container (quindi il nostro NAS) o in alternativa lasciare che CS prepari appositamente dei volumi al momento di creazione del container, ma visibili solo da questo. Questa impostazione richiede perciò un minimo di riflessione, anche in base all’utilizzo che l’applicazione dovrà fare dei volumi. Ad esempio qbittorrent necessita di due volumi:
- /downloads: dove salvare ciò che scarichiamo
- /config: dove salvare i file di configurazione
Per specificare i nostri percorsi dovremo rifiutare l’aiuto che CS vuole darci, ignorando la sezione precompilata “New volume” (altrimenti verrebbero creati dei volumi inaccessibili dall’esterno), e compilando la successiva “Volume from host” aggiungendo (“Add”) due percorsi dal nostro NAS e indicando dove saranno montati (mount point) all’interno del container:
5. 3...2...1...deploy!
Siamo pronti per creare il Container! Clicchiamo su “Create” per visualizzare un ultimo riepilogo delle impostazioni:
Clicchiamo su “OK” per lanciare il processo di creazione. Per qualche secondo potrà sembrare che CS non stia facendo nulla, ma poi apparirà il task in background che prima scaricherà l’immagine dal repository (viene salvata in locale per i successivi utilizzi) e poi procederà al deploy del container.
6. Verifica e prova sul campo
Terminato il deploy avremo il container nell’overview e potremo accedere ai suoi dettagli cliccando sul nome. Qui saranno presenti i controlli per fermarlo o cancellarlo, e la console che mostra il log dell’applicazione, utile per indagare eventuali malfunzionamenti o comportamenti inattesi:
Cliccando sulla voce URL in cima si aprirà l’interfaccia web di qbitttorent che vi chiederà utente e password (admin e adminadmin per default, trattandosi di una nuova installazione), e potremo controllare la versione appena installata:
Possiamo quindi procedere alle impostazioni come di consuetudine, e verificare che queste siano accessibili nel percorso indicato per la config:
Adesso avete un’installazione di qbittorrent funzionante e, soprattutto, isolata dal sistema principale del vostro NAS. Se qualcosa non funziona come dovrebbe o avete sbagliato alcune impostazioni, non preoccupatevi, è sufficiente rimuovere il container e prepararne uno nuovo, il rischio di fare “disastri” è davvero minimo, direi quasi nullo. Inoltre, nessuno vi impedisce di avere più installazioni contemporanee (magari per provare una nuova versione prima di sostituire l’attuale), che punti alla stessa configurazione o ad una dedicata.
Se avete dubbi o domande fatele pure qui di seguito, cercherò di aiutarvi come posso, e ovviamente accolgo volentieri qualsiasi osservazione o suggerimento per migliorare la guida.
A presto!