services:
  decap-stream:
    image: ghcr.io/riguettodev/decap-stream:latest
    container_name: decap-stream
    restart: unless-stopped
    shm_size: "1gb"
    security_opt:
      - seccomp:unconfined
    # gpus: all                 # Uncomment for NVIDIA (nvenc) — requires nvidia-container-toolkit on host
    # devices:
    #   - /dev/dri:/dev/dri     # Uncomment for Intel/AMD (vaapi or qsv)
    environment:
      TZ: America/Sao_Paulo
      # AUTH_USER: admin              # If set (with AUTH_PASS), enables login
      # AUTH_PASS: secure_password
      DEFAULT_PURE_MODE: false      # Pure mode: raw .m3u8 / minimal player (no UI chrome)
      DEFAULT_OPEN_NEW_TAB: false   # Open player buttons in a new tab
      DEFAULT_RELOAD_CLIENT: false  # Auto-reload the client player page
      DEFAULT_RELOAD_CLIENT_TIME: 2 # Client auto-reload interval in minutes
      # FFMPEG_HWACCEL: nvenc         # GPU encoding: nvenc (NVIDIA), vaapi / qsv (Intel/AMD)
      # LD_LIBRARY_PATH: /usr/lib/wsl/lib  # WSL2 + nvenc only
    ports:
      - "3000:3000"             # Web UI — main entry point
      - "127.0.0.1:6080:6080"   # noVNC — localhost only; expose via tunnel/VPN for remote access
      # - "1935:1935"           # RTMP — expose only for external ingest (e.g. OBS)
      # - "8888:8888"           # HLS  — internal only; proxied through Next.js at /api/hls/
    volumes:
      - streams:/app/data/streams   # Persistent: streams.json, chrome profiles, thumbnails
      # - ./logs:/app/data/logs     # Optional: mount for external log access
      # - /usr/lib/wsl/lib:/usr/lib/wsl/lib:ro  # WSL2 + nvenc: exposes libnvidia-encode.so.1

volumes:
  streams:
