Nerd Service - Web Developer

HTPC Download Box con Docker

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