# NoMercy MediaServer - Docker Compose (CPU Only) # # Basic configuration without GPU hardware acceleration. # For GPU support, use the appropriate compose file instead. # # Usage: # docker compose up -d # Start in background # docker compose logs -f nomercy # View logs # docker compose down # Stop and remove containers # # GPU Alternatives: # docker compose -f docker-compose.nvidia.yml up -d # NVIDIA GPU # docker compose -f docker-compose.intel.yml up -d # Intel Quick Sync # docker compose -f docker-compose.amd.yml up -d # AMD GPU services: nomercy: container_name: nomercy-mediaserver image: ghcr.io/nomercy-entertainment/nomercymediaserver:latest # To build locally instead of pulling from registry, uncomment: # build: # context: . # dockerfile: Dockerfile restart: unless-stopped ports: - "7626:7626" volumes: # Configuration and data persistence # The app stores all data under $HOME/.local/share/NoMercy/ - nomercy-data:/data/.local/share/NoMercy # Host machine-id (read-only): gives the container a stable, unique server # identity that survives `docker compose down/up` and container recreation. # Without it, a recreated container registers as a brand-new server. - /etc/machine-id:/etc/machine-id:ro # Mount your media libraries (adjust paths as needed) # rw = read-write for metadata, thumbnails, and transcoding - /path/to/your/movies:/media/movies:rw - /path/to/your/tv:/media/tv:rw - /path/to/your/music:/media/music:rw environment: - TZ=UTC - PUID=1000 - PGID=1000 # Server configuration (CLI args take precedence; env vars fill the rest) - NOMERCY_INTERNAL_IP=${HOST_IP:?HOST_IP is required. Set it to this host LAN IP, e.g. export HOST_IP=$(hostname -I | awk '{print $1}')} # - NOMERCY_EXTERNAL_IP=1.2.3.4 # Public IP (auto-detected via UPnP/API) # - NOMERCY_INTERNAL_PORT=7626 # Server port # - NOMERCY_EXTERNAL_PORT=7626 # External port (if different from internal) # - NOMERCY_LOG_LEVEL=Information # Verbose, Debug, Information, Warning, Error, Fatal # - NOMERCY_DEV=true # Development mode healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:7627/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s # Resource limits (optional, adjust as needed) deploy: resources: limits: memory: 4G reservations: memory: 512M volumes: nomercy-data: name: nomercy-data