Major infrastructure migration and Vaultwarden PostgreSQL troubleshooting

COMPREHENSIVE CHANGES:

INFRASTRUCTURE MIGRATION:
- Migrated services to Docker Swarm on OMV800 (192.168.50.229)
- Deployed PostgreSQL database for Vaultwarden migration
- Updated all stack configurations for Docker Swarm compatibility
- Added comprehensive monitoring stack (Prometheus, Grafana, Blackbox)
- Implemented proper secret management for all services

VAULTWARDEN POSTGRESQL MIGRATION:
- Attempted migration from SQLite to PostgreSQL for NFS compatibility
- Created PostgreSQL stack with proper user/password configuration
- Built custom Vaultwarden image with PostgreSQL support
- Troubleshot persistent SQLite fallback issue despite PostgreSQL config
- Identified known issue where Vaultwarden silently falls back to SQLite
- Added ENABLE_DB_WAL=false to prevent filesystem compatibility issues
- Current status: Old Vaultwarden on lenovo410 still working, new one has config issues

PAPERLESS SERVICES:
- Successfully deployed Paperless-NGX and Paperless-AI on OMV800
- Both services running on ports 8000 and 3000 respectively
- Caddy configuration updated for external access
- Services accessible via paperless.pressmess.duckdns.org and paperless-ai.pressmess.duckdns.org

CADDY CONFIGURATION:
- Updated Caddyfile on Surface (192.168.50.254) for new service locations
- Fixed Vaultwarden reverse proxy to point to new Docker Swarm service
- Removed old notification hub reference that was causing conflicts
- All services properly configured for external access via DuckDNS

BACKUP AND DISCOVERY:
- Created comprehensive backup system for all hosts
- Generated detailed discovery reports for infrastructure analysis
- Implemented automated backup validation scripts
- Created migration progress tracking and verification reports

MONITORING STACK:
- Deployed Prometheus, Grafana, and Blackbox monitoring
- Created infrastructure and system overview dashboards
- Added proper service discovery and alerting configuration
- Implemented performance monitoring for all critical services

DOCUMENTATION:
- Reorganized documentation into logical structure
- Created comprehensive migration playbook and troubleshooting guides
- Added hardware specifications and optimization recommendations
- Documented all configuration changes and service dependencies

CURRENT STATUS:
- Paperless services:  Working and accessible externally
- Vaultwarden:  PostgreSQL configuration issues, old instance still working
- Monitoring:  Deployed and operational
- Caddy:  Updated and working for external access
- PostgreSQL:  Database running, connection issues with Vaultwarden

NEXT STEPS:
- Continue troubleshooting Vaultwarden PostgreSQL configuration
- Consider alternative approaches for Vaultwarden migration
- Validate all external service access
- Complete final migration validation

TECHNICAL NOTES:
- Used Docker Swarm for orchestration on OMV800
- Implemented proper secret management for sensitive data
- Added comprehensive logging and monitoring
- Created automated backup and validation scripts
This commit is contained in:
admin
2025-08-30 20:18:44 -04:00
parent 9ea31368f5
commit 705a2757c1
155 changed files with 16781 additions and 1243 deletions

View File

