Add datastore_cache raid/raid_at fields for RAID status caching with 60-second fallback window. Extract smart_status() function from raid_status() to enable parallel execution. Add ThreadPoolExecutor submission for SMART checks across all RAID disks with concurrent futures. Update SMART logging to check "PASSED" status explicitly instead of regex match presence. Add stale/warning fields to datastore_snapshot() when fresh
Media Max
Datastore
Der Datastore-Tab zeigt den read-only Speicherstatus von /nesflix, Medienkategorien
und den Linux-Software-RAID-Status. Größen-Scans werden standardmäßig 15 Minuten
gecacht; RAID-/Recovery-Werte aktualisieren sich live. Konfigurierbar sind
DATASTORE_PATH, DATASTORE_HOST_PATH, RAID_DEVICE, STORAGE_CACHE_SECONDS und
optional SMART_ENABLED=true für SMART-Healthwerte.
Wichtig: Path-Mapping
Radarr kann seine Filme z.B. unter /data/filme sehen, während der Host sie unter
/nesflix/filme hat. Das Dashboard unterstützt diese Abbildung explizit:
environment:
RADARR_MEDIA_PATH: "/data/filme"
LOCAL_MEDIA_PATH: "/media/filme"
volumes:
- /nesflix/filme:/media/filme:ro
Dienststatus
Der Dashboard-Tab prüft zusätzlich Jellyfin, Seerr, Prowlarr, Easynews as Indexer, qBittorrent, Bazarr, Lingarr, LibreTranslate sowie die Sonarr-/Radarr-Prowlarr-Proxies. Die Prüfungen laufen parallel im Hintergrund und blockieren die Seite nicht.
Die Standardnamen funktionieren, wenn die Container im selben Docker-Netzwerk liegen.
Für qBittorrent muss QBITTORRENT_URL auf eine aus dem Dashboard-Container erreichbare
URL zeigen, zum Beispiel http://host.docker.internal:8080 oder die Host-IP.
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_ODER_IP: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
Für die bereits vorhandenen Container sind keine zusätzlichen Compose-Services nötig;
sie müssen im gemeinsamen media-stack_default-Netzwerk erreichbar sein. Falls
qBittorrent nicht über host.docker.internal erreichbar ist, kann unter Linux je nach
Docker-Konfiguration dieser Eintrag ergänzt werden:
extra_hosts:
- "host.docker.internal:host-gateway"
Ein Radarr-Pfad wie:
/data/filme/Avatar (2009)/Avatar.mkv
wird dadurch für ffprobe zu:
/media/filme/Avatar (2009)/Avatar.mkv
Konfiguration
Die persönlichen URLs, Pfade und API-Keys liegen in .env. Diese Datei ist in .gitignore eingetragen und bleibt bei git pull erhalten. Als Vorlage dient .env.example.
Beim ersten Start:
cp .env.example .env
Danach die Werte in .env eintragen. Sonarr und SABnzbd werden dort durch Auskommentieren der jeweiligen Variablen aktiviert. Wenn Sonarr aktiv ist, muss SERIES_MEDIA_VOLUME auf den echten Host-Pfad deiner Serien-Library zeigen; dieser Ordner wird in den Dashboard-Container nach /media/serien gemountet.
Start
API-Keys und Pfade in .env anpassen:
docker compose down
docker compose up -d --build
docker compose logs -f
Die Seite lädt zuerst die Library-Metadaten. Die ffprobe-Scans laufen danach im Hintergrund; oben wird der Fortschritt angezeigt. Für Sonarr die optionalen Variablen und den Serien-Volume-Mount in docker-compose.yml aktivieren. Die Navigation trennt Filme und Serien, Serien sind pro Show aufklappbar.
Sonarr benötigt:
SONARR_URL: "http://sonarr:8989"
SONARR_API_KEY: "..."
SONARR_MEDIA_PATH: "/data/serien"
LOCAL_SERIES_PATH: "/media/serien"
SABnzbd benötigt für den Download-Tab:
SAB_URL: "http://sabnzbd:8080"
SAB_API_KEY: "..."
Der API-Key steht in SABnzbd unter Config > General. Die laufenden Jobs kommen aus der SABnzbd-Queue, abgeschlossene und fehlgeschlagene Jobs aus der History. Die Sprache eines laufenden Releases wird aus dessen Namen abgeleitet; nach dem Import ist die Sprache im Radarr-/Sonarr-Scan verlässlich.
Bei weiterem Scanfehler
Prüfe einen Pfad im Container:
docker exec -it media-max sh
ls -lah /media/filme
find /media/filme -type f | head
ffprobe -v error -show_entries stream=codec_type,codec_name:stream_tags=language -of json "/media/filme/DEIN/FILM.mkv"