NVMe SSD Storage Node Configuration
Primary Storage Location:/mnt/swarm-data/
All persistent data is consolidated on the manager node (p0) with the following directory structure:
/mnt/swarm-data/
├── authentik/
│ ├── media/ # User avatars, logos
│ ├── redis/ # Authentication cache
│ └── templates/ # Custom email templates
├── bookstack/
│ └── data/ # Wiki configuration
├── homarr/
│ ├── configs/ # Dashboard configuration
│ └── icons/ # Custom icons
├── mariadb/ # MariaDB database files
├── nextcloud/
│ └── data/ # File synchronization storage
├── paperless/
│ ├── data/ # Application data
│ ├── media/ # Processed documents
│ ├── export/ # Export directory
│ └── consume/ # Incoming documents
├── portainer/ # Container management data
├── postgres/
│ └── data/ # PostgreSQL database cluster
├── traefik/
│ ├── certificates/ # SSL certificates
│ └── dynamic/ # Dynamic configuration
├── uptime-kuma/ # Monitoring database
└── vikunja/
└── files/ # Task attachments
Cross-Node Data Accessibility
Centralized Storage Benefits:
- Single backup location for all persistent data
- Simplified disaster recovery procedures
- No data synchronization complexity
- Consistent storage performance
Service Placement Implications:
# Services requiring storage access run on manager node
deployment:
placement:
constraints: [node.hostname == p0]
Network Storage Access:
- Worker nodes access data through service APIs
- No direct filesystem access required
- Eliminates network filesystem complexity
Backup and Recovery Considerations
Backup Strategy:
- Direct filesystem backup of
/mnt/swarm-data/
- Database dumps for PostgreSQL and MariaDB
- Application-specific export procedures
- Certificate backup included in Traefik directory
Recovery Procedures:
- Restore
/mnt/swarm-data/
directory structure - Redeploy Docker stacks
- Services automatically reconnect to persistent data