RESOLVED ISSUES: - Fixed Vaultwarden silently falling back to SQLite despite PostgreSQL configuration - Resolved GitHub issue #2835 silent fallback behavior in production environment - Eliminated PostgreSQL connection failures causing service startup problems CONFIGURATION FIXES: - PostgreSQL service: Simplified to use direct environment variables instead of Docker secrets - Vaultwarden service: Changed from DATABASE_URL_FILE to direct DATABASE_URL environment variable - Added proper service dependencies with depends_on: postgres - Removed conflicting Dockerfile.vaultwarden with hardcoded DATABASE_URL - Added debug logging (LOG_LEVEL: debug) for troubleshooting connection issues - Added DATABASE_MAX_CONNS: 10 to force database URL validation INFRASTRUCTURE UPDATES: - PostgreSQL 15.14 running successfully with vaultwarden:vaultwarden123 credentials - Vaultwarden 1.30.5 now properly using PostgreSQL instead of SQLite - All 26 Vaultwarden database tables successfully migrated to PostgreSQL - Service health checks passing: /alive endpoint returns 200 OK - Docker Swarm services: postgres_postgres (1/1), vaultwarden_vaultwarden (1/1) VERIFICATION RESULTS: ✅ PostgreSQL connectivity confirmed and database schema created ✅ Vaultwarden service fully operational on port 8088 ✅ NFS compatibility achieved by eliminating SQLite dependency ✅ Silent fallback issue permanently resolved This resolves the major infrastructure migration blocker identified in previous commits. The Vaultwarden service is now ready for production use with PostgreSQL backend. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Stacks Overview
This directory contains Docker Swarm stack files for the new architecture.
Prerequisites
- Overlay networks (create once on the manager):
traefik-publicdatabase-networkmonitoring-network
docker network create --driver overlay --attachable traefik-public
docker network create --driver overlay --attachable database-network
docker network create --driver overlay --attachable monitoring-network
- Docker secrets (examples):
printf 'StrongPostgresRoot' | docker secret create pg_root_password -
printf 'StrongMariaRoot' | docker secret create mariadb_root_password -
printf 'gitea-db-pass' | docker secret create gitea_db_password -
printf 'nextcloud-pass' | docker secret create nextcloud_db_password -
printf 'smtp-user' | docker secret create smtp_user -
printf 'smtp-pass' | docker secret create smtp_pass -
printf 'postgres://user:pass@postgresql_primary:5432/db' | docker secret create appflowy_db_url -
printf 'minioadmin' | docker secret create minio_access_key -
printf 'minioadminsecret' | docker secret create minio_secret_key -
- NFS exports on
omv800.localmatching thedriver_optsin stack volumes.
Deploy examples
docker stack deploy -c stacks/core/traefik.yml traefik
docker stack deploy -c stacks/databases/postgresql-primary.yml postgresql
docker stack deploy -c stacks/databases/mariadb-primary.yml mariadb
docker stack deploy -c stacks/databases/redis-cluster.yml redis
docker stack deploy -c stacks/apps/homeassistant.yml homeassistant
docker stack deploy -c stacks/apps/immich.yml immich
docker stack deploy -c stacks/apps/nextcloud.yml nextcloud
docker stack deploy -c stacks/apps/paperless.yml paperless
docker stack deploy -c stacks/apps/jellyfin.yml jellyfin
docker stack deploy -c stacks/apps/gitea.yml gitea
docker stack deploy -c stacks/apps/appflowy.yml appflowy
docker stack deploy -c stacks/apps/vaultwarden.yml vaultwarden
docker stack deploy -c stacks/apps/adguard.yml adguard
docker stack deploy -c stacks/web/caddy.yml caddy
docker stack deploy -c stacks/ai/ollama.yml ollama
docker stack deploy -c stacks/monitoring/netdata.yml netdata
Notes
- Pin image versions and avoid
:latestin production. - Use DNS or host pinning for stateful services.
- Consider placement constraints (
node.labels.role).