Eintrag

Der *arr Stack: Automatisierte Medienverwaltung mit Docker

Der *arr Stack: Automatisierte Medienverwaltung mit Docker

Stell dir vor, du fügst eine neue Serie zu deiner Watchlist hinzu - und am nächsten Tag ist sie vollständig heruntergeladen, korrekt benannt, mit Untertiteln versehen und auf deinem Media-Server verfügbar. Genau das leistet der *arr Stack: eine Sammlung von Docker-Containern, die deine Medienverwaltung vollständig automatisieren.


Was ist der *arr Stack?

Der *arr Stack (gesprochen “arr” wie in “Pirate”) ist eine Sammlung von Open-Source-Anwendungen für automatisierte Medienverwaltung. Der Name kommt von den Endungen der Programme: Sonarr, Radarr, Lidarr, Prowlarr, Bazarr - alle enden auf “-arr”.

Was der Stack kann:

  • Automatisches Suchen und Herunterladen von Medien
  • Qualitäts-Upgrades (z.B. von 720p auf 1080p)
  • Korrekte Benennung und Organisation
  • Untertitel-Download in gewünschten Sprachen
  • Integration mit Media-Servern wie Plex oder Jellyfin

Dieser Guide fokussiert sich auf die technische Einrichtung. Die rechtliche Situation des Herunterladens von Medien variiert je nach Land und Inhalt.


Die Komponenten im Überblick

Komponente Zweck Port Typ
Prowlarr Indexer-Manager 9696 Infrastruktur
Sonarr TV-Serien 8989 Media-Manager
Radarr Filme 7878 Media-Manager
Lidarr Musik 8686 Media-Manager
Readarr Bücher/Hörbücher 8787 Media-Manager
Bazarr Untertitel 6767 Erweiterung
Overseerr Request-Management 5055 Frontend
mindmap
  root((*arr Stack))
    Indexer
      Prowlarr
        Torrent-Indexer
        Usenet-Indexer
    Media Manager
      Sonarr
        TV-Serien
        Anime
      Radarr
        Filme
      Lidarr
        Musik
        Alben
      Readarr
        Bücher
        Hörbücher
    Erweiterungen
      Bazarr
        Untertitel
      Unpackerr
        Archive entpacken
    Download-Clients
      qBittorrent
        Torrent
      SABnzbd
        Usenet
    Media-Server
      Plex
      Jellyfin

Die Komponenten im Detail

Prowlarr - Der Indexer-Manager

Prowlarr ist das Herzstück des Stacks. Es verwaltet zentral alle Indexer (Torrent-Tracker und Usenet-Provider) und synchronisiert sie automatisch zu Sonarr, Radarr und Co.

Warum Prowlarr?

Früher musste man Indexer in jeder *arr-App einzeln konfigurieren. Bei 10 Indexern und 4 Apps bedeutete das 40 manuelle Einträge. Prowlarr löst das Problem:

  • Ein Indexer in Prowlarr = automatisch in allen verbundenen Apps verfügbar
  • Zentrale API-Key-Verwaltung
  • Statistiken über Indexer-Performance
  • Automatische Sync bei Änderungen

Prowlarr sollte immer als erstes eingerichtet werden, da alle anderen *arr-Apps darauf aufbauen.

Sonarr - TV-Serien

Sonarr überwacht deine TV-Serien und lädt automatisch neue Episoden herunter.

Features:

  • Kalender-Ansicht für kommende Episoden
  • Automatisches Suchen nach neuen Folgen
  • Qualitäts-Profile (z.B. “1080p, aber nur wenn Deutsch verfügbar”)
  • Custom Formats für spezifische Release-Gruppen
  • Import bestehender Bibliotheken

Workflow:

  1. Serie zur Watchlist hinzufügen
  2. Sonarr sucht nach verfügbaren Releases
  3. Download-Client lädt herunter
  4. Sonarr benennt um, verschiebt und benachrichtigt Media-Server

Radarr - Filme

Radarr ist das Film-Pendant zu Sonarr.

Features:

  • Automatische Suche nach Neuerscheinungen
  • Qualitäts-Upgrades (z.B. von Cam auf BluRay)
  • Custom Formats für Release-Gruppen, HDR, Audio-Codecs
  • Listen-Import (z.B. IMDB Top 250, Trakt)
  • Verfügbarkeitsprüfung (Kino, Digital, Physical)

