6 container/package Docker che installo su ogni server prima di qualsiasi altra cosa
La prima volta che ho configurato Docker, ho installato prima Portainer, e la sua interfaccia web elegante mi ha fatto pensare di avere un server pronto per la produzione. Tuttavia, il frenetico Googling per sistemare i container rotti che ne è seguito mi ha riportato alla realtà. Avevo costruito il tetto senza una fondazione.
Fortunatamente, i miei anni di gestione dei server mi hanno aiutato a perfezionare il mio approccio. Ora, sei container vengono installati su nuove installazioni prima di qualsiasi altra cosa. Coprono aggiornamenti automatici, reverse proxy, monitoraggio, logging, gestione delle password e interfaccia grafica. Sono le mie principali raccomandazioni per chiunque inizi con Docker. Installarli in questo ordine ti aiuta a evitare problemi con certificati SSL, database corrotti o file di log ciechi.
Torrione di guardia
La prima cosa che automatizzo è la manutenzione
Man mano che i container crescono, diventano più difficili da gestire, ed è facile non accorgersi quando sono indietro con le patch di sicurezza. Questo è uno dei maggiori pericoli per la tua configurazione. Watchtower è la soluzione permanente.
Watchtower automatizza processi che altrimenti eseguiresti manualmente, inclusi il monitoraggio dei container in esecuzione, il controllo degli aggiornamenti delle immagini e il riavvio utilizzando la configurazione esatta dopo che una versione più recente diventa disponibile. È importante configurare Watchtower prima degli altri container, in modo che il suo monitoraggio copra tutti i container successivamente distribuiti. Questo strumento elimina un onere di manutenzione continuo.
Quando lo uso, aggiungo questa etichetta nel file compose di un contenitore per garantire che i database non vengano toccati.
labels:
- "com.centurylinklabs.watchtower.enable=false"Questa etichetta fa sì che Watchtower salti il riavvio dei database. Un riavvio del database, soprattutto durante una scrittura, può portare a corruzione del database e perdita permanente dei dati.
Caddy
Risolvere HTTPS prima di averne bisogno
I certificati sono vitali se mai avrai bisogno di accedere a servizi da fuori casa. Tuttavia, configurare manualmente i certificati è stressante, richiedendo timer di rinnovo oltre alla configurazione DNS e del server necessaria per puntare un dominio.
Caddy è una soluzione molto semplice per automatizzare l'intero processo dei certificati. Gestisce automaticamente l'HTTPS senza Certbot, cron job o rinnovi manuali. Ha anche una sintassi di configurazione semplice che non richiede di cercare nulla. Una voce funzionante per un nuovo servizio di solito non supera le due righe.
Ci sono proxy inversi più robusti di Caddy, ma queste opzioni di solito richiedono più tempo di configurazione. Puoi persino usare il plugin caddy-docker-proxy per includere la funzionalità di routing basata su etichette senza aumentare la complessità.
Per alcuni casi d'uso, preferisco Traefik a Caddy, ma la realtà è che è eccessivo per la maggior parte dei setup domestici o server personali.
Questo contenitore arriva al secondo posto semplicemente perché garantisce che, da quel momento in poi, si ottenga un accesso pulito e sicuro a tutti gli altri contenitori aggiunti alla tua configurazione.
Netdata
Stabilire che aspetto ha il "normale"
Quando ho iniziato a gestire un homelab, ho aspettato un problema prima di installare strumenti di monitoraggio. Col senno di poi, so che è quasi impossibile riconoscere cosa è andato storto se non sai come appare il tuo setup in buone condizioni.
Ecco perché Netdata è il terzo contenitore che ho configurato. Mi offre una visibilità anticipata della mia configurazione, mostrando l'utilizzo della CPU e della memoria, l'attività del disco, la velocità della rete e le metriche per contenitore. La parte migliore è che non devo passare ore sui file di configurazione prima di usare lo strumento.
Netdata ti fornisce un punto di riferimento. Per esempio, poiché sapevo qual era l'utilizzo normale della memoria, quando ho aggiunto un nuovo servizio al mio sistema e ho visto un picco nella memoria, ho immediatamente capito che c'era un problema, cosa lo aveva causato e quale fosse l'overhead aggiuntivo.
Dozzle
Lo strumento complementare che spiega i sintomi
Con Netdata, posso vedere quando qualcosa non va; per capire il perché, uso Dozzle, quindi lo installo dopo Netdata.
Senza Dozzle, ho eseguito il comando docker logs per individuare un problema, ma ha restituito solo un muro confuso di output del terminale. Ho anche ottenuto uno schermo caotico quando ho trasmesso in streaming i log di più contenitori contemporaneamente.
Dozzle ha sostituito questo caos con un'interfaccia semplice basata sul browser per la visualizzazione dei log. Invece di eseguire ripetutamente un comando per visualizzare i log, ora cerco e filtro per contenitore e osservo in tempo reale le nuove voci di log.
Ho incontrato dei container bloccati in modalità di riavvio. Con Netdata, posso vedere il container scomparire e riavviarsi. Dozzle porta chiarezza mostrando il motivo per cui ciò accade.
Vaultwarden
Configurare la cassaforte prima che le credenziali esistano
Fino a questo punto, il tuo server sembra gestibile, ma non resterà così a lungo. Effettuerai l'accesso ad applicazioni, strumenti web e servizi. Da una password di database a una password amministrativa, la lista inizia a crescere, e in poco tempo avrai 20 password, chiavi API, token di servizio e credenziali da gestire. È caotico quando sono sparsi tra app per appunti, un gestore di password del browser e file di testo.
Ecco perché Vaultwarden viene installato su ogni server; è un'implementazione leggera di Bitwarden. Porta tutte le mie credenziali in un unico posto. Quando ospito un nuovo servizio, ora apro prima Vaultwarden, genero e salvo le credenziali, quindi completo il deployment.
Vaultwarden deve essere tra i primi contenitori da configurare perché è più facile organizzare cinque password che ricostruire cinquanta.
Portainer CE
La GUI viene per ultima adesso
In passato, ho iniziato configurando Portainer. Avere un'interfaccia grafica è intuitivo, soprattutto se non ti senti a tuo agio con la riga di comando. Tuttavia, è uno strato di gestione e non l'infrastruttura stessa.
Anche se offre un'interfaccia utente pulita per distribuire stack Compose e permette di ispezionare i volumi e gestire i container, non fornisce i servizi di base — aggiornamenti, HTTPS, monitoraggio, registrazione e archiviazione delle credenziali — che garantiscono l'affidabilità del server.
Introducendolo ora, Watchtower lo aggiorna; Caddy garantisce che io possa accedervi in sicurezza; ne traccio l'uso delle risorse con Netdata; catturo i suoi log con Dozzle; e conservo le sue credenziali in Vaultwarden. Questi sono servizi essenziali che Portainer non fornisce ma da cui dipende. Una volta compreso che era solo la ciliegina sulla torta, è diventato uno strato di comodità piuttosto che una necessità.
La base, nel modo giusto
Un server può facilmente diventare un'impresa molto complessa. Il tuo obiettivo dovrebbe essere quello di mantenerlo il più semplice possibile per il maggior tempo possibile. Sebbene altri strumenti possano svolgere questi ruoli, questo insieme mantiene la configurazione semplice e facile da gestire. Sono la base; ogni altro servizio si appoggia su di essi.












