# Oneirodex — single container (PostgreSQL embedded). # # cp .env.single.example .env # configure persistent paths first # docker compose -f docker-compose.single.yml up -d # # PostgreSQL and generated secrets live under /config. Existing app settings can # be supplied with APP_ENV_FILE (default .env). For a separate Postgres service, # use docker-compose.yml. services: oneirodex: build: context: . dockerfile: Dockerfile args: ONEIRODEX_BUILD_SHA: ${ONEIRODEX_BUILD_SHA:-} ONEIRODEX_BUILT_AT: ${ONEIRODEX_BUILT_AT:-} image: ${APP_IMAGE:-oneirodex:1.1.9} container_name: ${APP_CONTAINER_NAME:-oneirodex-app} restart: unless-stopped ports: - "5006:5006" env_file: - ${APP_ENV_FILE:-.env} environment: ONEIRODEX_EMBEDDED_DB: "true" ONEIRODEX_CONFIG_DIR: /config DATABASE_URL: "" DATABASE_HOST: "" DATABASE_PORT: "" POSTGRES_DB: ${POSTGRES_DB:-oneirodex} PUID: ${PUID:-99} PGID: ${PGID:-100} TZ: ${TZ:-UTC} DATA_FOLDER_GAMES: /storage UPLOAD_FOLDER: /app/oneirodex/static/library # Secure cookies are required by default; set false only for deliberate # direct-HTTP LAN/development access (cookies can then cross the network). SESSION_COOKIE_SECURE: ${SESSION_COOKIE_SECURE:-true} REMEMBER_COOKIE_SECURE: ${REMEMBER_COOKIE_SECURE:-true} CHAT_ATTACHMENT_STORAGE_MAX_BYTES: ${CHAT_ATTACHMENT_STORAGE_MAX_BYTES:-1073741824} CHAT_ATTACHMENT_STORAGE_MAX_FILES: ${CHAT_ATTACHMENT_STORAGE_MAX_FILES:-10000} extra_hosts: - "host.docker.internal:host-gateway" volumes: - "${APPDATA_PATH:-./appdata}:/config" - "${DATA_FOLDER_GAMES:-./games}:/storage:ro" - "${LIBRARY_HOST_PATH:-./data/library}:/app/oneirodex/static/library" - "${WEBRETRO_CORES_HOST_PATH:-./data/webretro-cores}:/app/oneirodex/static/vendor/webretro/cores" stop_grace_period: 60s healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:5006/awake || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 90s