Time Machine in rete con Docker e Raspberry Pi

Avete anche voi un Raspberry Pi che vi avanza e volete crearci una bella Time Machine nella vostra rete locale, così da poter fare un bel backup al vostro Mac?

Con Docker è molto più semplice che con il metodo tradizionale o con questi passaggi.
Aprite il terminale ed eseguite:

sudo docker run -d --restart=always \
   --net=host \
   -e CUSTOM_SMB_CONF="false" \
   -e CUSTOM_USER="false" \
   -e DEBUG_LEVEL="1" \
   -e MIMIC_MODEL="TimeCapsule8,119" \
   -e EXTERNAL_CONF="" \
   -e HIDE_SHARES="no" \
   -e TM_USERNAME="timemachine" \
   -e TM_GROUPNAME="timemachine" \
   -e TM_UID="1000" \
   -e TM_GID="1000" \
   -e PASSWORD="password" \
   -e SET_PERMISSIONS="false" \
   -e SHARE_NAME="Tardis" \
   -e SMB_INHERIT_PERMISSIONS="no" \
   -e SMB_NFS_ACES="yes" \
   -e SMB_PORT="445" \
   -e SMB_VFS_OBJECTS="acl_xattr fruit streams_xattr" \
   -e VOLUME_SIZE_LIMIT="0" \
   -e WORKGROUP="WORKGROUP" \
   -v /media/wd/tardis:/opt/timemachine \
   -v timemachine-var-lib-samba:/var/lib/samba \
   -v timemachine-var-cache-samba:/var/cache/samba \
   -v timemachine-run-samba:/run/samba \
   mbentley/timemachine:smb-armv7l

E voilà, collegatevi dal vostro Mac!

Se invece volete creare una Time Machine con un server Ubuntu, qui la guida.

Photo by Dante Candal on Unsplash

MariaDB e phpMyAdmin su Docker in pochi secondi

Volete avere SQL e PHP in 3 secondi con Docker? E sì, è compatibile anche con Apple M1.

docker run -d \\
   --name=mariadb \\
   -e PUID=1000 \\
   -e PGID=1000 \\
   -e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \\
   -e TZ=Europe/London \\
   -p 3306:3306 \\
   -v path_to_data:/config \\
   --restart unless-stopped \\
   ghcr.io/linuxserver/mariadb
 docker run --name myadmin -d --link mariadb:db -p 8080:80 phpmyadmin

Per la versione macOS compatibile con Apple Silicon: potete trovare qua il link https://docs.docker.com/docker-for-mac/apple-m1/

Come installare WireGuard con Docker

Se anche voi, come me, volete avere una vostra VPN self-hosted, ecco a voi pochi passaggi per averla con Docker (nel caso non vogliate seguire la guida più tradizionale).

sudo docker create \\
--name=wireguard \\
--cap-add=NET_ADMIN \\
--cap-add=SYS_MODULE \
-e PUID=1000 \\
-e PGID=1000 \\
-e TZ=Europe/Rome \\
-e SERVERURL=domain.it \\
-e SERVERPORT=51820 \\
-e PEERS=3 \\
-e PEERDNS=1.1.1.1 \\
-e INTERNAL_SUBNET=10.13.13.0 \\
-p 51820:51820/udp \\
-v /home/pi/wireguard/config:/config \\
-v /lib/modules:/lib/modules \\
--restart unless-stopped \\
linuxserver/wireguard

Se volete accedere alla shell:

docker exec -it wireguard /bin/bash

Se invece volete controllare il log del container:

docker logs -f wireguard

Il resto della documentazione lo trovate qui: https://hub.docker.com/r/linuxserver/wireguard

Come installare nginx con Docker

Come potrete aver ben notato, spesso ho preferito nginx ad Apache per una miriade di progetti in quanto è molto più leggero e ha una configurazione (secondo il mio parere) più semplice rispetto alla controparte. Ovvio che come al solito contano le preferenze personali, perché oramai in termini di esigenze… direi che si eguagliano in termini di funzionalità.

Se volete creare il vostro webserver in modo semplice e veloce, ecco a voi:

docker run -v /home/nginx:/usr/share/nginx/html:ro -p 32769:80 --restart unless-stopped -d nginx

Se volete crearne altri 2 o altri 100, vi basterà eseguire lo stesso comando, semplicemente cambiando la porta 32769 (scelta a random). Così d’avere tutti i siti web, statici o dinamici che siano in un men che non si dica!

Come installare Pi-hole con Docker

Prima di tutto è necessario che abbiate installato Docker. Qui la guida per Raspberry Pi e qui per Ubuntu.

Poi aprite il terminale ed eseguite:

docker run -d \\
--name pihole \\
-p 53:53/tcp -p 53:53/udp \\
-p 80:80 \\
-e TZ="America/Chicago" \\
-v "$(pwd)/etc-pihole/:/etc/pihole/" \\
-v "$(pwd)/etc-dnsmasq.d/:/etc/dnsmasq.d/" \\
--dns=127.0.0.1 --dns=1.1.1.1 \\
--restart=unless-stopped \\
--hostname pi.hole \\
-e VIRTUAL_HOST="pi.hole" \\
-e PROXY_LOCATION="pi.hole" \\
pihole/pihole:latest

Per visualizzare la password dovrete andare sull’indirizzo IP locale (se volete configurare un indirizzo IP statico a Raspberry Pi OS, qui la guida) eseguite:

docker exec -it pihole pihole -a -p

E come indicato in questo thread, se volete utilizzare Pi-hole come DNS all’interno di altri container Docker, dovrete modificare la terza riga con la specifica dell’indirizzo IP locale. Ad esempio se il vostro IP è 192.168.1.2:

-p 53:53/tcp -p 192.168.1.2:53:53/udp \

Successivamente, se volete configurarlo anche agli altri container su Docker, vi basterà seguire questi passaggi.

Come cambiare DNS su Docker

I DNS come potrete notare dai miei articoli, possono generare diversi problemi e a volte può capitare che abbiate anche difficoltà a capire quale DNS vi risponde quando effettuate delle query.

Modifica del file /etc/docker/daemon.json

Se volete forzare i container a usare un certo DNS, dovrete modificare questo file:

sudo nano /etc/docker/daemon.json

E incollate (modificatelo a vostra discrezione):

{
    "dns": ["192.168.1.2", "8.8.8.8"]
}

Poi riavviate il servizio di Docker con:

sudo service docker restart

Come rimuovere immagini contenitori su Docker

Con il comando: docker images potrete visualizzare l’elenco delle immagini contenitori che avete attualmente installate.
Se decidete di rimuoverle, potete eseguire:

docker rmi mysql/mysql-server

Potete seguire il resto della documentazione su https://docs.docker.com/engine/reference/commandline/rmi/

Se invece volete avviare dei contenitori che si riavviino ogni volta, potete seguire questa guida.