Lidarr - Musik

Lidarr verwaltet Musikbibliotheken nach dem gleichen Prinzip.

Features:

  • Überwachung von Künstlern und Alben
  • Metadata-Korrektur (Album-Cover, Tags)
  • Qualitäts-Profile für Audioformate (FLAC, MP3, etc.)
  • Import bestehender Bibliotheken mit MusicBrainz-Matching

Readarr - Bücher

Readarr ist für Bücher und Hörbücher zuständig.

Features:

  • eBooks und Audiobooks
  • Goodreads-Integration
  • Autor-Monitoring
  • Calibre-Integration

Bazarr - Untertitel

Bazarr ergänzt Sonarr und Radarr um automatische Untertitel.

Features:

  • Automatischer Download fehlender Untertitel
  • Unterstützung für 20+ Untertitel-Provider (OpenSubtitles, Subscene, etc.)
  • Sprach-Priorisierung
  • Synchronisation bei Timing-Problemen
  • Forced Subtitles für fremdsprachige Dialoge

Download-Clients

Der *arr Stack unterstützt zwei Arten von Download-Clients:

Aspekt Torrent Usenet
Protokoll P2P, dezentral Server-basiert
Kosten Kostenlos (Tracker ggf. nicht) Abo (~8-15€/Monat)
Geschwindigkeit Variabel (abhängig von Seedern) Konstant hoch (Leitungsmaximum)
Retention Theoretisch ewig Begrenzt (meist 1000-5000 Tage)
VPN nötig? Ja (in DE/AT/CH empfohlen) Nein (SSL-verschlüsselt)
Verfügbarkeit Gut für populäre Inhalte Gut für neue Releases

Empfohlene Clients

Torrent:

  • qBittorrent - Open Source, leichtgewichtig, gute *arr-Integration
  • Deluge - Alternative mit Plugin-System
  • Transmission - Minimalistisch, gut für Server

Usenet:

  • SABnzbd - Python-basiert, einfache Konfiguration
  • NZBGet - C++, ressourcenschonender (nicht mehr aktiv entwickelt)

Für den Einstieg empfehle ich qBittorrent - kostenlos, Open Source und hervorragend dokumentiert.


Media-Server: Plex vs Jellyfin

Nach dem Download müssen die Medien abgespielt werden. Hier stehen zwei populäre Optionen zur Verfügung:

Feature Plex Jellyfin
Kosten Freemium (Plex Pass ~5€/Monat) Vollständig kostenlos
Open Source Nein Ja
HW-Transcoding Nur mit Plex Pass Kostenlos
Remote-Zugriff Einfach (Plex-Server) Erfordert Reverse Proxy
Apps Poliert, auf allen Plattformen Gut, manche Plattformen limitiert
Plugins Eingeschränkt Volle Kontrolle
Datenschutz Cloud-Account erforderlich Vollständig lokal

Meine Empfehlung:

  • Plex für einfaches Setup und beste App-Unterstützung
  • Jellyfin für volle Kontrolle und keine Kosten

Im eigenen Homelab nutze ich Plex wegen der ausgereiften Apps und dem einfachen Remote-Zugriff. Jellyfin ist eine exzellente Alternative, wenn Privatsphäre oder Kosten im Vordergrund stehen.


Datenfluss und Architektur

Das folgende Diagramm zeigt den kompletten Workflow von der Anfrage bis zur Wiedergabe:

flowchart TB
    subgraph Frontend
        User([Benutzer])
        Overseerr[Overseerr]
    end

    subgraph arr[*arr Stack]
        Sonarr[Sonarr/Radarr]
        Prowlarr[Prowlarr]
    end

    subgraph Indexer
        Tracker[Torrent-Tracker]
        Usenet[Usenet-Indexer]
    end

    subgraph Download
        qBit[qBittorrent]
        SAB[SABnzbd]
    end

    subgraph Media
        Plex[Plex/Jellyfin]
        Storage[(Media Storage)]
    end

    User -->|1. Request| Overseerr
    Overseerr -->|2. Hinzufügen| Sonarr
    Sonarr -->|3. Suche| Prowlarr
    Prowlarr -->|4. Query| Tracker
    Prowlarr -->|4. Query| Usenet
    Tracker -->|5. Treffer| Prowlarr
    Usenet -->|5. Treffer| Prowlarr
    Prowlarr -->|6. Release| Sonarr
    Sonarr -->|7. Download| qBit
    Sonarr -->|7. Download| SAB
    qBit -->|8. Fertig| Sonarr
    SAB -->|8. Fertig| Sonarr
    Sonarr -->|9. Import| Storage
    Storage -->|10. Scan| Plex
    Plex -->|11. Stream| User

