# Optional browser-accessible GameCube/Wii runtime. Combine with compose.yml after setting DOLPHIN_*. # Both source libraries are mounted read-only; only /config is writable for saves and savestates. services: ludarium: environment: LUDARIUM_DOLPHIN_PLAYER_URL: ${DOLPHIN_PLAYER_URL:?set the trusted-LAN Dolphin URL} LUDARIUM_DOLPHIN_PROXY_URL: https://dolphin:3001/ LUDARIUM_DOLPHIN_PROXY_USERNAME: ${DOLPHIN_REMOTE_USER:?set the Dolphin trusted-LAN username} LUDARIUM_DOLPHIN_PROXY_PASSWORD: ${DOLPHIN_REMOTE_PASSWORD:?set the Dolphin trusted-LAN password} LUDARIUM_DOLPHIN_PROXY_CERT_SHA256: ${DOLPHIN_PROXY_CERT_SHA256:?pin the Dolphin TLS certificate SHA-256} LUDARIUM_DOLPHIN_EMBED_PORT: ${DOLPHIN_EMBED_PORT:-1232} LUDARIUM_DOLPHIN_EMBED_ORIGIN: ${DOLPHIN_EMBED_ORIGIN:-} LUDARIUM_DOLPHIN_CONTROL_URL: http://dolphin:8765/ LUDARIUM_DOLPHIN_CONTROL_TOKEN: ${DOLPHIN_CONTROL_TOKEN:?set the internal Dolphin control token} LUDARIUM_DOLPHIN_FIXTURE_SHA256: ${DOLPHIN_FIXTURE_SHA256:?set after deterministic live launch/save-state validation} LUDARIUM_DOLPHIN_GAMECUBE_CATALOG_PREFIX: ${DOLPHIN_GAMECUBE_CATALOG_PREFIX:-roms/gamecube} LUDARIUM_DOLPHIN_WII_CATALOG_PREFIX: ${DOLPHIN_WII_CATALOG_PREFIX:-roms/wii} ports: - ${DOLPHIN_EMBED_PORT:-1232}:8734 depends_on: dolphin: condition: service_healthy dolphin: container_name: ${DOLPHIN_CONTAINER_NAME:-Ludarium-Dolphin} image: ${DOLPHIN_IMAGE:-ludarium/dolphin-controller:0.4.19-rc.8} build: context: .. dockerfile: Dockerfile.dolphin-controller labels: net.unraid.docker.webui: "${DOLPHIN_PUBLIC_URL:-http://[IP]:[PORT:1263]/}" net.unraid.docker.icon: "/boot/config/plugins/dockerMan/images/Ludarium-icon.svg" net.unraid.docker.managed: "dockerman" net.unraid.docker.shell: "" environment: PUID: ${PUID:-1654} PGID: ${PGID:-1654} TZ: ${TZ:-Europe/Brussels} PIXELFLUX_WAYLAND: "true" DRINODE: ${DOLPHIN_DRI_NODE:-/dev/dri/renderD128} DRI_NODE: ${DOLPHIN_DRI_NODE:-/dev/dri/renderD128} START_DOCKER: "false" DISABLE_IPV6: "true" CUSTOM_USER: ${DOLPHIN_REMOTE_USER:?set the Dolphin trusted-LAN username} PASSWORD: ${DOLPHIN_REMOTE_PASSWORD:?set the Dolphin trusted-LAN password} LUDARIUM_DOLPHIN_CONTROL_TOKEN: ${DOLPHIN_CONTROL_TOKEN:?set the internal Dolphin control token} # App-owned save directory the Game Data Vault captures and restores. Override only when a # different Dolphin build stores its saves and states elsewhere. LUDARIUM_DOLPHIN_SAVE_ROOT: ${DOLPHIN_SAVE_ROOT:-/config/.local/share/dolphin-emu} TITLE: Ludarium Dolphin FILE_MANAGER_PATH: /games SUBFOLDER: /dolphin-player/ HARDEN_DESKTOP: "true" HARDEN_OPENBOX: "true" SELKIES_ENABLE_SHARING: "false|locked" SELKIES_ENABLE_COLLAB: "false|locked" SELKIES_ENABLE_SHARED: "false|locked" SELKIES_FILE_TRANSFERS: "none|locked" SELKIES_COMMAND_ENABLED: "false|locked" SELKIES_CLIPBOARD_ENABLED: "false|locked" SELKIES_MICROPHONE_ENABLED: "false|locked" SELKIES_UI_SIDEBAR_SHOW_CLIPBOARD: "false|locked" SELKIES_UI_SIDEBAR_SHOW_FILES: "false|locked" SELKIES_UI_SIDEBAR_SHOW_APPS: "false|locked" MAX_RES: 3840x2160 ports: - ${DOLPHIN_REMOTE_PORT:-1263}:3001 devices: - /dev/dri:/dev/dri shm_size: 1gb volumes: - ${DOLPHIN_DATA_ROOT:?set isolated app-owned Dolphin data}/config:/config:rw - ${DOLPHIN_GAMECUBE_LIBRARY:?set the GameCube source library}:/games/gamecube:ro - ${DOLPHIN_WII_LIBRARY:?set the Wii source library}:/games/wii:ro security_opt: - no-new-privileges:true healthcheck: test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8765/health', timeout=3).read()"] interval: 10s timeout: 5s retries: 12 start_period: 30s restart: unless-stopped