From 50a99f022c7ea63a5529d9ec36840c1528a78a0e Mon Sep 17 00:00:00 2001 From: jochen Date: Sat, 26 Sep 2026 16:47:24 +0200 Subject: [PATCH] Module data lives in /var/lib, now that nothing is mid-cutover MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The /services paths were the adopted-node pattern doing its job: take replaced containers over the predecessor's data without moving a byte (gitea set it — 'its data never moved'). With every cutover done the exception has no reason left, and the operator called it: a nox module's world is /var/lib/, data included. Six modules repathed; mssql keeps its /services path deliberately — it is still held, HAL-run, and moves at its own take. Both trees are one filesystem, so each move is a rename. --- modules/gitea/module.json | 6 +-- modules/mailu/module.json | 68 ++++++++++++++++----------------- modules/mongodb/module.json | 4 +- modules/nextcloud/module.json | 4 +- modules/only-office/module.json | 28 +++++++------- modules/portainer/module.json | 4 +- 6 files changed, 57 insertions(+), 57 deletions(-) diff --git a/modules/gitea/module.json b/modules/gitea/module.json index 6961880..a7c55ed 100644 --- a/modules/gitea/module.json +++ b/modules/gitea/module.json @@ -121,7 +121,7 @@ { "id": "data", "type": "directory", - "path": "/services/gitea/gitea", + "path": "/var/lib/gitea/data", "mode": "0700", "owner": "1000:1000" }, @@ -143,7 +143,7 @@ "222:22" ], "volumes": [ - "/services/gitea/gitea:/data" + "/var/lib/gitea/data:/data" ], "secrets-in-environment": "gitea honours GITEA__database__PASSWD__FILE and GITEA__security__INTERNAL_TOKEN__FILE; convertible, awaiting a bed that proves it" }, @@ -162,7 +162,7 @@ "/var/lib/gitea/server.env" ], "volumes": [ - "/services/gitea/gitea:/data", + "/var/lib/gitea/data:/data", "/var/lib/gitea/admin.secret:/run/secrets/admin:ro" ], "args": [ diff --git a/modules/mailu/module.json b/modules/mailu/module.json index a329701..6ee1874 100644 --- a/modules/mailu/module.json +++ b/modules/mailu/module.json @@ -152,7 +152,7 @@ { "id": "data-automx", "type": "directory", - "path": "/services/mailu/data/automx", + "path": "/var/lib/mailu/data/automx", "mode": "0700" }, { @@ -186,97 +186,97 @@ { "id": "data-certs", "type": "directory", - "path": "/services/mailu/data/certs", + "path": "/var/lib/mailu/data/certs", "mode": "0700" }, { "id": "data-data", "type": "directory", - "path": "/services/mailu/data/data", + "path": "/var/lib/mailu/data/data", "mode": "0700" }, { "id": "data-dkim", "type": "directory", - "path": "/services/mailu/data/dkim", + "path": "/var/lib/mailu/data/dkim", "mode": "0700" }, { "id": "data-mail", "type": "directory", - "path": "/services/mailu/data/mail", + "path": "/var/lib/mailu/data/mail", "mode": "0700" }, { "id": "data-mailqueue", "type": "directory", - "path": "/services/mailu/data/mailqueue", + "path": "/var/lib/mailu/data/mailqueue", "mode": "0755" }, { "id": "data-filter", "type": "directory", - "path": "/services/mailu/data/filter", + "path": "/var/lib/mailu/data/filter", "mode": "0700" }, { "id": "data-clamav", "type": "directory", - "path": "/services/mailu/data/clamav", + "path": "/var/lib/mailu/data/clamav", "mode": "0700" }, { "id": "data-redis", "type": "directory", - "path": "/services/mailu/data/redis", + "path": "/var/lib/mailu/data/redis", "mode": "0700" }, { "id": "data-webmail", "type": "directory", - "path": "/services/mailu/data/webmail", + "path": "/var/lib/mailu/data/webmail", "mode": "0700" }, { "id": "data-dav", "type": "directory", - "path": "/services/mailu/data/dav", + "path": "/var/lib/mailu/data/dav", "mode": "0700" }, { "id": "data-fetchmail", "type": "directory", - "path": "/services/mailu/data/data/fetchmail", + "path": "/var/lib/mailu/data/data/fetchmail", "mode": "0700" }, { "id": "data-overrides-nginx", "type": "directory", - "path": "/services/mailu/data/overrides/nginx", + "path": "/var/lib/mailu/data/overrides/nginx", "mode": "0700" }, { "id": "data-overrides-dovecot", "type": "directory", - "path": "/services/mailu/data/overrides/dovecot", + "path": "/var/lib/mailu/data/overrides/dovecot", "mode": "0700" }, { "id": "data-overrides-postfix", "type": "directory", - "path": "/services/mailu/data/overrides/postfix", + "path": "/var/lib/mailu/data/overrides/postfix", "mode": "0700" }, { "id": "data-overrides-rspamd", "type": "directory", - "path": "/services/mailu/data/overrides/rspamd", + "path": "/var/lib/mailu/data/overrides/rspamd", "mode": "0700" }, { "id": "data-overrides-roundcube", "type": "directory", - "path": "/services/mailu/data/overrides/roundcube", + "path": "/var/lib/mailu/data/overrides/roundcube", "mode": "0700" }, { @@ -304,7 +304,7 @@ "image": "redis@sha256:4bed291aa5efb9f0d77b76ff7d4ab71eee410962965d052552db1fb80576431d", "network": "mailu", "volumes": [ - "/services/mailu/data/redis:/data" + "/var/lib/mailu/data/redis:/data" ] }, { @@ -320,8 +320,8 @@ "/var/lib/mailu/admin.env" ], "volumes": [ - "/services/mailu/data/data:/data", - "/services/mailu/data/dkim:/dkim" + "/var/lib/mailu/data/data:/data", + "/var/lib/mailu/data/dkim:/dkim" ], "secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified", "dns": [ @@ -338,8 +338,8 @@ "/var/lib/mailu/mailu.env" ], "volumes": [ - "/services/mailu/data/mail:/mail", - "/services/mailu/data/overrides/dovecot:/overrides:ro" + "/var/lib/mailu/data/mail:/mail", + "/var/lib/mailu/data/overrides/dovecot:/overrides:ro" ], "dns": [ "192.168.203.254" @@ -355,8 +355,8 @@ "/var/lib/mailu/mailu.env" ], "volumes": [ - "/services/mailu/data/mailqueue:/queue", - "/services/mailu/data/overrides/postfix:/overrides:ro" + "/var/lib/mailu/data/mailqueue:/queue", + "/var/lib/mailu/data/overrides/postfix:/overrides:ro" ], "dns": [ "192.168.203.254" @@ -372,8 +372,8 @@ "/var/lib/mailu/mailu.env" ], "volumes": [ - "/services/mailu/data/filter:/var/lib/rspamd", - "/services/mailu/data/overrides/rspamd:/etc/rspamd/override.d:ro" + "/var/lib/mailu/data/filter:/var/lib/rspamd", + "/var/lib/mailu/data/overrides/rspamd:/etc/rspamd/override.d:ro" ], "dns": [ "192.168.203.254" @@ -386,7 +386,7 @@ "image": "clamav/clamav-debian@sha256:b12ef8fefddbba7d88de59bea8a32622f365339154adf02d38fd089112e6745a", "network": "mailu", "volumes": [ - "/services/mailu/data/clamav:/var/lib/clamav" + "/var/lib/mailu/data/clamav:/var/lib/clamav" ], "dns": [ "192.168.203.254" @@ -403,8 +403,8 @@ "/var/lib/mailu/secret.env" ], "volumes": [ - "/services/mailu/data/webmail:/data", - "/services/mailu/data/overrides/roundcube:/overrides:ro" + "/var/lib/mailu/data/webmail:/data", + "/var/lib/mailu/data/overrides/roundcube:/overrides:ro" ], "secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified", "dns": [ @@ -422,7 +422,7 @@ "/var/lib/mailu/secret.env" ], "volumes": [ - "/services/mailu/data/dav:/data" + "/var/lib/mailu/data/dav:/data" ], "secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified", "dns": [ @@ -440,7 +440,7 @@ "/var/lib/mailu/secret.env" ], "volumes": [ - "/services/mailu/data/data/fetchmail:/data" + "/var/lib/mailu/data/data/fetchmail:/data" ], "secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified", "dns": [ @@ -468,8 +468,8 @@ "7443:443" ], "volumes": [ - "/services/mailu/data/certs:/certs", - "/services/mailu/data/overrides/nginx:/overrides:ro" + "/var/lib/mailu/data/certs:/certs", + "/var/lib/mailu/data/overrides/nginx:/overrides:ro" ], "dns": [ "192.168.203.254" @@ -522,7 +522,7 @@ "4243" ], "volumes": [ - "/services/mailu/data/automx:/data" + "/var/lib/mailu/data/automx:/data" ] } ], diff --git a/modules/mongodb/module.json b/modules/mongodb/module.json index d228b95..a62a7c7 100644 --- a/modules/mongodb/module.json +++ b/modules/mongodb/module.json @@ -64,7 +64,7 @@ { "id": "data", "type": "directory", - "path": "/services/mongodb/db-data", + "path": "/var/lib/mongodb/data", "mode": "0700" }, { @@ -86,7 +86,7 @@ "27017" ], "volumes": [ - "/services/mongodb/db-data:/data/db", + "/var/lib/mongodb/data:/data/db", "/var/lib/mongodb/root.secret:/run/secrets/root:ro" ] }, diff --git a/modules/nextcloud/module.json b/modules/nextcloud/module.json index ac0493a..88a6a56 100644 --- a/modules/nextcloud/module.json +++ b/modules/nextcloud/module.json @@ -67,7 +67,7 @@ { "id": "html", "type": "directory", - "path": "/services/nextcloud/html", + "path": "/var/lib/nextcloud-module/html", "mode": "0750", "owner": "33:33" }, @@ -83,7 +83,7 @@ "80" ], "volumes": [ - "/services/nextcloud/html:/var/www/html" + "/var/lib/nextcloud-module/html:/var/www/html" ], "secrets-in-environment": "the image honours POSTGRES_PASSWORD_FILE and NEXTCLOUD_ADMIN_PASSWORD_FILE (entrypoint file_env); OBJECTSTORE_S3_SECRET has none and needs a generated config fragment; convertible, awaiting a bed" }, diff --git a/modules/only-office/module.json b/modules/only-office/module.json index 5afcf62..660589b 100644 --- a/modules/only-office/module.json +++ b/modules/only-office/module.json @@ -45,43 +45,43 @@ { "id": "logs", "type": "directory", - "path": "/services/only-office/logs", + "path": "/var/lib/only-office/logs", "mode": "0700" }, { "id": "data", "type": "directory", - "path": "/services/only-office/data", + "path": "/var/lib/only-office/data", "mode": "0700" }, { "id": "lib", "type": "directory", - "path": "/services/only-office/lib", + "path": "/var/lib/only-office/lib", "mode": "0700" }, { "id": "db", "type": "directory", - "path": "/services/only-office/db", + "path": "/var/lib/only-office/db", "mode": "0700" }, { "id": "rabbitmq", "type": "directory", - "path": "/services/only-office/rabbitmq", + "path": "/var/lib/only-office/rabbitmq", "mode": "0700" }, { "id": "redis", "type": "directory", - "path": "/services/only-office/redis", + "path": "/var/lib/only-office/redis", "mode": "0700" }, { "id": "fonts", "type": "directory", - "path": "/services/only-office/fonts", + "path": "/var/lib/only-office/fonts", "mode": "0700" }, { @@ -102,13 +102,13 @@ "9070:80" ], "volumes": [ - "/services/only-office/logs:/var/log/onlyoffice", - "/services/only-office/data:/var/www/onlyoffice/Data", - "/services/only-office/lib:/var/lib/onlyoffice", - "/services/only-office/db:/var/lib/postgresql", - "/services/only-office/rabbitmq:/var/lib/rabbitmq", - "/services/only-office/redis:/var/lib/redis", - "/services/only-office/fonts:/usr/share/fonts/truetype/custom" + "/var/lib/only-office/logs:/var/log/onlyoffice", + "/var/lib/only-office/data:/var/www/onlyoffice/Data", + "/var/lib/only-office/lib:/var/lib/onlyoffice", + "/var/lib/only-office/db:/var/lib/postgresql", + "/var/lib/only-office/rabbitmq:/var/lib/rabbitmq", + "/var/lib/only-office/redis:/var/lib/redis", + "/var/lib/only-office/fonts:/usr/share/fonts/truetype/custom" ], "secrets-in-environment": "run-document-server.sh regenerates JWT_SECRET from the environment on every start and overwrites local.json; not convertible" } diff --git a/modules/portainer/module.json b/modules/portainer/module.json index 2bc5c97..4a75db9 100644 --- a/modules/portainer/module.json +++ b/modules/portainer/module.json @@ -29,7 +29,7 @@ { "id": "data", "type": "directory", - "path": "/services/portainer/portainer_data", + "path": "/var/lib/portainer/data", "mode": "0700" }, { @@ -42,7 +42,7 @@ "9443:9443" ], "volumes": [ - "/services/portainer/portainer_data:/data", + "/var/lib/portainer/data:/data", "/var/run/docker.sock:/var/run/docker.sock" ] },