Der Workflow im Detail:

  1. Request: Benutzer fordert Film/Serie über Overseerr an
  2. Hinzufügen: Overseerr fügt den Titel zu Sonarr/Radarr hinzu
  3. Suche: Sonarr/Radarr fragt Prowlarr nach verfügbaren Releases
  4. Query: Prowlarr durchsucht alle konfigurierten Indexer
  5. Treffer: Indexer liefern passende Releases zurück
  6. Release: Prowlarr sendet beste Übereinstimmung an Sonarr/Radarr
  7. Download: Sonarr/Radarr sendet Release an Download-Client
  8. Fertig: Download-Client meldet Abschluss
  9. Import: Sonarr/Radarr benennt um und verschiebt in Media-Ordner
  10. Scan: Media-Server scannt nach neuen Dateien
  11. Stream: Benutzer kann Inhalt abspielen

VPN und Sicherheit

Beim Torrenting ist ein VPN in vielen Ländern (inkl. Deutschland) essentiell. Die eleganteste Lösung ist Gluetun - ein VPN-Gateway-Container, durch den der gesamte Torrent-Traffic läuft.

flowchart TB
    subgraph Host[Docker Host]
        subgraph VPN[Gluetun VPN Container]
            qBit[qBittorrent]
            Prowlarr[Prowlarr]
        end

        subgraph NoVPN[Host Network - Kein VPN]
            Sonarr[Sonarr]
            Radarr[Radarr]
            Plex[Plex]
        end
    end

    Internet((Internet))
    VPNServer[VPN-Server]

    qBit -->|Torrent-Traffic| VPN
    Prowlarr -->|Indexer-Anfragen| VPN
    VPN -->|Verschlüsselt| VPNServer
    VPNServer -->|Anonymisiert| Internet

    Sonarr -->|Direkt| Internet
    Radarr -->|Direkt| Internet
    Plex -->|Direkt| Internet

Warum diese Architektur?

  • Download-Clients (qBittorrent): Müssen durch VPN, da hier die eigentliche IP sichtbar wäre
  • Prowlarr: Sollte durch VPN, da einige Indexer VPN erfordern
  • Sonarr/Radarr/Plex: Brauchen kein VPN - sie kommunizieren nur mit lokalen Diensten oder APIs

Kill-Switch:

Gluetun hat einen eingebauten Kill-Switch. Wenn die VPN-Verbindung abbricht, wird der gesamte Traffic blockiert - keine Daten werden über die echte IP gesendet.


Docker Compose Setup

Hier ein vollständiges, kommentiertes Docker Compose für einen funktionsfähigen *arr Stack:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
networks:
  arr-network:
    driver: bridge

services:
  # =============================================
  # VPN Gateway (Gluetun)
  # =============================================
  gluetun:
    image: ghcr.io/qdm12/gluetun:latest
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - 8080:8080   # qBittorrent WebUI
      - 9696:9696   # Prowlarr
    environment:
      - VPN_SERVICE_PROVIDER=protonvpn  # Anpassen!
      - VPN_TYPE=wireguard
      - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
      - SERVER_COUNTRIES=Netherlands
      - TZ=Europe/Berlin
    volumes:
      - ./gluetun:/gluetun
    restart: unless-stopped

  # =============================================
  # Download Client
  # =============================================
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    network_mode: service:gluetun  # Läuft durch VPN!
    depends_on:
      gluetun:
        condition: service_healthy
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - WEBUI_PORT=8080
    volumes:
      - ./qbittorrent:/config
      - /media:/media
    restart: unless-stopped

  # =============================================
  # Indexer Manager
  # =============================================
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    network_mode: service:gluetun  # Läuft durch VPN!
    depends_on:
      gluetun:
        condition: service_healthy
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./prowlarr:/config
    restart: unless-stopped

  # =============================================
  # TV-Serien Manager
  # =============================================
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    networks:
      - arr-network
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./sonarr:/config
      - /media:/media
    ports:
      - 8989:8989
    restart: unless-stopped

  # =============================================
  # Film Manager
  # =============================================
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    networks:
      - arr-network
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./radarr:/config
      - /media:/media
    ports:
      - 7878:7878
    restart: unless-stopped

  # =============================================
  # Untertitel Manager
  # =============================================
  bazarr:
    image: lscr.io/linuxserver/bazarr:latest
    container_name: bazarr
    networks:
      - arr-network
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./bazarr:/config
      - /media:/media
    ports:
      - 6767:6767
    restart: unless-stopped

  # =============================================
  # Media Server (Jellyfin)
  # =============================================
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    networks:
      - arr-network
    environment:
      - TZ=Europe/Berlin
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /media:/media:ro
    ports:
      - 8096:8096
    restart: unless-stopped

