Files
language-dashboard/README.md
T
nessi 14a4c6ce7b docs: convert README to German with comprehensive feature documentation and deployment guide
Replace English README with German documentation covering all features: Radarr/Sonarr media tracking with quality/audio/subtitle analysis, SABnzbd download monitoring with language detection, dashboard with service status/CPU/RAM/storage/I/O pressure/library stats, datastore with categories/capacity/RAID status/rebuild progress/SMART/temperature/serial numbers. Add detailed configuration sections for path mapping between Radarr/Sonarr and container volumes
2026-08-17 19:35:21 +02:00

171 lines
5.6 KiB
Markdown

# Media Max
Media Max ist ein kompaktes Media-Control-Dashboard für Radarr, Sonarr und SABnzbd. Es zeigt Medienqualität, Audio- und Untertitelspuren, fehlende deutsche Spuren, laufende Downloads sowie System-, Speicher- und RAID-Status.
## Funktionen
- Radarr-Filme mit Qualität, Status, Audio, Untertiteln, Codec und Größe
- Sonarr-Serien mit Episodenansicht und Kategorien über Tags:
- `anime` → Anime
- `kdrama` → K-Dramen
- alle anderen → Standard
- Separate Liste „Ohne Deutsch“ für vorhandene oder aktuell geladene Medien
- Staffel 0 kann in den Einstellungen ein- oder ausgeblendet werden
- Externe Untertitel (`.srt`, `.ass`, `.ssa`, `.vtt`, `.sub`, `.idx`, `.sup`) werden berücksichtigt
- SABnzbd-Downloadübersicht mit aktiven Downloads und separater Queue-/Verifying-Tabelle
- Download-Sprachen aus üblichen Release-Kürzeln wie `Eng`, `Ger`, `Fre`, `Ita` und `Spa`
- Dashboard mit Diensten, CPU, RAM, Speicher, I/O Pressure und Bibliotheksstatistiken
- Datastore mit Kategorien, Gesamtauslastung, I/O Pressure und RAID-Status
- RAID-Rebuild-Fortschritt, Geschwindigkeit, Restzeit, Plattenmodell, SMART, Temperatur und Hersteller-Seriennummer
- Parallele Hintergrundscans mit konfigurierbarer Worker-Anzahl
- PWA-Unterstützung für HTTPS-fähige Installationen auf Desktop und Android
## Konfiguration
Persönliche Werte gehören in `.env`. Die Datei ist in `.gitignore` eingetragen. Als Vorlage dient `.env.example`:
```bash
cp .env.example .env
```
### Radarr und Medienpfade
Radarr kann beispielsweise `/data/filme` verwenden, während Media Max die Dateien im Container unter `/media/filme` sieht:
```env
RADARR_URL=http://radarr:7878
RADARR_API_KEY=...
RADARR_MEDIA_PATH=/data/filme
LOCAL_MEDIA_PATH=/media/filme
FILM_MEDIA_VOLUME=/nesflix/filme
```
### Sonarr
```env
SONARR_URL=http://sonarr:8989
SONARR_API_KEY=...
SONARR_MEDIA_PATH=/data/serien
LOCAL_SERIES_PATH=/media/serien
SERIES_MEDIA_VOLUME=/nesflix/serien
```
### SABnzbd
```env
SAB_URL=http://sabnzbd:8080
SAB_API_KEY=...
```
Der Download-Tab verwendet Queue und History aus SABnzbd. Für laufende Releases werden Sprachen aus dem Dateinamen abgeleitet; die Medienanalyse nach dem Import erfolgt über `ffprobe`.
## Dienststatus
Der Dashboard-Tab prüft die Dienste parallel mit kurzen Timeouts und aktualisiert sie regelmäßig:
```env
JELLYFIN_URL=http://jellyfin:8096
SEERR_URL=http://seerr:5055
PROWLARR_URL=http://prowlarr:9696
EASYNEWS_INDEXER_URL=http://easynews-as-indexer:8081
QBITTORRENT_URL=http://host.docker.internal:8080
BAZARR_URL=http://bazarr:6767
LINGARR_URL=http://lingarr:9876
LIBRETRANSLATE_URL=http://libretranslate:5000
SONARR_PROWLARR_PROXY_URL=http://sonarr-prowlarr-proxy:8080
RADARR_PROWLARR_PROXY_URL=http://radarr-prowlarr-proxy:8080
SERVICE_CHECK_TIMEOUT=3
SERVICE_REFRESH_SECONDS=30
```
Die Container müssen im gemeinsamen Docker-Netzwerk `media-stack_default` erreichbar sein. qBittorrent läuft außerhalb des Compose-Stacks und benötigt deshalb eine erreichbare URL. Bei Bedarf stellt `extra_hosts` den Namen `host.docker.internal` bereit.
## Scans und Performance
Scans laufen nach dem Laden der Bibliotheksdaten im Hintergrund. Über den Button „Neu scannen“ kann zwischen Radarr, Sonarr und allen Quellen gewählt werden. Die automatische Scan-Häufigkeit wird in den Einstellungen festgelegt.
```env
SCAN_WORKERS=4
REQUEST_TIMEOUT=20
DB_PATH=/data/cache.db
```
`SCAN_WORKERS` steuert die Anzahl paralleler `ffprobe`-Jobs. Höhere Werte beschleunigen große Bibliotheken, erhöhen aber die I/O-Last.
## Datastore, RAID und SMART
Der Datastore ist standardmäßig `/nesflix` und wird read-only eingebunden:
```env
DATASTORE_PATH=/nesflix
DATASTORE_HOST_PATH=/nesflix
RAID_DEVICE=/dev/md127
STORAGE_CACHE_SECONDS=900
SMART_ENABLED=true
HOST_SYS_PATH=/host-sys
```
Für SMART, Temperaturen und echte Hersteller-Seriennummern benötigt der Container Zugriff auf `/dev`, `/sys`, `/run/udev`, `SYS_RAWIO` sowie `smartctl` im Image. Die App liest keine RAID-Daten schreibend und führt keinen Rebuild aus.
Die I/O Pressure basiert auf Linux PSI (`/proc/pressure/io`). Wenn der Kernel PSI nicht unterstützt, wird die Anzeige als nicht verfügbar markiert.
## Logging
```env
LOG_LEVEL=INFO
LOG_FILE=/data/media-max.log
LOG_RETENTION_HOURS=6
```
Erwartbare Verbindungsfehler werden als kurze einzeilige Meldungen protokolliert. Die Logdatei wird standardmäßig alle sechs Stunden rotiert.
## Start mit Docker Compose
```bash
docker compose up -d --build
docker compose logs -f media-max
```
Der Compose-Stack bindet standardmäßig ein:
```yaml
volumes:
- ${FILM_MEDIA_VOLUME}:/media/filme:ro
- ${SERIES_MEDIA_VOLUME:-/nesflix/serien}:/media/serien:ro
- ${DATASTORE_HOST_PATH:-/nesflix}:/nesflix:ro
- /dev:/host-dev:ro
- /sys:/host-sys:ro
- /run/udev:/host-run-udev:ro
- ./data:/data
```
Für Radarr, Sonarr und die weiteren Container wird das externe Netzwerk `media-stack_default` verwendet.
## Fehlersuche
Prüfe zuerst, ob Media Max die Medien sieht:
```bash
docker exec -it media-max sh
ls -lah /media/filme
ls -lah /media/serien
find /media/filme -type f | head
```
Teste anschließend `ffprobe` direkt im Container:
```bash
ffprobe -v error \
-show_entries stream=codec_type,codec_name:stream_tags=language \
-of json "/media/filme/DEIN/FILM.mkv"
```
Für SMART:
```bash
smartctl -i -d sat /host-dev/sda
smartctl -A -d sat /host-dev/sda
```
Wenn eine PWA-Installation in Chrome nicht angeboten wird, muss Media Max über gültiges HTTPS aufgerufen werden. Nach Änderungen an Manifest oder Service Worker sollten alte Website-Daten bzw. eine alte Verknüpfung entfernt und die Seite neu geladen werden.