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/*/