diff --git a/CLAUDE.md b/CLAUDE.md index a59ac72..f2def55 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -72,7 +72,7 @@ See `docs/MIGRATION_TODO.md` for detailed checklist. **Deploy all**: `deploy` **Check replication**: `ssh zippy journalctl -u replicate-services-to-c1.service -f` **NFS failover**: See `docs/NFS_FAILOVER.md` -**Nomad jobs**: `services/*.hcl` - update paths from `/data/compute` → `/data/services` +**Nomad jobs**: `services/*.hcl` - update paths: `/data/compute/appdata/foo` → `/data/services/foo` (NOT `/data/services/appdata/foo`!) ## Troubleshooting Hints diff --git a/docs/CLUSTER_REVAMP.md b/docs/CLUSTER_REVAMP.md index 1a96d4c..39df502 100644 --- a/docs/CLUSTER_REVAMP.md +++ b/docs/CLUSTER_REVAMP.md @@ -146,7 +146,7 @@ fileSystems."/data/services" = { ## Migration Steps **Important path simplification note:** -- All service paths use `/data/services/*` directly (not `/data/services/appdata/*`) +- All service paths use `/data/services/*` directly (not `/data/services/*`) - Example: `/data/compute/appdata/mysql` → `/data/services/mysql` - Simpler, cleaner, easier to manage @@ -1024,9 +1024,9 @@ EOF - **Priority**: CRITICAL - **Current**: Uses `/data/compute/appdata/mysql` - **Target**: Affinity for zippy, allow c1/c2 -- **Data**: `/data/services/appdata/mysql` (NFS from zippy) +- **Data**: `/data/services/mysql` (NFS from zippy) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/mysql` → `/data/services/appdata/mysql` + - ✏️ Volume path: `/data/compute/appdata/mysql` → `/data/services/mysql` - ✏️ Add affinity: ```hcl affinity { @@ -1050,9 +1050,9 @@ EOF - **Priority**: CRITICAL - **Current**: Uses `/data/compute/appdata/postgres`, `/data/compute/appdata/pgadmin` - **Target**: Affinity for zippy, allow c1/c2 -- **Data**: `/data/services/appdata/postgres`, `/data/services/appdata/pgadmin` (NFS) +- **Data**: `/data/services/postgres`, `/data/services/pgadmin` (NFS) - **Changes**: - - ✏️ Volume paths: `/data/compute/appdata/*` → `/data/services/appdata/*` + - ✏️ Volume paths: `/data/compute/appdata/*` → `/data/services/*` - ✏️ Add affinity and constraint (same as mysql) - **Notes**: Core database for authentik, gitea, plausible, netbox, etc. @@ -1061,9 +1061,9 @@ EOF - **Priority**: CRITICAL - **Current**: Uses `/data/compute/appdata/redis` - **Target**: Affinity for zippy, allow c1/c2 -- **Data**: `/data/services/appdata/redis` (NFS) +- **Data**: `/data/services/redis` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/redis` → `/data/services/appdata/redis` + - ✏️ Volume path: `/data/compute/appdata/redis` → `/data/services/redis` - ✏️ Add affinity and constraint (same as mysql) - **Notes**: Used by authentik, wordpress. Should co-locate with databases. @@ -1093,9 +1093,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/prometheus` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/prometheus` (NFS) +- **Data**: `/data/services/prometheus` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/prometheus` → `/data/services/appdata/prometheus` + - ✏️ Volume path: `/data/compute/appdata/prometheus` → `/data/services/prometheus` - **Notes**: Metrics database. Important for monitoring but not critical for services. #### grafana @@ -1103,9 +1103,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/grafana` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/grafana` (NFS) +- **Data**: `/data/services/grafana` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/grafana` → `/data/services/appdata/grafana` + - ✏️ Volume path: `/data/compute/appdata/grafana` → `/data/services/grafana` - **Notes**: Monitoring UI. Depends on prometheus. #### loki @@ -1113,9 +1113,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/loki` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/loki` (NFS) +- **Data**: `/data/services/loki` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/loki` → `/data/services/appdata/loki` + - ✏️ Volume path: `/data/compute/appdata/loki` → `/data/services/loki` - **Notes**: Log aggregation. Important for debugging. #### vector @@ -1136,9 +1136,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/clickhouse` - **Target**: Affinity for zippy (large dataset), allow c1/c2/c3 -- **Data**: `/data/services/appdata/clickhouse` (NFS) +- **Data**: `/data/services/clickhouse` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/clickhouse` → `/data/services/appdata/clickhouse` + - ✏️ Volume path: `/data/compute/appdata/clickhouse` → `/data/services/clickhouse` - ✏️ Add affinity for zippy (optional, but helps with performance) - **Notes**: Used by plausible. Large time-series data. Important but can be recreated. @@ -1147,7 +1147,7 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/unifi/mongodb` - **Target**: Float on c1/c2/c3 (with unifi) -- **Data**: `/data/services/appdata/unifi/mongodb` (NFS) +- **Data**: `/data/services/unifi/mongodb` (NFS) - **Changes**: See unifi below - **Notes**: Only used by unifi. Should stay with unifi controller. @@ -1158,9 +1158,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/sync/wordpress` (syncthing-managed to avoid slow GlusterFS) - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/wordpress` (NFS from zippy) +- **Data**: `/data/services/wordpress` (NFS from zippy) - **Changes**: - - ✏️ Volume path: `/data/sync/wordpress` → `/data/services/appdata/wordpress` + - ✏️ Volume path: `/data/sync/wordpress` → `/data/services/wordpress` - 📋 **Before cutover**: Copy data from syncthing to zippy: `rsync -av /data/sync/wordpress/ zippy:/persist/services/appdata/wordpress/` - 📋 **After migration**: Remove syncthing configuration for wordpress sync - **Notes**: Production website. Important but can tolerate brief downtime during migration. @@ -1170,9 +1170,9 @@ EOF - **Priority**: no longer used, should wipe - **Current**: Uses `/data/compute/appdata/ghost` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/ghost` (NFS) +- **Data**: `/data/services/ghost` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/ghost` → `/data/services/appdata/ghost` + - ✏️ Volume path: `/data/compute/appdata/ghost` → `/data/services/ghost` - **Notes**: Blog platform (alo.land). Can tolerate downtime. #### gitea @@ -1180,9 +1180,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/gitea/data`, `/data/compute/appdata/gitea/config` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/gitea/*` (NFS) +- **Data**: `/data/services/gitea/*` (NFS) - **Changes**: - - ✏️ Volume paths: `/data/compute/appdata/gitea/*` → `/data/services/appdata/gitea/*` + - ✏️ Volume paths: `/data/compute/appdata/gitea/*` → `/data/services/gitea/*` - **Notes**: Git server. Contains code repositories. Important. #### wiki (tiddlywiki) @@ -1190,7 +1190,7 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/wiki` via host volume mount - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/wiki` (NFS) +- **Data**: `/data/services/wiki` (NFS) - **Changes**: - ✏️ Volume mount path in `volume_mount` blocks - ⚠️ Uses `exec` driver with host volumes - verify NFS mount works with this @@ -1201,9 +1201,9 @@ EOF - **Priority**: LOW - **Current**: Uses `/data/compute/appdata/code` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/code` (NFS) +- **Data**: `/data/services/code` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/code` → `/data/services/appdata/code` + - ✏️ Volume path: `/data/compute/appdata/code` → `/data/services/code` - **Notes**: Web IDE. Low priority, for development only. #### beancount (fava) @@ -1211,9 +1211,9 @@ EOF - **Priority**: MEDIUM - **Current**: Uses `/data/compute/appdata/beancount` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/beancount` (NFS) +- **Data**: `/data/services/beancount` (NFS) - **Changes**: - - ✏️ Volume path: `/data/compute/appdata/beancount` → `/data/services/appdata/beancount` + - ✏️ Volume path: `/data/compute/appdata/beancount` → `/data/services/beancount` - **Notes**: Finance tracking. Low priority. #### adminer @@ -1239,9 +1239,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/evcc/evcc.yaml`, `/data/compute/appdata/evcc/evcc` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/evcc/*` (NFS) +- **Data**: `/data/services/evcc/*` (NFS) - **Changes**: - - ✏️ Volume paths: `/data/compute/appdata/evcc/*` → `/data/services/appdata/evcc/*` + - ✏️ Volume paths: `/data/compute/appdata/evcc/*` → `/data/services/evcc/*` - **Notes**: EV charging controller. Important for daily use. #### vikunja @@ -1249,9 +1249,9 @@ EOF - **Priority**: no longer used, should delete - **Current**: Likely uses `/data/compute/appdata/vikunja` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/vikunja` (NFS) +- **Data**: `/data/services/vikunja` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/vikunja` + - ✏️ Volume paths: Update to `/data/services/vikunja` - **Notes**: Task management. Low priority. #### leantime @@ -1259,9 +1259,9 @@ EOF - **Priority**: no longer used, should delete - **Current**: Likely uses `/data/compute/appdata/leantime` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/leantime` (NFS) +- **Data**: `/data/services/leantime` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/leantime` + - ✏️ Volume paths: Update to `/data/services/leantime` - **Notes**: Project management. Low priority. ### Network Infrastructure @@ -1271,9 +1271,9 @@ EOF - **Priority**: HIGH - **Current**: Uses `/data/compute/appdata/unifi/data`, `/data/compute/appdata/unifi/mongodb` - **Target**: Float on c1/c2/c3/fractal/zippy -- **Data**: `/data/services/appdata/unifi/*` (NFS) +- **Data**: `/data/services/unifi/*` (NFS) - **Changes**: - - ✏️ Volume paths: `/data/compute/appdata/unifi/*` → `/data/services/appdata/unifi/*` + - ✏️ Volume paths: `/data/compute/appdata/unifi/*` → `/data/services/unifi/*` - **Notes**: UniFi network controller. Critical for network management. Has keepalived VIP for stable inform address. Floating is fine. ### Media Stack @@ -1284,10 +1284,10 @@ EOF - **Current**: Uses `/data/compute/appdata/radarr`, `/data/compute/appdata/sonarr`, etc. and `/data/media` - **Target**: **MUST run on fractal** (local /data/media access) - **Data**: - - `/data/services/appdata/radarr` (NFS) - config data + - `/data/services/radarr` (NFS) - config data - `/data/media` (local CIFS mount on fractal, local disk on fractal) - **Changes**: - - ✏️ Volume paths: `/data/compute/appdata/*` → `/data/services/appdata/*` + - ✏️ Volume paths: `/data/compute/appdata/*` → `/data/services/*` - ✏️ **Add constraint**: ```hcl constraint { @@ -1304,9 +1304,9 @@ EOF - **Priority**: HIGH - **Current**: Likely uses `/data/compute/appdata/weewx` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/weewx` (NFS) +- **Data**: `/data/services/weewx` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/weewx` + - ✏️ Volume paths: Update to `/data/services/weewx` - **Notes**: Weather station. Low priority. #### maps @@ -1314,7 +1314,7 @@ EOF - **Priority**: MEDIUM - **Current**: Likely uses `/data/compute/appdata/maps` - **Target**: Float on c1/c2/c3 (or fractal if large tile data) -- **Data**: `/data/services/appdata/maps` (NFS) or `/data/media/maps` if large +- **Data**: `/data/services/maps` (NFS) or `/data/media/maps` if large - **Changes**: - ✏️ Volume paths: Check data size, may want to move to /data/media - **Notes**: Map tiles. Low priority. @@ -1324,9 +1324,9 @@ EOF - **Priority**: LOW - **Current**: Likely uses `/data/compute/appdata/netbox` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/netbox` (NFS) +- **Data**: `/data/services/netbox` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/netbox` + - ✏️ Volume paths: Update to `/data/services/netbox` - **Notes**: IPAM/DCIM. Low priority, for documentation. #### farmos @@ -1334,9 +1334,9 @@ EOF - **Priority**: LOW - **Current**: Likely uses `/data/compute/appdata/farmos` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/farmos` (NFS) +- **Data**: `/data/services/farmos` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/farmos` + - ✏️ Volume paths: Update to `/data/services/farmos` - **Notes**: Farm management. Low priority. #### urbit @@ -1344,9 +1344,9 @@ EOF - **Priority**: LOW - **Current**: Likely uses `/data/compute/appdata/urbit` - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/urbit` (NFS) +- **Data**: `/data/services/urbit` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/urbit` + - ✏️ Volume paths: Update to `/data/services/urbit` - **Notes**: Urbit node. Experimental, low priority. #### webodm @@ -1354,9 +1354,9 @@ EOF - **Priority**: LOW - **Current**: Likely uses `/data/compute/appdata/webodm` - **Target**: Float on c1/c2/c3 (or fractal if processing large imagery from /data/media) -- **Data**: `/data/services/appdata/webodm` (NFS) +- **Data**: `/data/services/webodm` (NFS) - **Changes**: - - ✏️ Volume paths: Update to `/data/services/appdata/webodm` + - ✏️ Volume paths: Update to `/data/services/webodm` - 🤔 May benefit from running on fractal if it processes files from /data/media - **Notes**: Drone imagery processing. Low priority. @@ -1411,7 +1411,7 @@ EOF - **Priority**: MEDIUM - **Current**: Likely same as wiki.hcl - **Target**: Float on c1/c2/c3 -- **Data**: `/data/services/appdata/tiddlywiki` (NFS) +- **Data**: `/data/services/tiddlywiki` (NFS) - **Changes**: Same as wiki.hcl - **Notes**: May be duplicate of wiki.hcl. @@ -1660,7 +1660,7 @@ nomad alloc status 1. ✅ **Where is `/data/sync/wordpress` mounted from?** - **Answer**: Syncthing-managed to avoid slow GlusterFS - - **Action**: Migrate to `/data/services/appdata/wordpress`, remove syncthing config + - **Action**: Migrate to `/data/services/wordpress`, remove syncthing config 2. ✅ **Which services use `/data/media` directly?** - **Answer**: Only media.hcl (radarr, sonarr, plex, qbittorrent) diff --git a/docs/MIGRATION_TODO.md b/docs/MIGRATION_TODO.md index d9f6310..1f8048a 100644 --- a/docs/MIGRATION_TODO.md +++ b/docs/MIGRATION_TODO.md @@ -69,7 +69,7 @@ See [CLUSTER_REVAMP.md](./CLUSTER_REVAMP.md) for detailed procedures. - [ ] unifi.hcl - update paths (includes mongodb) ### Web Applications (HIGH-MEDIUM) -- [ ] wordpress.hcl - update from `/data/sync/wordpress` to `/data/services/appdata/wordpress` +- [ ] wordpress.hcl - update from `/data/sync/wordpress` to `/data/services/wordpress` - [ ] gitea.hcl - update paths - [ ] wiki.hcl - update paths, verify with exec driver - [ ] plausible.hcl - verify (stateless)