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:
- Serie zur Watchlist hinzufügen
- Sonarr sucht nach verfügbaren Releases
- Download-Client lädt herunter
- 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:
- Request: Benutzer fordert Film/Serie über Overseerr an
- Hinzufügen: Overseerr fügt den Titel zu Sonarr/Radarr hinzu
- Suche: Sonarr/Radarr fragt Prowlarr nach verfügbaren Releases
- Query: Prowlarr durchsucht alle konfigurierten Indexer
- Treffer: Indexer liefern passende Releases zurück
- Release: Prowlarr sendet beste Übereinstimmung an Sonarr/Radarr
- Download: Sonarr/Radarr sendet Release an Download-Client
- Fertig: Download-Client meldet Abschluss
- Import: Sonarr/Radarr benennt um und verschiebt in Media-Ordner
- Scan: Media-Server scannt nach neuen Dateien
- 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
Hardlinks vs. Kopien
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
- Öffne
http://localhost:9696 - Navigiere zu Settings → Indexers
- Klicke Add Indexer
- Suche nach deinem Indexer (z.B. “1337x”, “RARBG”)
- Konfiguriere API-Key falls erforderlich
- Teste mit Test
3. Prowlarr: Apps verbinden
- Navigiere zu Settings → Apps
- Klicke Add Application
- Wähle Sonarr
- Gib die URL ein:
http://sonarr:8989 - Hole den API-Key aus Sonarr (Settings → General)
- Wiederhole für Radarr, Lidarr, etc.
4. Download-Client konfigurieren
In Sonarr (analog für Radarr):
- Navigiere zu Settings → Download Clients
- Klicke Add
- Wähle qBittorrent
- Konfiguriere:
- Host:
gluetun(Container-Name) - Port:
8080 - Username/Password: Standard ist
admin/adminadmin
- Host:
5. Root-Folder setzen
In Sonarr:
- Navigiere zu Settings → Media Management
- Klicke Add Root Folder
- Pfad:
/media/shows
In Radarr:
- Navigiere zu Settings → Media Management
- Klicke Add Root Folder
- Pfad:
/media/movies
6. Media-Server einrichten
In Jellyfin:
- Öffne
http://localhost:8096 - Durchlaufe den Setup-Wizard
- Füge Bibliotheken hinzu:
- Movies:
/media/movies - Shows:
/media/shows
- Movies:
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:
- Prüfe, ob Downloads und Media auf dem gleichen Volume liegen
- Stelle sicher, dass
PUID/PGIDin allen Containern identisch sind - 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:
- Navigiere zu Settings → Profiles
- Prüfe die Qualitäts-Reihenfolge (höher = besser)
- 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:
- Prowlarr zuerst - Es ist das Fundament für alle anderen Apps
- VPN ist Pflicht - Gluetun macht es einfach
- Verzeichnisstruktur planen - Hardlinks sparen Speicher
- 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
- TRaSH Guides - Die beste Ressource für *arr-Konfiguration
- r/selfhosted - Community für Self-Hosting
- Servarr Wiki - Offizielle Dokumentation
- LinuxServer.io - Docker-Images für *arr-Apps
- Gluetun Wiki - VPN-Container Dokumentation
