services: x360-web: build: . container_name: x360-web-queue restart: unless-stopped init: true ports: - "${WEB_BIND:-0.0.0.0}:${WEB_PORT:-8088}:8000" - "${BT_PORT:-6881}:${BT_PORT:-6881}/tcp" - "${BT_PORT:-6881}:${BT_PORT:-6881}/udp" environment: WEB_USER: ${WEB_USER:?Run ./setup.sh} WEB_PASSWORD: ${WEB_PASSWORD:?Run ./setup.sh} ARIA2_SECRET: ${ARIA2_SECRET:?Run ./setup.sh} BT_PORT: ${BT_PORT:-6881} ARCHIVE_CONNECTIONS: ${ARCHIVE_CONNECTIONS:-50} ENABLE_VIMM_BROWSER: ${ENABLE_VIMM_BROWSER:-true} VIMM_DOWNLOAD_TIMEOUT: ${VIMM_DOWNLOAD_TIMEOUT:-7200} XBOX_HOST_DIR: ${XBOX_HOST_DIR:-/xbox} # Python, Playwright and converter temporary files use host /xbox/work. TMPDIR: /data/work/tmp XDG_CACHE_HOME: /data/work/cache volumes: # Application state, metadata, work, ready files and logs on the host. - type: bind source: ${XBOX_HOST_DIR:-/xbox} target: /data bind: create_host_path: false # Preserve existing /data/raw paths for resumed jobs and aria2 sessions. # Downloads are stored on the host as /xbox/downloads, not /xbox/raw. - type: bind source: ${XBOX_HOST_DIR:-/xbox}/downloads target: /data/raw bind: create_host_path: false shm_size: '512mb' security_opt: - no-new-privileges:true