HTPC Download Box con Docker
HTPC Download Box è un insieme di container Docker per avere un server che scarica contenuti multimediali dalla rete attraverso i file Torrent e usare plex per il servizio di streaming dei contenuti.
Docker
Per iniziare serve naturalmente Docker installato nel server o nella macchina che vogliamo utilizzare. Docker è una tecnologia di containerizzazione che consente la creazione e l’utilizzo dei container Linux®. Esso, considera i container come macchine virtuali modulari estremamente leggere, offrendo la flessibilità di creare, distribuire, copiare e spostare i container da un ambiente all’altro. Al sito www.docker.com troverete tutte le informazioni che vi servono.
Su un ambiente Linux senza Desktop-Manager possiamo installare Docker da riga di comando. Io ho tutto installato su un Ubuntu server quindi questi sono i passaggi per installarlo in questa distro.
Prima di tutto lanciamo un update di APT.
sudo apt update
Adesso installiamo alcuni pacchetti per far si che APT lavori in HTTPS
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Dopo di che aggiungiamo la chiave GPG per il repository ufficiale di Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Poi aggiungiamo il repository alla lista di APT
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Per essere sicuri che APT prenda Docker dal repository ufficiale appena aggiunto anziché dal repository di Ubuntu lanciamo questo comando
apt-cache policy docker-ce
Dovrebbe uscire una cosa tipo questa
docker-ce:
Installed: (none)
Candidate: 5:19.03.9~3-0~ubuntu-focal
Version table:
5:19.03.9~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
A questo punto possiamo installare Docker
sudo apt install docker-ce
Finita l’installazione possiamo lanciare questo comando per vedere se è partito e funzionante
sudo systemctl status docker
Se vediamo qualcosa di simile a questo è andato tutto nel modo giusto
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 24321 (dockerd)
Tasks: 8
Memory: 46.4M
CGroup: /system.slice/docker.service
└─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Bene adesso abbiamo Docker in funzione e quindi possiamo passare a configurare i vari container.
Nel mio caso ho installato radarr per i film, sonarr per le serie tv, lidarr per la musica. Tutti e tre questi software hanno bisogno di un altro sw chiamato jackett. Questi container serviranno per scaricare i file multimediali che vogliamo poi visualizzare su plex.
Env file
Per comodità mi sono creato un file .env dove salvo le variabili che mi servono per le configurazioni dei vari container.
# Your timezone, https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Europe/Rome
# UNIX PUID and PGID, find with: id $USER
PUID=1000
PGID=1000
# The directory where data and configuration will be stored.
ROOT=/home/media
Transmission
Transmission è un download manager per i file torrent. Come uTorrent gestisce tutte le richieste di scaricamento che provengono da Sonarr, Radarr e Lidarr.
Condifurazione docker-compose
transmission:
image: linuxserver/transmission
container_name: transmission
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- TRANSMISSION_WEB_HOME=/combustion-release/ #optional
- USER=admin #optional
- PASS=password #optional
volumes:
- ${ROOT}/config/transmission:/config
- ${ROOT}/downloads:/downloads
- ${ROOT}/watch:/watch
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
Jackett
Jackett traduce le richieste di Sonarr, Radarr e Lidarr in ricerche di torrent sui siti Web di torrent più diffusi, anche se tali siti Web non dispongono di API comuni standard.
Configurazione docker-compose:
jackett:
container_name: jackett
image: linuxserver/jackett:latest
restart: unless-stopped
network_mode: host
environment:
- PUID=${PUID} # default user id, defined in .env
- PGID=${PGID} # default group id, defined in .env
- TZ=${TZ} # timezone, defined in .env
volumes:
- /etc/localtime:/etc/localtime:ro
- ${ROOT}/downloads/torrent-blackhole:/downloads # place where to put .torrent files for manual download
- ${ROOT}/config/jackett:/config # config files