@@ -0,0 +1,184 @@
# STORAGE CONFIGURATION FIXES - COMPLETE
**Fixed Stack Files to Use Existing Storage Infrastructure**
**Generated:** 2025-08-29
**Status:** COMPLETE - All stack files updated
---
## 🎯 **EXECUTIVE SUMMARY**
**Fixed 9 application stack files** to use existing SMB shares and NFS exports instead of non-existent paths. All services now reference storage that actually exists on OMV800.
### **Storage Strategy Applied:**
- **Use existing SMB shares** for user data and media files
- **Use existing NFS exports** for service configurations
- **Keep database storage local** for performance
- **Maintain existing directory structure** as much as possible
---
## 📋 **FIXES APPLIED**
### **1. Jellyfin (`stacks/apps/jellyfin.yml`)**
**Fixed:**
- `:/export/jellyfin/config``:/export/jellyfin`
- `:/export/media/movies``:/srv/mergerfs/DataPool/Movies`
- `:/export/media/tv``:/srv/mergerfs/DataPool/tv_shows`
**Rationale:** Use existing Movies and tv_shows SMB shares for media, existing jellyfin NFS export for config
### **2. Immich (`stacks/apps/immich.yml`)**
**Fixed:**
- `:/export/immich/data``:/srv/mergerfs/DataPool/immich`
**Rationale:** Use existing immich SMB share for photo data storage
### **3. Nextcloud (`stacks/apps/nextcloud.yml`)**
**Fixed:**
- `:/export/nextcloud/html``:/srv/mergerfs/DataPool/nextcloud`
**Rationale:** Use existing nextcloud SMB share for file storage
### **4. Paperless-NGX (`stacks/apps/paperless.yml`)**
**Fixed:**
- `:/export/paperless/data``:/export/paperless`
- `:/export/paperless/media``:/srv/mergerfs/DataPool/pdfs`
**Rationale:** Use existing pdfs SMB share for document storage, existing paperless NFS export for config
### **5. Gitea (`stacks/apps/gitea.yml`)**
**Fixed:**
- `:/export/gitea/data``:/export/gitea`
**Rationale:** Use existing gitea NFS export for repository storage
### **6. AppFlowy (`stacks/apps/appflowy.yml`)**
**Fixed:**
- `:/export/appflowy/minio``:/srv/mergerfs/DataPool/appflowy`
**Rationale:** Use existing appflowy SMB share for data storage
### **7. Vaultwarden (`stacks/apps/vaultwarden.yml`)**
**Fixed:**
- `:/export/vaultwarden/data``:/export/vaultwarden`
**Rationale:** Use existing vaultwarden NFS export for password database
### **8. AdGuard (`stacks/apps/adguard.yml`)**
**Fixed:**
- `:/export/adguard/conf``:/export/adguard`
**Rationale:** Use existing adguard NFS export for configuration
### **9. Home Assistant (`stacks/apps/homeassistant.yml`)**
**Fixed:**
- `:/export/homeassistant/config``:/export/homeassistant`
**Rationale:** Use existing homeassistant NFS export for configuration
---
## 📊 **STORAGE MAPPING SUMMARY**
### **SMB Shares Used (Direct Mergerfs Access):**
```yaml
Movies: /srv/mergerfs/DataPool/Movies
tv_shows: /srv/mergerfs/DataPool/tv_shows
immich: /srv/mergerfs/DataPool/immich
nextcloud: /srv/mergerfs/DataPool/nextcloud
pdfs: /srv/mergerfs/DataPool/pdfs
appflowy: /srv/mergerfs/DataPool/appflowy
```
### **NFS Exports Used (Bind Mounted):**
```yaml
jellyfin: /export/jellyfin
paperless: /export/paperless
gitea: /export/gitea
vaultwarden: /export/vaultwarden
adguard: /export/adguard
homeassistant: /export/homeassistant
```
### **Local Storage (Databases):**
```yaml
PostgreSQL: Local volume (performance)
MariaDB: Local volume (performance)
Redis: Local volume (performance)
```
---
## ✅ **VERIFICATION CHECKLIST**
### **Storage Paths Verified:**
-**Movies**: `/srv/mergerfs/DataPool/Movies` (exists)
-**TV Shows**: `/srv/mergerfs/DataPool/tv_shows` (exists)
-**Immich**: `/srv/mergerfs/DataPool/immich` (exists)
-**Nextcloud**: `/srv/mergerfs/DataPool/nextcloud` (exists)
-**PDFs**: `/srv/mergerfs/DataPool/pdfs` (exists)
-**AppFlowy**: `/srv/mergerfs/DataPool/appflowy` (exists)
-**Jellyfin**: `/export/jellyfin` (exists)
-**Paperless**: `/export/paperless` (exists)
-**Gitea**: `/export/gitea` (exists)
-**Vaultwarden**: `/export/vaultwarden` (exists)
-**AdGuard**: `/export/adguard` (exists)
-**Home Assistant**: `/export/homeassistant` (exists)
### **Stack Files Updated:**
-`stacks/apps/jellyfin.yml`
-`stacks/apps/immich.yml`
-`stacks/apps/nextcloud.yml`
-`stacks/apps/paperless.yml`
-`stacks/apps/gitea.yml`
-`stacks/apps/appflowy.yml`
-`stacks/apps/vaultwarden.yml`
-`stacks/apps/adguard.yml`
-`stacks/apps/homeassistant.yml`
---
## 🚀 **NEXT STEPS**
### **Immediate Actions:**
1. **Test NFS connectivity** from worker nodes
2. **Deploy corrected Caddyfile** to fix service conflicts
3. **Complete Docker Swarm** cluster setup
4. **Deploy database services** first (PostgreSQL, MariaDB)
### **Service Deployment Order:**
```bash
# 1. Deploy databases first
docker stack deploy -c stacks/databases/postgresql-primary.yml postgresql
docker stack deploy -c stacks/databases/mariadb-primary.yml mariadb
# 2. Deploy simple services
docker stack deploy -c stacks/apps/adguard.yml adguard
docker stack deploy -c stacks/apps/vaultwarden.yml vaultwarden
# 3. Deploy complex services
docker stack deploy -c stacks/apps/jellyfin.yml jellyfin
docker stack deploy -c stacks/apps/immich.yml immich
docker stack deploy -c stacks/apps/nextcloud.yml nextcloud
```
---
## 📈 **EXPECTED RESULTS**
### **Benefits:**
-**Services will start successfully** (no missing storage errors)
-**Data integrity maintained** (using existing storage)
-**Performance optimized** (direct mergerfs access for media)
-**Simplified migration** (no storage reconfiguration needed)
### **Risk Mitigation:**
-**No data loss** (using existing storage)
-**No service disruption** (existing shares remain active)
-**Easy rollback** (can revert to original paths if needed)
---
**Document Status:** Complete
**Next Action:** Proceed with Docker Swarm setup and service deployment
**Risk Level:** LOW - All storage paths verified and existing