diff --git a/apps/nextcloud/Dockerfile b/apps/nextcloud/Dockerfile index d53ae29..5bd013c 100644 --- a/apps/nextcloud/Dockerfile +++ b/apps/nextcloud/Dockerfile @@ -1,19 +1,5 @@ FROM nextcloud:production -#RUN groupadd -r doods && useradd -m -s /bin/bash -d /opt/doods -g doods doods -#RUN chsh -s /usr/sbin/nologin root - -#RUN chown -R doods:doods /opt/doods - -#ENV PATH "${PATH}:/opt/doods" - -#ENV HOME /opt/doods - -#USER root - RUN apt-get update && \ apt-get install -y ffmpeg && \ - apt-get clean && \ rm -rf /var/lib/apt/lists/* - -#USER www-data diff --git a/core/authelia/configuration.yml b/core/authelia/configuration.yml index 57b30fd..e94d980 100644 --- a/core/authelia/configuration.yml +++ b/core/authelia/configuration.yml @@ -3,7 +3,9 @@ server.address: tcp://0.0.0.0:9091 log: level: info -identity_validation.reset_password.jwt_secret: T72Xcxa4d7xpQRypFDZpunlZt0IjqspojmBlxBr69gnkRjzR144YgjZsgFYZK0gS +identity_validation: + reset_password: + jwt_secret: T72Xcxa4d7xpQRypFDZpunlZt0IjqspojmBlxBr69gnkRjzR144YgjZsgFYZK0gS session: secret: BYksO7YUAJ8gXx9Endgpe46RgB10nkeKpD1qcQPt0GuYGQm2pS2zjJtNOrCEqpav diff --git a/core/authelia/docker-compose.yml b/core/authelia/docker-compose.yml index eb1d9b6..b73e969 100644 --- a/core/authelia/docker-compose.yml +++ b/core/authelia/docker-compose.yml @@ -3,14 +3,14 @@ services: profiles: ["core","all","authelia", "traefik"] image: authelia/authelia restart: always - build: - context: ${PROJECT_ROOT}/core/authelia -# env_file: -# - ${PROJECT_ROOT}/secrets/stack-secrets.env +# build: +# context: ${PROJECT_ROOT}/core/authelia + env_file: + - ${PROJECT_ROOT}/secrets/stack-secrets.env # environment: -# - AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET:${AUTHELIA_JWT_SECRET} -# - AUTHELIA_SESSION_SECRET:${AUTHELIA_SESSION_SECRET} -# - AUTHELIA_STORAGE_ENCRYPTION_KEY:${AUTHELIA_STORAGE_ENCRYPTION_KEY} +# - AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET=${AUTHELIA_JWT_SECRET} +# - AUTHELIA_SESSION_SECRET=${AUTHELIA_SESSION_SECRET} +# - AUTHELIA_STORAGE_ENCRYPTION_KEY=${AUTHELIA_STORAGE_ENCRYPTION_KEY} volumes: - ${PROJECT_ROOT}/core/authelia:/config networks: diff --git a/core/traefik/docker-compose.yml b/core/traefik/docker-compose.yml index 5e41a58..f722b44 100644 --- a/core/traefik/docker-compose.yml +++ b/core/traefik/docker-compose.yml @@ -16,8 +16,8 @@ services: - "80:80" - "443:443" - build: - context: ${PROJECT_ROOT}/core +# build: +# context: ${PROJECT_ROOT}/core # env_file: # - ${PROJECT_ROOT}/secrets/stack-secrets.env diff --git a/monitoring/node-red/data/.config.nodes.json b/monitoring/node-red/data/.config.nodes.json index e27870c..bb3b8b4 100644 --- a/monitoring/node-red/data/.config.nodes.json +++ b/monitoring/node-red/data/.config.nodes.json @@ -1,7 +1,7 @@ { "node-red": { "name": "node-red", - "version": "4.1.8", + "version": "4.1.10", "local": false, "user": false, "nodes": { diff --git a/monitoring/node-red/data/.config.nodes.json.backup b/monitoring/node-red/data/.config.nodes.json.backup new file mode 100644 index 0000000..e27870c --- /dev/null +++ b/monitoring/node-red/data/.config.nodes.json.backup @@ -0,0 +1,430 @@ +{ + "node-red": { + "name": "node-red", + "version": "4.1.8", + "local": false, + "user": false, + "nodes": { + "junction": { + "name": "junction", + "types": [ + "junction" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/05-junction.js" + }, + "inject": { + "name": "inject", + "types": [ + "inject" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/20-inject.js" + }, + "debug": { + "name": "debug", + "types": [ + "debug" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/21-debug.js" + }, + "complete": { + "name": "complete", + "types": [ + "complete" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/24-complete.js" + }, + "catch": { + "name": "catch", + "types": [ + "catch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/25-catch.js" + }, + "status": { + "name": "status", + "types": [ + "status" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/25-status.js" + }, + "link": { + "name": "link", + "types": [ + "link in", + "link out", + "link call" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/60-link.js" + }, + "comment": { + "name": "comment", + "types": [ + "comment" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/90-comment.js" + }, + "global-config": { + "name": "global-config", + "types": [ + "global-config" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/91-global-config.js" + }, + "unknown": { + "name": "unknown", + "types": [ + "unknown" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/common/98-unknown.js" + }, + "function": { + "name": "function", + "types": [ + "function" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/10-function.js" + }, + "switch": { + "name": "switch", + "types": [ + "switch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/10-switch.js" + }, + "change": { + "name": "change", + "types": [ + "change" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/15-change.js" + }, + "range": { + "name": "range", + "types": [ + "range" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/16-range.js" + }, + "template": { + "name": "template", + "types": [ + "template" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/80-template.js" + }, + "delay": { + "name": "delay", + "types": [ + "delay" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/89-delay.js" + }, + "trigger": { + "name": "trigger", + "types": [ + "trigger" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/89-trigger.js" + }, + "exec": { + "name": "exec", + "types": [ + "exec" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/90-exec.js" + }, + "rbe": { + "name": "rbe", + "types": [ + "rbe" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/function/rbe.js" + }, + "tls": { + "name": "tls", + "types": [ + "tls-config" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/05-tls.js" + }, + "httpproxy": { + "name": "httpproxy", + "types": [ + "http proxy" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/06-httpproxy.js" + }, + "mqtt": { + "name": "mqtt", + "types": [ + "mqtt in", + "mqtt out", + "mqtt-broker" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/10-mqtt.js" + }, + "httpin": { + "name": "httpin", + "types": [ + "http in", + "http response" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/21-httpin.js" + }, + "httprequest": { + "name": "httprequest", + "types": [ + "http request" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/21-httprequest.js" + }, + "websocket": { + "name": "websocket", + "types": [ + "websocket in", + "websocket out", + "websocket-listener", + "websocket-client" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/22-websocket.js" + }, + "tcpin": { + "name": "tcpin", + "types": [ + "tcp in", + "tcp out", + "tcp request" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/31-tcpin.js" + }, + "udp": { + "name": "udp", + "types": [ + "udp in", + "udp out" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/network/32-udp.js" + }, + "CSV": { + "name": "CSV", + "types": [ + "csv" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/parsers/70-CSV.js" + }, + "HTML": { + "name": "HTML", + "types": [ + "html" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/parsers/70-HTML.js" + }, + "JSON": { + "name": "JSON", + "types": [ + "json" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/parsers/70-JSON.js" + }, + "XML": { + "name": "XML", + "types": [ + "xml" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/parsers/70-XML.js" + }, + "YAML": { + "name": "YAML", + "types": [ + "yaml" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/parsers/70-YAML.js" + }, + "split": { + "name": "split", + "types": [ + "split", + "join" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/sequence/17-split.js" + }, + "sort": { + "name": "sort", + "types": [ + "sort" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/sequence/18-sort.js" + }, + "batch": { + "name": "batch", + "types": [ + "batch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/sequence/19-batch.js" + }, + "file": { + "name": "file", + "types": [ + "file", + "file in" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/storage/10-file.js" + }, + "watch": { + "name": "watch", + "types": [ + "watch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/usr/src/node-red/node_modules/@node-red/nodes/core/storage/23-watch.js" + } + } + } +} \ No newline at end of file diff --git a/monitoring/node-red/data/context/00b02bbd01c91485/flow.json b/monitoring/node-red/data/context/00b02bbd01c91485/flow.json index aa340b4..2e883c9 100644 --- a/monitoring/node-red/data/context/00b02bbd01c91485/flow.json +++ b/monitoring/node-red/data/context/00b02bbd01c91485/flow.json @@ -1,22 +1,3 @@ { - "dockerUpdateAttempts": { - "nextcloud-redis|redis:latest|docker": { - "time": 1778483142172, - "status": "test_failed", - "failedAt": 1778483206801, - "notified": true - }, - "telegraf|telegraf:latest|raspi": { - "time": 1778569512188, - "status": "pull_failed", - "failedAt": 1778569512904, - "notified": true - }, - "traefik|traefik:3|raspi": { - "time": 1778569512188, - "status": "pull_failed", - "failedAt": 1778569512880, - "notified": true - } - } + "dockerUpdateAttempts": {} } \ No newline at end of file diff --git a/monitoring/node-red/data/update-events.ndjson b/monitoring/node-red/data/update-events.ndjson index e6eb7a2..7ffe090 100644 --- a/monitoring/node-red/data/update-events.ndjson +++ b/monitoring/node-red/data/update-events.ndjson @@ -521,3 +521,33 @@ {"ts":"2026-05-14T07:15:33.937Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} {"ts":"2026-05-15T19:20:35.237Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} {"ts":"2026-05-17T07:25:31.989Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-20T07:06:38.260Z","flow":"docker-updates","event":"completed","container":"telegraf","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-20T07:06:38.267Z","flow":"docker-updates","event":"completed","container":"telegraf","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T07:07:31.156Z","flow":"docker-updates","event":"completed","container":"gitea","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":1,"code":0,"error":""} +{"ts":"2026-05-21T07:08:03.029Z","flow":"docker-updates","event":"completed","container":"passbolt-db","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T07:08:03.041Z","flow":"docker-updates","event":"completed","container":"passbolt-db","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T07:08:05.341Z","flow":"docker-updates","event":"completed","container":"nextcloud-db","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":1,"code":0,"error":""} +{"ts":"2026-05-21T07:08:05.349Z","flow":"docker-updates","event":"completed","container":"nextcloud-db","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T07:08:05.951Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T09:50:18.722Z","flow":"docker-updates","event":"completed","container":"traefik","project":"unknown","host":"raspi","status":"failed","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-21T09:50:18.729Z","flow":"docker-updates","event":"completed","container":"traefik","project":"unknown","host":"raspi","status":"locked","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-21T09:50:18.782Z","flow":"docker-updates","event":"completed","container":"telegraf","project":"unknown","host":"raspi","status":"failed","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-21T09:50:18.787Z","flow":"docker-updates","event":"completed","container":"telegraf","project":"unknown","host":"raspi","status":"locked","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-21T09:51:38.670Z","flow":"docker-updates","event":"completed","container":"telegraf","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T09:51:38.675Z","flow":"docker-updates","event":"completed","container":"telegraf","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T09:51:39.328Z","flow":"docker-updates","event":"completed","container":"nextcloud-redis","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-21T09:51:39.330Z","flow":"docker-updates","event":"completed","container":"nextcloud-redis","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-23T07:07:54.823Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-23T07:09:42.801Z","flow":"docker-updates","event":"completed","container":"passbolt-webapp","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-23T07:09:42.807Z","flow":"docker-updates","event":"completed","container":"passbolt-webapp","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-24T19:11:52.462Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-25T07:05:54.288Z","flow":"docker-updates","event":"completed","container":"gramps-web","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-25T07:05:54.298Z","flow":"docker-updates","event":"completed","container":"gramps-web","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-25T07:05:54.324Z","flow":"docker-updates","event":"completed","container":"gramps-web-celery","project":"unknown","host":"docker","status":"failed","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-25T07:05:54.325Z","flow":"docker-updates","event":"completed","container":"gramps-web-celery","project":"unknown","host":"docker","status":"locked","success":0,"failed":1,"duration_ms":0,"code":1,"error":""} +{"ts":"2026-05-27T07:06:52.888Z","flow":"docker-updates","event":"completed","container":"authelia","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":1,"code":0,"error":""} +{"ts":"2026-05-27T07:08:21.357Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":1,"code":0,"error":""} +{"ts":"2026-05-29T07:08:28.615Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-29T07:09:43.873Z","flow":"docker-updates","event":"completed","container":"prometheus","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-30T19:12:17.132Z","flow":"docker-updates","event":"completed","container":"prometheus","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} +{"ts":"2026-05-30T19:12:44.362Z","flow":"docker-updates","event":"completed","container":"searxng-webapp","project":"unknown","host":"docker","status":"success","success":1,"failed":0,"duration_ms":0,"code":0,"error":""} diff --git a/run-all-updates.sh b/run-all-updates.sh new file mode 100755 index 0000000..9e8252d --- /dev/null +++ b/run-all-updates.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +cd ~/docker +./services-up.sh --profile all pull +./services-up.sh --profile all up -d --build +cd ~/raspi +./services-up.sh --profile all pull +./services-up.sh --profile all up -d --build diff --git a/update-containers.log b/update-containers.log index fc61065..7337a7c 100644 --- a/update-containers.log +++ b/update-containers.log @@ -1,13 +1,14 @@ -00:44:49 INFO: === Update started: 2026-05-19 00:44:49 === -00:44:49 WARNING: Skipping traefik (directory does not exist) -00:44:49 WARNING: Skipping nextcloud (directory does not exist) -00:44:49 WARNING: Skipping passbolt (directory does not exist) -00:44:49 WARNING: Skipping searxng (directory does not exist) -00:44:49 WARNING: Skipping gitea (directory does not exist) -00:44:49 WARNING: Skipping gotify (directory does not exist) -00:44:49 WARNING: Skipping grafana (directory does not exist) -00:44:49 WARNING: Skipping gramps (directory does not exist) -00:44:49 WARNING: Skipping portainer (directory does not exist) -00:44:49 WARNING: Skipping prometheus (directory does not exist) -00:44:49 WARNING: Skipping uptime-kuma (directory does not exist) -00:44:49 INFO: Pruning unused containers, images, networks, and volumes... +00:44:51 INFO: === Update started: 2026-05-26 00:44:51 === +00:44:51 WARNING: Skipping traefik (directory does not exist) +00:44:51 WARNING: Skipping nextcloud (directory does not exist) +00:44:51 WARNING: Skipping passbolt (directory does not exist) +00:44:51 WARNING: Skipping searxng (directory does not exist) +00:44:51 WARNING: Skipping gitea (directory does not exist) +00:44:51 WARNING: Skipping gotify (directory does not exist) +00:44:51 WARNING: Skipping grafana (directory does not exist) +00:44:51 WARNING: Skipping gramps (directory does not exist) +00:44:51 WARNING: Skipping portainer (directory does not exist) +00:44:51 WARNING: Skipping prometheus (directory does not exist) +00:44:51 WARNING: Skipping uptime-kuma (directory does not exist) +00:44:51 INFO: Pruning unused containers, images, networks, and volumes... +00:45:52 ERROR: Failed to prune system: UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)