Ersetze ${WIREGUARD_PRIVATE_KEY} durch deinen VPN-Key. Die meisten Provider bieten WireGuard-Konfigurationsdateien zum Download an.


Verzeichnisstruktur

Die richtige Verzeichnisstruktur ist entscheidend für effizientes Datei-Management:

1
2
3
4
5
6
7
8
/media/
├── downloads/
│   ├── complete/       # Fertige Downloads
│   └── incomplete/     # Laufende Downloads
├── movies/             # Radarr Zielordner
├── shows/              # Sonarr Zielordner
├── music/              # Lidarr Zielordner
└── books/              # Readarr Zielordner

Ein kritischer Punkt: Wenn Download-Ordner und Media-Ordner auf dem gleichen Dateisystem liegen, verwendet Sonarr/Radarr Hardlinks statt Kopien.

Methode Speicherverbrauch Import-Zeit Seeding möglich?
Kopie 2x (Download + Media) Langsam Ja
Hardlink 1x Sofort Ja
Move 1x Schnell Nein

Empfohlenes Setup:

1
2
3
4
5
6
volumes:
  # Ein gemeinsames Volume für alle Medien
  - /media:/media

# Alle *arr-Apps sehen das gleiche /media
# → Hardlinks funktionieren!

Hardlinks funktionieren nicht über verschiedene Dateisysteme (z.B. NFS-Mount für Downloads, lokale SSD für Media). Plane deine Storage-Architektur entsprechend!


Erstkonfiguration

Nach dem Start der Container folgt die Konfiguration. Hier ein Schritt-für-Schritt-Guide:

1. Container starten

1
docker compose up -d

2. Prowlarr: Indexer hinzufügen

  1. Öffne http://localhost:9696
  2. Navigiere zu Settings → Indexers
  3. Klicke Add Indexer
  4. Suche nach deinem Indexer (z.B. “1337x”, “RARBG”)
  5. Konfiguriere API-Key falls erforderlich
  6. Teste mit Test

3. Prowlarr: Apps verbinden

  1. Navigiere zu Settings → Apps
  2. Klicke Add Application
  3. Wähle Sonarr
  4. Gib die URL ein: http://sonarr:8989
  5. Hole den API-Key aus Sonarr (Settings → General)
  6. Wiederhole für Radarr, Lidarr, etc.

4. Download-Client konfigurieren

In Sonarr (analog für Radarr):

  1. Navigiere zu Settings → Download Clients
  2. Klicke Add
  3. Wähle qBittorrent
  4. Konfiguriere:
    • Host: gluetun (Container-Name)
    • Port: 8080
    • Username/Password: Standard ist admin/adminadmin

5. Root-Folder setzen

In Sonarr:

  1. Navigiere zu Settings → Media Management
  2. Klicke Add Root Folder
  3. Pfad: /media/shows

In Radarr:

  1. Navigiere zu Settings → Media Management
  2. Klicke Add Root Folder
  3. Pfad: /media/movies

6. Media-Server einrichten

In Jellyfin:

  1. Öffne http://localhost:8096
  2. Durchlaufe den Setup-Wizard
  3. Füge Bibliotheken hinzu:
    • Movies: /media/movies
    • Shows: /media/shows

Nützliche Erweiterungen

Overseerr - Request-Management

