# Run the server stack (backend API + admin panel) on any Docker host. # docker compose up -d --build # Set secrets in a .env file next to this (ADMIN_PASSWORD, ASIANMETAL_TOKEN, ...). services: api: build: context: ./backend image: didvan-api restart: unless-stopped ports: - "8000:8000" environment: DB_PATH: /data/asianmetal.db REPORTS_DIR: /data/reports ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-http://localhost:5174} COOKIE_SECURE: ${COOKIE_SECURE:-0} COOKIE_SAMESITE: ${COOKIE_SAMESITE:-lax} SEED_ADMIN: ${SEED_ADMIN:-0} TRUSTED_PROXY_CIDRS: ${TRUSTED_PROXY_CIDRS:-127.0.0.1/32,::1/128,172.16.0.0/12} ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD in .env} ASIANMETAL_TOKEN: ${ASIANMETAL_TOKEN:-} volumes: - didvan-data:/data # Chromium needs more shared memory than the 64MB default shm_size: "1gb" # Admin panel — keep it OFF public networks. Uncomment to run it (local/VPN only). # admin: # build: { context: . , dockerfile: admin/Dockerfile } # image: didvan-admin # restart: unless-stopped # ports: ["127.0.0.1:8001:8001"] # environment: # DB_PATH: /data/asianmetal.db # ADMIN_USER: ${ADMIN_USER:-admin} # ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD in .env} # volumes: [ "didvan-data:/data" ] volumes: didvan-data: