PostgreSQL Data Persistence
Configuration:
postgresql17_postgres:
volumes:
- postgresql17_master_db_data:/var/lib/postgresql/data
Physical Location:/mnt/swarm-data/postgres/data
Database Usage:
- Authentik: User authentication and authorization
- Paperless: Document metadata and search indices
- Vikunja: Task management and projects
- Nextcloud: File metadata and sharing
Connection Pattern:
environment:
POSTGRES_HOST: postgres
POSTGRES_USER: admin
POSTGRES_PASSWORD: [SECRET]
POSTGRES_DB: service_database
MariaDB Configuration
Configuration:
mariadb_mariadb:
volumes:
- mariadb_bookstack_db:/var/lib/mysql
Physical Location:/mnt/swarm-data/mariadb
Database Usage:
- BookStack: Wiki content and user management
Connection Pattern:
environment:
DB_HOST: mariadb
DB_USERNAME: bookstack
DB_PASSWORD: [SECRET]
DB_DATABASE: bookstackapp
Port Exposure: 3306/tcp for external access and administration
Redis Memory Management
Multiple Redis Instances:
Authentik Redis
auth_authentik_redis:
volumes:
- auth_authentik_redis:/data
command: --save 60 1 --loglevel warning
- Purpose: Session storage and caching
- Persistence: Enabled with 60-second snapshots
- Storage:
/mnt/swarm-data/authentik/redis
Nextcloud Redis
nextcloud_redis:
# No persistent volume - memory only
- Purpose: Application caching and session handling
- Persistence: Memory only, no disk storage
- Configuration: Default Redis configuration
Paperless Redis
paperless_paperless_redis:
# No persistent volume - memory only
- Purpose: Task queue and temporary data
- Persistence: Memory only
- Performance: Optimized for speed over persistence
Redis Access Patterns:
# Internal service communication
AUTHENTIK_REDIS__HOST: authentik_redis
REDIS_HOST: redis # Nextcloud
PAPERLESS_REDIS: redis://paperless_redis:6379
Storage Performance Considerations
I/O Patterns:
- Database workloads: Sequential writes, random reads
- File storage: Large file transfers (Nextcloud, Paperless)
- Cache data: High-frequency small operations
Optimization Strategies:
- Database services on SSD storage (manager node)
- Cache services utilize available RAM
- Bind mounts eliminate Docker volume overhead
- Centralized storage reduces network I/O for persistence
Monitoring Storage Usage:
# Check volume usage
docker system df -v
# Monitor storage location
df -h /mnt/swarm-data/
# Individual service storage
du -sh /mnt/swarm-data/*/