Herzlich Willkommen zum zweiten Teil der Serie Usenet Downloads automatisieren. In diesem Teil werde ich auf die Installation und Konfiguration eines Usesnet Downloaders eingehen.
Übersicht
- Projekt Usenet: Teil 1 Einleitung
- Projekt Usenet: Teil 2 Installation und Konfiguration Docker
- Projekt Usenet: Teil 3 Installation und Konfiguration Downloader (Sabnzbd)
- Projekt Usenet: Teil 4 Installation und Konfiguration Film-Indexer (Radarr)
Voraussetzungen
- (Docker) Server
- Usenet Account
- VPN Provider (Optional)
- SSL Zertifikat (Optional)
Vorwort
Ich habe mich für eine Docker-basierte Installation entschieden. Dabei gibt es zwei unterschiedliche Images:
- docker-sabnzbdvpn: Inkludiert eine OpenVPN oder Wireguard Konfiguration, welche man ohne größere Konfigurationen angeben kann.
- docker-sabnzbd: Offizielles Paket ohne weitere Extras.
Standardmäßig wird heutiger Usenet Traffic über HTTPS abgewickelt und ist entsprechend sicher. Nichtsdestotrotz gehe ich für ein solches Vorhaben auf Nummer sicher.
Installation Sabnzbd
Im ersten Schritt erstelle ich einen neuen Linux Nutzer sowie eine Gruppe für den Docker Container. Außerdem erstelle ich das Konfigurationsverzeichnis auf dem Docker-Host in welchem etwaige Anwendungsdaten permanent gespeichert werden sollen:
sudo useradd -U svc_sabnzbd sudo usermod -a -G data svc_sabnzbd mkdir /opt/docker/appdata/sabnzbd chown -R svc_sabnzbd:svc_sabnzbd /opt/docker/appdata/sabnzbd chmod -R 770 /opt/docker/appdata/sabnzbd
Wie man sehen kann, wird mit den obigen Befehlen, ein neuer Nutzer inkl. Gruppe svc_sabnzbd erstellt. Der Nutzer wird dann in die Gruppe data aufgenommen. Außerdem wird ein Verzeichnis unter /opt/docker/appdata erstellt, welches mein Verzeichnis etwaiger Docker Container darstellt. Im Anschluss wird der Besitzer des Ordners und die Berechtigungen konfiguriert.
Nachfolgend wird die Ordnerstruktur des Downloadverzeichnis auf dem SMB Share erstellt. Die Ordnerstruktur ist wie folgt aufgebaut:
SMB: /data/ ├─ Downloads/ │ ├─ _SABNZBD/ │ │ ├─ Incomplete/ │ │ ├─ Complete/ │ │ │ ├─ radarr/ │ │ │ ├─ sonarr/ │ │ │ ├─ lidarr/ │ │ │ ├─ readarr/ ├─ Filme/ ├─ Serien/
Da ich im Anschluss mit Docker-Compose arbeite, erstelle ich nun eine entsprechende docker-compose.yml unter /opt/docker mit folgendem Inhalt:
version: "3.2" services: sabnzbd: container_name: sabnzbd image: dyonr/sabnzbdvpn restart: unless-stopped logging: driver: json-file ports: - 8080:8080 - 8443:8443 environment: - PUID=1007 - PGID=1010 - TZ=Europe/Berlin - VPN_ENABLED=yes - VPN_TYPE=wireguard - LAN_NETWORK=10.10.0.0/24,10.10.0.2/24 - NAME_SERVERS=1.1.1.1,1.0.0.1 sysctls: - net.ipv4.conf.all.src_valid_mark=1 cap_add: - NET_ADMIN volumes: - /etc/localtime:/etc/localtime:ro - /opt/docker/appdata/sabnzbd:/config - /data:/data
Das Docker-Compose File startet einen neuen Container mit dem oben genannten Image sabnzbdvpn. Außerdem exposed der Docker Container den Port 8080 und 8443 auf den Docker Host. Der Container wird mit dem Nutzer und der Gruppe svc_sabnzbd gestartet, die Zeitzone wird konfiguriert. Docker Image spezifische Einstellungen findest du auf der entsprechenden Github Seite. In meinem Fall aktiviere ich die Option VPN und wähle als Typ Wireguard. Meine lokalen Netzwerke schließe ich mit dem Parameter LAN_NETWORK aus. Zum Schluss werden zu verwendende DNS Server und entsprechende zu mappende Laufwerke zugewiesen. Zudem wird der Container versuchen, den Benutzer mit der UID 1007 (User: svc_sabnzbd) und der GUID 1010 (Gruppe: data), auf entsprechende Ordner zuzugreifen.
Damit die VPN Konnektivität funktioniert, muss ein entsprechendes Wireguard VPN File mit dem Namen wg0.conf nach /opt/docker/appdata/sabnzbd/wireguard kopiert werden. Da ich die Applikation später mittels SSL absichere, erstelle ich mir ein selbstsigniertes Zertifikat (server.cert), den unverschlüsselten private Key (server.key) sowie das CA Zertifikat (chain.cert). Im Anschluss kann der Container gestartet werden.
mkdir /opt/docker/appdata/sabnzbd/wireguard mkdir /opt/docker/appdata/sabnzbd/ssl mv wg0.conf /opt/docker/appdata/sabnzbd/wireguard mv server.cert /opt/docker/appdata/sabnzbd mv server.key /opt/docker/appdata/sabnzbd mv chain.cert /opt/docker/appdata/sabnzbd docker-compose up
Wenn der Container korrekt startet, sieht das ganze wie folgt aus:
Außerdem kann auf das Webinterface mit folgender Adresse zugegriffen werden: http://DOCKERHOSTIP:8080
Konfiguration Sabnzbd
Der komplexere Teil ist geschafft, nun kommen wir zur Konfiguration der Applikation. Im ersten Schritt wird die Sprache gewählt. Im Anschluss wird der Usenet Zugang angegeben:
Konnten die Zugangsdaten erfolgreich getestet werden, können die Einstellungen im nächsten Schritt geöffnet werden:
General
Advanced Settings aktivieren, HTTPS aktivieren, Zertifikatskonfiguration angeben, Konfiguration speichern (nach dem speichern muss der Server mittels https:DOCKERHOSTIP:8443 aufgerufen werden. Sollte der Server nicht mehr starten, muss der Docker Container neu gestartet werden.
Benutzername und Passwort angeben
Folders
Temporären Ordner sowie Ordner für fertiggestellte Downloads angeben. /data ist in diesem Fall der zuvor gemountete SMB-Share. Mindestspeicher des Laufwerks angeben und “Auto resume” aktivieren.
Categories
Umbenennen der Kategorien und erstellen von Unterordnern (radarr, sonarr, lidarr, readarr) im Verzeichnis, in welchem die fertig gestellten Downloads gespeichert werden, nachfolgend werden die Unterordner hier angegeben.
Switches
Aktion bei verschlüsselten RAR Dateien: Abbrechen, Ungewollte Erweiterungen: exe, com, Aktion wenn eine unerwünschte Erweiterung gefunden wurde: Abbrechen. Direkt Entpacken zum entpacken während des Downloads aktivieren.
Schlusswort
Um den Docker Container ohne Ausgabe zu starten, benutze folgenden Befehl:
docker-compuse up -d
Zudem kann das Compose File auch während des Docker-Host Starts, gestartet werden. Entsprechende Anleitungen können online gefunden werden.
Damit hast du den ersten Schritt erfolgreich erledigt und einen Downloader eingerichtet. Im nächsten Schritt, zeige ich wie Du Sonarr einrichtest und zusammen mit dem Downloader konfigurierst.