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
351 lines
11 KiB
JSON
351 lines
11 KiB
JSON
[
|
|
{
|
|
"CreatedAt": "2025-07-24T11:48:58-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/0c31f3704137a3c4b0d2acc8070b5c2a432e785536274638736245d94f19ac1f/_data",
|
|
"Name": "0c31f3704137a3c4b0d2acc8070b5c2a432e785536274638736245d94f19ac1f",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-24T11:24:45-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/2cb6254e43f1a79bb9434eb6d35194328dbbb1b9c1cdc259fe0cbb829166cea3/_data",
|
|
"Name": "2cb6254e43f1a79bb9434eb6d35194328dbbb1b9c1cdc259fe0cbb829166cea3",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-26T21:57:49-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/51b29b24122015eeb7902f2b59ee6ffa36986d9055d582d88a45a7b8d571e8d1/_data",
|
|
"Name": "51b29b24122015eeb7902f2b59ee6ffa36986d9055d582d88a45a7b8d571e8d1",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-24T11:48:53-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/203e339e501e528c426ed6bc8757d9da8449d7e1f344c92759945a3eedb349cc/_data",
|
|
"Name": "203e339e501e528c426ed6bc8757d9da8449d7e1f344c92759945a3eedb349cc",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-06-01T19:46:10-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/675098f711eec0e5dc7fde8a9246ac34b07ae8783e1b2d4c076acebb37cc03c0/_data",
|
|
"Name": "675098f711eec0e5dc7fde8a9246ac34b07ae8783e1b2d4c076acebb37cc03c0",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-26T21:57:49-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/be2fdd310d999c397b05a9c24247d14f09dc5aa18a45c6eaf6515590907d40d2/_data",
|
|
"Name": "be2fdd310d999c397b05a9c24247d14f09dc5aa18a45c6eaf6515590907d40d2",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-26T22:00:27-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/c9fdee8b81debd68a68755c390c8d9941539953f73fcf7f308d59d6ab494f4fa/_data",
|
|
"Name": "c9fdee8b81debd68a68755c390c8d9941539953f73fcf7f308d59d6ab494f4fa",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-25T12:36:38-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "be3f959279dd07187f7ccc94653cbc40bc8c6648f093a530518bc3ff7f0c7685",
|
|
"com.docker.compose.project": "coding",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "immich-model-cache"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/coding_immich-model-cache/_data",
|
|
"Name": "coding_immich-model-cache",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-25T12:36:38-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "7af96f2dae00b714d54565cf84af1547834ba8e3ccd226fcdc8c96bd3e583023",
|
|
"com.docker.compose.project": "coding",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "immich-pgdata"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/coding_immich-pgdata/_data",
|
|
"Name": "coding_immich-pgdata",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-25T12:37:07-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "6688529f3263bb1ab67cb8e35af0c2acaaab0f1410fe6545c26a751043d708c2",
|
|
"com.docker.compose.project": "docker",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "grafana_data"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/docker_grafana_data/_data",
|
|
"Name": "docker_grafana_data",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-24T11:24:45-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "31bd50b512ef3a378e1f3536a27c84bdcd585be7206a19428256d16b331c3152",
|
|
"com.docker.compose.project": "docker",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "mongodb_data"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/docker_mongodb_data/_data",
|
|
"Name": "docker_mongodb_data",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-23T13:14:13-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "fc9c3243864dd27a923dba18ebe0743bc1bd63150910bb22573d03430e222307",
|
|
"com.docker.compose.project": "docker",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "postgres_data"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/docker_postgres_data/_data",
|
|
"Name": "docker_postgres_data",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-25T12:37:07-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "c98c8616d8d605e1f65187d17f05260a4f85d90bd6b3d593a90f189fdd89d06f",
|
|
"com.docker.compose.project": "docker",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "prometheus_data"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/docker_prometheus_data/_data",
|
|
"Name": "docker_prometheus_data",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-07-24T11:24:45-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "4d42b72039b56d337e6236e86498c1bad103c5f26aedf48c34019c813797225c",
|
|
"com.docker.compose.project": "docker",
|
|
"com.docker.compose.version": "2.38.2",
|
|
"com.docker.compose.volume": "redis_data"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/docker_redis_data/_data",
|
|
"Name": "docker_redis_data",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-06-01T19:45:47-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.volume.anonymous": ""
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/f28d9e11738602e7371c14b6894cd2f3cb7a84376eeb1ab587d94b2405048da7/_data",
|
|
"Name": "f28d9e11738602e7371c14b6894cd2f3cb7a84376eeb1ab587d94b2405048da7",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-05-28T08:59:16-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "ecdb959c693df091c947e0e4ac1e27dab9f87c367af3beee3b233a2f541452f4",
|
|
"com.docker.compose.project": "raggraph",
|
|
"com.docker.compose.version": "2.36.0",
|
|
"com.docker.compose.volume": "neo4j_data"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/raggraph_neo4j_data/_data",
|
|
"Name": "raggraph_neo4j_data",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-05-28T08:59:16-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "c0047c768f81bb034e9d72470b81bff79ba4b60ab1996a8ba2d92b5f8a5ec5c9",
|
|
"com.docker.compose.project": "raggraph",
|
|
"com.docker.compose.version": "2.36.0",
|
|
"com.docker.compose.volume": "neo4j_logs"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/raggraph_neo4j_logs/_data",
|
|
"Name": "raggraph_neo4j_logs",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-05-28T08:59:16-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.compose.config-hash": "76b28164e831ff38581d4553898549d9c7a72bcc8e08c076b75fdf4e1bbbed7f",
|
|
"com.docker.compose.project": "raggraph",
|
|
"com.docker.compose.version": "2.36.0",
|
|
"com.docker.compose.volume": "neo4j_plugins"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/raggraph_neo4j_plugins/_data",
|
|
"Name": "raggraph_neo4j_plugins",
|
|
"Options": null,
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-08-28T14:54:52-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.stack.namespace": "traefik-test"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/traefik-test_traefik_test_logs/_data",
|
|
"Name": "traefik-test_traefik_test_logs",
|
|
"Options": {
|
|
"device": "/opt/traefik-test/logs",
|
|
"o": "bind",
|
|
"type": "none"
|
|
},
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-08-28T09:30:21-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.stack.namespace": "traefik"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/traefik_nginx_config/_data",
|
|
"Name": "traefik_nginx_config",
|
|
"Options": {
|
|
"device": "/home/jonathan/Coding/HomeAudit/stacks/core/nginx-config",
|
|
"o": "bind",
|
|
"type": "none"
|
|
},
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-08-28T09:30:21-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.stack.namespace": "traefik"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/traefik_nginx_logs/_data",
|
|
"Name": "traefik_nginx_logs",
|
|
"Options": {},
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-08-28T09:44:46-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.stack.namespace": "traefik"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/traefik_traefik_dynamic/_data",
|
|
"Name": "traefik_traefik_dynamic",
|
|
"Options": {},
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-08-28T09:30:21-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.stack.namespace": "traefik"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/traefik_traefik_letsencrypt/_data",
|
|
"Name": "traefik_traefik_letsencrypt",
|
|
"Options": {},
|
|
"Scope": "local"
|
|
}
|
|
]
|
|
[
|
|
{
|
|
"CreatedAt": "2025-08-28T09:30:22-04:00",
|
|
"Driver": "local",
|
|
"Labels": {
|
|
"com.docker.stack.namespace": "traefik"
|
|
},
|
|
"Mountpoint": "/var/lib/docker/volumes/traefik_traefik_logs/_data",
|
|
"Name": "traefik_traefik_logs",
|
|
"Options": {},
|
|
"Scope": "local"
|
|
}
|
|
]
|