Files
language-dashboard/docker-compose.yml
T
nessi 83dc8c08ae feat: add independent background monitors for RAID/IO/GPU with configurable refresh intervals to eliminate blocking queries
Add RAID_REFRESH_SECONDS/IO_REFRESH_SECONDS/GPU_REFRESH_SECONDS environment variables with default 5 seconds and minimum 2 seconds. Add graphics_cache_lock and graphics_cache global for thread-safe GPU data access. Add io/io_at fields to datastore_cache. Extract refresh_io_status() to update I/O pressure cache. Add refresh_gpu_status() to update graphics_cache. Implement hardware
2026-08-25 20:15:01 +02:00

48 lines
1.6 KiB
YAML

services:
media-max:
build: .
container_name: media-max
restart: unless-stopped
gpus: all
ports:
- "8099:8099"
devices:
- "${RAID_DEVICE:-/dev/md127}:${RAID_DEVICE:-/dev/md127}"
cap_add:
- SYS_RAWIO
device_cgroup_rules:
- "b 8:* rwm"
- "b 9:* rwm"
extra_hosts:
- "host.docker.internal:host-gateway"
env_file:
- .env
environment:
NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility}
# Serverseitiger Bibliotheks-Sync; 1800 = alle 30 Minuten, 0 = nur beim Start.
SYNC_INTERVAL_SECONDS: ${SYNC_INTERVAL_SECONDS:-1800}
RAID_REFRESH_SECONDS: ${RAID_REFRESH_SECONDS:-5}
IO_REFRESH_SECONDS: ${IO_REFRESH_SECONDS:-5}
GPU_REFRESH_SECONDS: ${GPU_REFRESH_SECONDS:-5}
volumes:
# Host-Pfad deiner Film-Library -> interner Dashboard-Pfad
- ${FILM_MEDIA_VOLUME}:/media/filme:ro
# Falls Sonarr verwendet wird, muss SERIES_MEDIA_VOLUME auf die Serien-Library zeigen.
- ${SERIES_MEDIA_VOLUME:-/nesflix/serien}:/media/serien:ro
# Read-only Datastore für Größen-/Kategorie-Scans.
- ${DATASTORE_HOST_PATH:-/nesflix}:/nesflix:ro
# Read-only Host-Devices für lsblk/smartctl; Media Max führt keine RAID-Schreiboperationen aus.
- /dev:/host-dev:ro
# Read-only Hardware-Metadaten für Seriennummern und SMART-Zuordnung.
- /sys:/host-sys:ro
- /run/udev:/host-run-udev:ro
- ./data:/data
networks:
- media
networks:
media:
external: true
name: media-stack_default