Runs on Docker and desktop

Run MediaLyze as a Docker container to watch your library around the clock, or use the desktop client for quick analyses, external drives, and local one-off checks.

Docker Compose

services:
  medialyze:
    image: ghcr.io/frederikemmer/medialyze:latest
    container_name: medialyze
    ports:
      - 8080:8080
    environment:
      # change to your timezone, e.g. "Europe/Berlin" or "America/New_York"
      TZ: UTC
    volumes:
      - ./config:/config
      # use .env or change "./media" to the path of your media directory
      - ./media:/media:ro

      # additional media mounts, if needed. Extend this pattern if needed:
      # /PATH/TO/MEDIA1:/media/MEDIA1:ro

Docker run

docker run -d \
  --name medialyze \
  -p 8080:8080 \
  -e TZ=UTC \
  -v "$PWD/config:/config" \
  -v "$PWD/media:/media:ro" \
  ghcr.io/frederikemmer/medialyze:latest

Environment variables

VariableDefault valueDescription
MEDIALYZE_RUNTIMEserverRuntime mode, normally server for Docker
CONFIG_PATH/configWritable config and database path
MEDIA_ROOT/mediaContainer root for mounted libraries
APP_HOST0.0.0.0Backend bind host
APP_PORT8080Internal HTTP port
HOST_PORT8080Host HTTP port
TZUTCTimezone for logs and scheduled scans
CONFIG_HOST_DIR./configHost folder mounted to /config
MEDIA_HOST_DIR./mediaHost media folder mounted to /media
DISABLE_DEFAULT_IGNORE_PATTERNSfalseSkip the built-in ignore patterns
MEDIALYZE_TELEMETRY_DISABLEDfalseForce telemetry off and lock the toggle
MEDIALYZE_TELEMETRY_ENDPOINThttps://www.medialyze.app/api/telemetry/ingestTelemetry ingest endpoint override
FFPROBE_PATHffprobeffprobe binary path
PUID / PGIDunsetRuntime user and group IDs
APP_VERSIONimage defaultLocal build version label

Desktop Clients

Install the local client for quick one-off scans, attached drives, and libraries you do not want to keep mounted on a server.

Latest release