arr-stack Dashboard
Stack d'automatisation média · DayWatch · VPS 178.105.151.162
Les statuts sont vérifiés toutes les 30 secondes via fetch. En cas d'erreur CORS, le status affiché peut être inexact — vérifier directement via le lien.
Stack Docker complète pour automatiser la gestion média DayWatch. Chaque service communique via le réseau interne arr et expose son interface web sur un port dédié.
| Service | Rôle | Port | Statut |
|---|---|---|---|
| Radarr | Gestion des films — indexe, télécharge, renomme | 7878 |
Production |
| Sonarr | Gestion des séries — saisons, épisodes, qualité | 8989 |
Production |
| Prowlarr | Hub d'indexers — synchronise avec Radarr/Sonarr | 9696 |
Production |
| Bazarr | Sous-titres automatiques FR/EN via OpenSubtitles | 6767 |
Production |
| qBittorrent | Client torrent avec interface WebUI | 8080 |
Sans VPN |
| Flaresolverr | Bypass Cloudflare pour indexers protégés | 8191 |
Production |
| Whisper | ASR IA locale — transcription fallback pour Bazarr | 9000 |
Optionnel |
| Recyclarr | Sync TRaSH-Guides custom formats (qualité FR) | — | Cron / Manuel |
cd /opt/daywatch/arr-stack
cp .env.example .env
nano .env # Adapter PUID, PGID, TZ, MEDIA_ROOT
mkdir -p /mnt/storagebox/media/{movies,tv}
mkdir -p /mnt/storagebox/media/downloads/{complete/{radarr,sonarr},incomplete}
docker compose up -d
docker compose ps # vérifier que tout est healthy
→ https://prowlarr.daywatch.online · Ajouter indexers · Connecter Radarr + Sonarr via API
Paramètres → Dossiers racines → /movies (Radarr) / /tv (Sonarr) · Ajouter qBittorrent comme client de téléchargement
Radarr — Films
| Paramètre | Valeur recommandée |
|---|---|
| Dossier racine | /movies |
| Profil qualité | HD-1080p (via Recyclarr TRaSH-Guides) |
| Langue préférée | French |
| Client téléchargement | qBittorrent http://qbittorrent:8080 |
| Catégorie torrent | radarr |
Sonarr — Séries
| Paramètre | Valeur recommandée |
|---|---|
| Dossier racine | /tv |
| Profil qualité | HD-1080p (via Recyclarr TRaSH-Guides) |
| Langue préférée | French |
| Client téléchargement | qBittorrent http://qbittorrent:8080 |
| Catégorie torrent | sonarr |
Bazarr — Sous-titres
| Paramètre | Valeur |
|---|---|
| Providers | OpenSubtitles.com, Subscene |
| Langues | Français (fr), Anglais (en) |
| Radarr URL | http://radarr:7878 |
| Sonarr URL | http://sonarr:8989 |
Recyclarr synchronise automatiquement les TRaSH-Guides custom formats vers Radarr et Sonarr pour une qualité optimale en français.
# Sync manuel (une fois la config YAML prête)
docker compose run --rm recyclarr sync
# Via cron — toutes les nuits à 3h
0 3 * * * cd /opt/daywatch/arr-stack && docker compose run --rm recyclarr sync >> /var/log/recyclarr.log 2>&1
Renseigner RADARR_API_KEY et SONARR_API_KEY dans le fichier .env avant de lancer Recyclarr.
L'API DayWatch consomme directement les bases SQLite de Radarr et Sonarr via les volumes partagés.
| Endpoint API | Source | Description |
|---|---|---|
GET /api/movies | Radarr SQLite | Films téléchargés + métadonnées TMDB |
GET /api/series | Sonarr SQLite | Séries + épisodes disponibles |
GET /api/movies/:id | Radarr + TMDB | Détails film avec overview FR |
GET /api/series/:id | Sonarr + TMDB | Détails série + saisons |
# docker-compose.prod.yml — volumes montés depuis arr-stack
volumes:
- /mnt/storagebox/media/movies:/movies:ro
- /mnt/storagebox/media/tv:/tv:ro
Faire passer qBittorrent derrière Gluetun pour protéger l'IP du VPS. Sans VPN, l'IP publique est exposée lors des téléchargements.
# Ajouter à docker-compose.yml pour activer Gluetun
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add: [NET_ADMIN]
devices: [/dev/net/tun:/dev/net/tun]
environment:
- VPN_SERVICE_PROVIDER=mullvad # ou nordvpn, expressvpn...
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${GLUETUN_WG_KEY}
- SERVER_COUNTRIES=France
ports:
- "8080:8080" # qBittorrent WebUI via Gluetun
# Modifier qBittorrent pour utiliser le réseau Gluetun
qbittorrent:
network_mode: service:gluetun # ← tout le trafic passe par Gluetun
depends_on: [gluetun]
# Retirer le block ports: (géré par Gluetun)
#!/bin/bash
# /opt/daywatch/arr-stack/scripts/backup.sh
# Sauvegarde les config SQLite vers le Storage Box
BACKUP_DIR="/mnt/storagebox/backups/arr-stack/$(date +%Y-%m-%d)"
mkdir -p "$BACKUP_DIR"
for svc in radarr sonarr prowlarr bazarr; do
tar -czf "$BACKUP_DIR/${svc}.tar.gz" /opt/daywatch/arr-stack/data/${svc}/
echo "[OK] $svc sauvegardé → $BACKUP_DIR"
done
# Garder seulement les 7 derniers jours
find /mnt/storagebox/backups/arr-stack/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
# Cron : chaque nuit à 2h
# 0 2 * * * /opt/daywatch/arr-stack/scripts/backup.sh >> /var/log/arr-backup.log 2>&1
Les clés Radarr/Sonarr/Prowlarr sont dans .env (gitignored). Les tourner régulièrement via les UIs de chaque service.
| Service | Où trouver la clé | Variable .env |
|---|---|---|
| Radarr | Settings → General → API Key | RADARR_API_KEY |
| Sonarr | Settings → General → API Key | SONARR_API_KEY |
| Prowlarr | Settings → General → API Key | PROWLARR_API_KEY |
| Bazarr | Settings → General → API Key | BAZARR_API_KEY |
| Chemin | Contenu | Montage |
|---|---|---|
/mnt/storagebox/media/movies | Films téléchargés | Hetzner Storage Box BX31 |
/mnt/storagebox/media/tv | Séries téléchargées | Hetzner Storage Box BX31 |
/mnt/storagebox/media/downloads | En cours + complétés | Hetzner Storage Box BX31 |
/opt/daywatch/arr-stack/data | Config SQLite services | Volume local VPS |
# Vérifier le montage Storage Box
df -h | grep storagebox
mount | grep storagebox
# Si non monté : démarrer le service
systemctl start storagebox
systemctl status storagebox
- Stack démarrée et tous les services
healthy - Storage Box montée sur
/mnt/storagebox - Prowlarr : au moins 3 indexers configurés
- Radarr : connecté à Prowlarr + qBittorrent
- Sonarr : connecté à Prowlarr + qBittorrent
- Bazarr : clés OpenSubtitles renseignées
- Recyclarr : custom formats FR synchronisés
- DayWatch API : teste
/api/moviesretourne des données - Backup cron configuré (2h)
- .env hors Git (vérifié avec
git status) - API keys tournées et copiées dans .env
- VPN Gluetun activé pour qBittorrent (optionnel mais recommandé)
Service ne démarre pas
docker compose logs radarr --tail 50
docker compose ps
docker inspect radarr | jq '.[0].State'
Storage Box non montée
systemctl status storagebox
journalctl -u storagebox -n 30
# Remonter manuellement
systemctl restart storagebox
API DayWatch — films vides
# Vérifier que le volume est bien monté dans le container
docker exec daywatch-api ls /movies
# Vérifier la connexion Radarr
curl https://radarr.daywatch.online/api/v3/movie?apikey=VOTRE_CLE | jq length
Redémarrage propre de la stack
cd /opt/daywatch/arr-stack
docker compose down
docker compose up -d
docker compose ps