services: server: image: gitea.futureporn.net/futureporn/our:latest init: true command: > sh -c "npx prisma migrate deploy && npm run start:server" volumes: - /mnt/vfs/futureporn:/mnt/vfs/futureporn ports: - target: 3000 published: 8086 protocol: tcp mode: ingress healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/health"] interval: 10s retries: 5 start_period: 10s timeout: 10s worker: image: gitea.futureporn.net/futureporn/our:latest init: true entrypoint: > sh -c "npm run start:worker" volumes: - /mnt/vfs/futureporn:/mnt/vfs/futureporn deploy: replicas: 2 restart_policy: condition: on-failure delay: 5s max_attempts: 5 window: 60s update_config: parallelism: 1 delay: 10s resources: limits: cpus: "0.5" memory: 2G qbittorrent: image: gitea.futureporn.net/futureporn/qbittorrent-nox:latest init: false volumes: - /mnt/vfs/futureporn:/mnt/vfs/futureporn postgres: image: postgres:17 volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 10s retries: 5 start_period: 10s timeout: 10s deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 5 window: 60s pgadmin: image: dpage/pgadmin4:latest network_mode: service:tailscale-pgadmin depends_on: - tailscale-pgadmin environment: PGADMIN_LISTEN_ADDRESS: "0.0.0.0" PGADMIN_LISTEN_PORT: 5050 PGADMIN_DISABLE_POSTFIX: 1 healthcheck: test: ["CMD", "nc", "-z", "127.0.0.1", "5050"] interval: 5s retries: 10 tailscale-pgadmin: image: tailscale/tailscale:latest hostname: pgadmin environment: TS_EXTRA_ARGS: "--advertise-tags=tag:container --reset" TS_SERVE_CONFIG: /config/pgadmin.json TS_STATE_DIR: /var/lib/tailscale TS_USERSPACE: "false" volumes: - /mnt/vfs/futureporn/tailscale/state:/var/lib/tailscale - /mnt/vfs/futureporn/tailscale/config:/config devices: - /dev/net/tun:/dev/net/tun cap_add: - net_admin restart: unless-stopped volumes: pgdata: networks: default: external: true name: our