services: vaultwarden_db: container_name: vaultwarden_db image: docker.io/library/postgres:17.5 restart: unless-stopped environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} volumes: - ${APPDATA_PATH}/vaultwarden/db:/var/lib/postgresql/data ports: - ${DB_PORT}:5432 networks: - backend healthcheck: test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"] interval: 30s timeout: 5s retries: 5 start_period: 20s vaultwarden_server: container_name: vaultwarden_server image: ghcr.io/dani-garcia/vaultwarden:1.34.1 restart: unless-stopped depends_on: vaultwarden_db: condition: service_healthy environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@vaultwarden_db:5432/${POSTGRES_DB} - WEBSOCKET_ENABLED=${WEBSOCKET_ENABLED} - LOG_FILE=/data/vaultwarden.log # Uncomment and set these only on first run # - DOMAIN=${DOMAIN} # - SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED} # - ADMIN_TOKEN=${ADMIN_TOKEN} volumes: - ${APPDATA_PATH}/vaultwarden/data:/data ports: - ${SERVER_PORT}:80 networks: - frontend - backend networks: frontend: external: true backend: external: true