Self-hosting con docker-compose
Allora, partiamo dalle basi: come c'è scritto direttamente nella testata del blog, io sono pigro. Ma non pigro poco, pigro tanto. Quindi tutto questo è la soluzione meno sbatta e più plug and play che sono riuscito a costruirmi per hostarmi roba generica. Se volete meno libertà di riconfigurazione o meno servizi c'è quasi certamente di meglio.
Requisiti
Vi serve un server su cui giri docker e che sia raggiungibile da dove volete raggiungerlo. Io uso quattro macchine:
- Una casalinga, per la roba che voglio raggiungere solo da dentro casa;
- Un VPS (io uso IONOS perché è italiano e costa veramente poco) un po' cicciotto per le cose meno importanti ma che voglio raggiungere anche fuori casa (tipo il server degli audiolibri – voglio i miei audiolibri e non mi impedirete di ascoltarli ovunque);
- Un VPSsino scrauso da 1€/mese per la VPN;
- Un server un po' meno domestico, a casa dei miei, con su i loro servizi;
I due server domestici si parlano via VPN per tenere dei backup incrociati della roba importante, ma alla fine della fiera si può arrangiarsi anche con meno (la cosa importante è che i servizi accessibili all'esterno stiano fuori dalla VPN).
Tutte le macchine montano Ubuntu Server LTS senza snapd
, che ho rimosso a mano perché faceva casino sui dischi. Quindi docker
e docker-compose
vanno installati alla vecchia maniera.
Le immagini
Ho deciso di pescare tutto da linuxserver.io per quattro motivi:
- Tutte le immagini hanno una base comune, il che riduce occupazione e download;
- Tutte le immagini hanno gli stessi manutentori, con le stesse logiche di fix e rilascio;
- Molte delle configurazioni sono comuni o almeno simili, il che riduce di molto lo sbattimento;
- La loro raccolta è grossa e variegata, quindi difficilmente avrò bisogno di staccarmi da loro;
Si tratta, in un certo senso, di vendor lock in, ma, come dicevo sopra, il mio obiettivo è quello di avere un sistema “plug and play”, che mi permetta di aggiungere o togliere servizi con uno sbattimento minimale.
Configurazione
Come dicevo sopra, le immagini di linuxserver hanno diversi campi in comune nella configurazione, quindi possiamo usare le estensioni per semplificare il nostro file:
version: '3.7'
x-linuxserver-conf: &linuxserver-conf
PUID: 1000
GUID: 1000
TZ: Europe/Rome
services:
grocy:
image: ghcr.io/linuxserver/grocy
container_name: grocy
restart: unless-stopped
environment:
<<: *linuxserver-conf
expose:
- 9283
volumes:
- "/root/library/grocy:/config"
booksonic:
image: ghcr.io/linuxserver/booksonic
container_name: booksonic
restart: unless-stopped
environment:
<<: *linuxserver-conf
expose:
- 4040
volumes:
- "/root/library/booksonic/config:/config"
- "/root/library/booksonic/audiobooks:/audiobooks"
- "/root/library/booksonic/podcasts:/podcasts"
- "/root/library/booksonic/othermedia:/othermedia"
SWAG
Se esponete più di un servizio per macchina e volete usare anche HTTPS, c'è un'utilissima immagine di linuxserver, swag, che fa da reverse proxy e aggiunge i certificati. Swag è già attrezzato con i default per tutti i servizi di linuxserver, basta abilitarli, più un'altra manciata:
- adguard
- adminer
- airsonic
- archisteamfarm
- authelia
- bazarr
- beets
- bitwarden
- boinc
- booksonic
- bookstack
- calibre
- calibre-web
- chronograf
- code-server
- codimd
- collabora
- couchpotato
- deluge
- dillinger
- documentserver
- dokuwiki
- domoticz
- dozzle
- drone
- duplicati
- emby
- embystat
- filebot
- filebrowser
- flexget
- flood
- foldingathome
- freshrss
- ghost
- gitea
- glances
- gotify
- grafana
- grocy
- guacamole
- headphones
- heimdall
- homeassistant
- huginn
- jackett
- jellyfin
- jenkins
- kanzi
- komga
- lazylibrarian
- librespeed
- lidarr
- lychee
- mailu
- matomo
- medusa
- metube
- miniflux
- monitorr
- mstream
- mylar
- mytinytodo
- navidrome
- netboot
- netdata
- nextcloud
- nzbget
- nzbhydra
- ombi
- openhab
- openvpn-as
- organizr
- organizr-auth
- osticket
- overseerr
- photoprism
- phpmyadmin
- picard
- pihole
- piwigo
- pixelfed
- plex
- plexwebtools
- podgrab
- portainer
- privatebin
- prometheus
- pydio
- pydio-cells
- pyload
- qbittorrent
- quassel-web
- radarr
- raneto
- recipes
- requestrr
- resilio-sync
- rutorrent
- sabnzbd
- scope
- scrutiny
- seafile
- sickchill
- sickrage
- skyhook
- smokeping
- sonarr
- statping
- synclounge
- syncthing
- taisun
- tautulli
- tdarr
- thelounge
- transmission
- ubooquity
- unifi-controller
- wallabag
- yacht
- youtube-dl
- youtube-dl-server
- znc
(no, non vi metto i link servizio per servizio, l'ho detto all'inizio di essere pigro!)
A questo punto, una volta configurati i DNS (SWAG supporta anche quelli dinamici) dovreste essere a cavallo.
Backup
Al momento il solo backup configurato è per i file di nextcloud, con un rsync
cronnato due volte alla settimana (una volta per macchina), ma sto studiando anche un modo per tenere una seconda copia su Tarsnap. Siccome sono pigro, non credo che passerò anche questo su docker compose, ma mi limiterò a mettere tutto su cron
.