Overseerr bietet eine schicke Oberfläche für Medien-Requests. Benutzer können Filme und Serien anfragen, ohne direkten Zugriff auf Sonarr/Radarr zu benötigen.

Features:

  • Plex/Jellyfin-Integration
  • Benutzer-Management mit Berechtigungen
  • Request-Limits
  • Automatische Genehmigung für bestimmte Benutzer

Tautulli - Plex-Statistiken

Tautulli überwacht deine Plex-Nutzung und erstellt detaillierte Statistiken:

  • Wer schaut was?
  • Welche Medien werden nie geschaut?
  • Transcoding-Statistiken
  • Benachrichtigungen bei neuen Streams

Unpackerr - Archive entpacken

Manche Releases kommen als RAR-Archive. Unpackerr entpackt diese automatisch:

1
2
3
4
5
6
7
8
9
10
11
12
unpackerr:
  image: golift/unpackerr:latest
  container_name: unpackerr
  environment:
    - TZ=Europe/Berlin
    - UN_SONARR_0_URL=http://sonarr:8989
    - UN_SONARR_0_API_KEY=${SONARR_API_KEY}
    - UN_RADARR_0_URL=http://radarr:7878
    - UN_RADARR_0_API_KEY=${RADARR_API_KEY}
  volumes:
    - /media/downloads:/media/downloads
  restart: unless-stopped

Maintainerr - Automatisches Aufräumen

Maintainerr löscht automatisch alte oder ungenutzte Medien nach definierten Regeln:

  • “Lösche Filme, die älter als 1 Jahr sind und nie geschaut wurden”
  • “Behalte nur die letzten 3 Staffeln einer Serie”
  • “Entferne Medien mit schlechter Bewertung”

Troubleshooting

Problem: Container startet nicht (VPN)

Symptom: qBittorrent oder Prowlarr starten nicht, Gluetun zeigt “unhealthy”

Lösung:

1
2
3
4
5
6
7
# Logs prüfen
docker logs gluetun

# Häufige Ursachen:
# - Falscher WireGuard-Key
# - Server nicht erreichbar
# - Firewall blockiert UDP 51820

Problem: Downloads starten nicht

Symptom: Sonarr/Radarr zeigen “Download-Client unavailable”

Lösung:

1
2
3
4
5
# Verbindung zum Download-Client testen
docker exec sonarr curl -s http://gluetun:8080

# Falls Fehler: Container-Netzwerk prüfen
docker network inspect arr-network

Problem: Import schlägt fehl

Symptom: “Import failed: destination same as source” oder ähnlich

Lösung:

  1. Prüfe, ob Downloads und Media auf dem gleichen Volume liegen
  2. Stelle sicher, dass PUID/PGID in allen Containern identisch sind
  3. Prüfe Berechtigungen: ls -la /media/downloads/

Problem: Keine Suchergebnisse

Symptom: Prowlarr findet keine Releases

Lösung:

1
2
3
4
5
# VPN-IP prüfen (sollte NICHT deine echte IP sein)
docker exec gluetun wget -qO- ifconfig.me

# Indexer einzeln testen
# Prowlarr → Indexers → Test

Problem: Falsches Qualitäts-Upgrade

Symptom: Radarr ersetzt 1080p durch 720p

Lösung:

  1. Navigiere zu Settings → Profiles
  2. Prüfe die Qualitäts-Reihenfolge (höher = besser)
  3. Setze “Upgrade Until” auf die gewünschte Qualität

Fazit

Der *arr Stack transformiert dein Homelab in eine vollautomatische Medienzentrale. Einmal konfiguriert, läuft das System weitgehend autonom - neue Episoden erscheinen, Qualitäts-Upgrades werden eingespielt, Untertitel heruntergeladen.

Die wichtigsten Punkte:

  1. Prowlarr zuerst - Es ist das Fundament für alle anderen Apps
  2. VPN ist Pflicht - Gluetun macht es einfach
  3. Verzeichnisstruktur planen - Hardlinks sparen Speicher
  4. Qualitätsprofile nutzen - Custom Formats für deutsche Releases

Der initiale Konfigurationsaufwand zahlt sich schnell aus. Nach einer Woche vergisst man, dass man früher manuell nach Medien gesucht hat.


Ressourcen

Dieser Eintrag ist vom Autor unter CC BY 4.0 lizensiert.