diff --git a/docs/generated/host-topology.md b/docs/generated/host-topology.md index 87a6653..741f094 100644 --- a/docs/generated/host-topology.md +++ b/docs/generated/host-topology.md @@ -1,6 +1,6 @@ # Host Topology -> Generated by `scripts/docs/generate_host_topology.py` on 2026-05-12T18:32:09+00:00. +> Generated by `scripts/docs/generate_host_topology.py` on 2026-05-13T04:58:49+00:00. ## Topology Diagram diff --git a/infrastructure/terraform/dynu/generated/dynu_dns_records_inventory.json b/infrastructure/terraform/dynu/generated/dynu_dns_records_inventory.json index e9888cf..199ea75 100644 --- a/infrastructure/terraform/dynu/generated/dynu_dns_records_inventory.json +++ b/infrastructure/terraform/dynu/generated/dynu_dns_records_inventory.json @@ -1,534 +1 @@ -[ - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "auth.lan.ddnsgeek.com", - "id": 18483099, - "node_name": "auth", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-02-17T12:59:58.803" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "auth.lan.ddnsgeek.com", - "id": 19646048, - "node_name": "auth", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.693" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "edge.lan.ddnsgeek.com", - "id": 10453241, - "node_name": "edge", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2024-03-18T01:27:26" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "edge.lan.ddnsgeek.com", - "id": 19646062, - "node_name": "edge", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:45.237" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "familytree.lan.ddnsgeek.com", - "id": 17017685, - "node_name": "familytree", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-11-17T04:43:07.953" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "familytree.lan.ddnsgeek.com", - "id": 19646056, - "node_name": "familytree", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:44.25" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "gitea.lan.ddnsgeek.com", - "id": 14682463, - "node_name": "gitea", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-07-16T03:15:50.38" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "gitea.lan.ddnsgeek.com", - "id": 19646063, - "node_name": "gitea", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:45.343" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "gotify.lan.ddnsgeek.com", - "id": 17439061, - "node_name": "gotify", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-12-16T09:35:47.307" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "gotify.lan.ddnsgeek.com", - "id": 19646047, - "node_name": "gotify", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.693" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "grafana.lan.ddnsgeek.com", - "id": 18113762, - "node_name": "grafana", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-01-28T04:38:25.92" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "grafana.lan.ddnsgeek.com", - "id": 19646050, - "node_name": "grafana", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.72" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "influxdb.lan.ddnsgeek.com", - "id": 18562198, - "node_name": "influxdb", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-02-22T16:46:26.85" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "influxdb.lan.ddnsgeek.com", - "id": 19646059, - "node_name": "influxdb", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:44.85" - }, - { - "content": "120.155.99.146", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "kuma.lan.ddnsgeek.com", - "id": 17454978, - "node_name": "kuma", - "record_type": "A", - "state": true, - "ttl": 60, - "updated_on": "2026-04-21T04:50:04.81" - }, - { - "content": "ns1.dynu.com. administrator.dynu.com. 0 3600 900 604800 300", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "lan.ddnsgeek.com", - "id": 8299670, - "node_name": null, - "record_type": "SOA", - "state": true, - "ttl": 120, - "updated_on": "2022-03-15T10:08:15" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "monitor-kuma.lan.ddnsgeek.com", - "id": 17462342, - "node_name": "monitor-kuma", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-12-17T14:47:25" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "monitor-kuma.lan.ddnsgeek.com", - "id": 19646051, - "node_name": "monitor-kuma", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.727" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "mtls-bridge.lan.ddnsgeek.com", - "id": 19232643, - "node_name": "mtls-bridge", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-04-13T04:20:00.11" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "mtls-bridge.lan.ddnsgeek.com", - "id": 19646058, - "node_name": "mtls-bridge", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:44.737" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "nextcloud.lan.ddnsgeek.com", - "id": 10453260, - "node_name": "nextcloud", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2024-03-18T01:40:00" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "nextcloud.lan.ddnsgeek.com", - "id": 19646057, - "node_name": "nextcloud", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:44.53" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "node-red.lan.ddnsgeek.com", - "id": 19041230, - "node_name": "node-red", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-03-30T04:51:39.68" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "node-red.lan.ddnsgeek.com", - "id": 19646053, - "node_name": "node-red", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.737" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "passbolt.lan.ddnsgeek.com", - "id": 10453262, - "node_name": "passbolt", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2024-03-18T01:40:18" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "passbolt.lan.ddnsgeek.com", - "id": 19646049, - "node_name": "passbolt", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.693" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "portainer.lan.ddnsgeek.com", - "id": 17458810, - "node_name": "portainer", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-12-17T10:23:40.077" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "portainer.lan.ddnsgeek.com", - "id": 19646046, - "node_name": "portainer", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.693" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "prometheus.lan.ddnsgeek.com", - "id": 18483311, - "node_name": "prometheus", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-02-17T13:17:00.55" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "prometheus.lan.ddnsgeek.com", - "id": 19646061, - "node_name": "prometheus", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:45.033" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "searxng.lan.ddnsgeek.com", - "id": 10453263, - "node_name": "searxng", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2024-03-18T01:40:34" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "searxng.lan.ddnsgeek.com", - "id": 19646055, - "node_name": "searxng", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:38.797" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "shifts.lan.ddnsgeek.com", - "id": 15901565, - "node_name": "shifts", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-09-30T04:25:20.65" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "shifts.lan.ddnsgeek.com", - "id": 19646052, - "node_name": "shifts", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.727" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "stockfill.lan.ddnsgeek.com", - "id": 17081867, - "node_name": "stockfill", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2025-11-21T06:49:33.47" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "stockfill.lan.ddnsgeek.com", - "id": 19646060, - "node_name": "stockfill", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:44.987" - }, - { - "content": null, - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": null, - "host": null, - "hostname": "traefik.lan.ddnsgeek.com", - "id": 10453240, - "node_name": "traefik", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2024-03-18T01:27:13" - }, - { - "content": "167.179.167.166", - "domain_id": 9695470, - "domain_name": "lan.ddnsgeek.com", - "group": "home", - "host": null, - "hostname": "traefik.lan.ddnsgeek.com", - "id": 19646054, - "node_name": "traefik", - "record_type": "A", - "state": true, - "ttl": 120, - "updated_on": "2026-05-12T21:11:37.737" - } -] +{"domain":"lan.ddnsgeek.com","provider":"dynu","record_count":15,"records":{"auth":{"fqdn":"auth.lan.ddnsgeek.com","hostname":"auth","proxied":null,"purpose":"Authentication portal","record_type":null,"service":"authelia","source":"core/authelia/docker-compose.yml","target":null,"ttl":null},"familytree":{"fqdn":"familytree.lan.ddnsgeek.com","hostname":"familytree","proxied":null,"purpose":"Family tree application","record_type":null,"service":"gramps","source":"apps/gramps/docker-compose.yml","target":null,"ttl":null},"gitea":{"fqdn":"gitea.lan.ddnsgeek.com","hostname":"gitea","proxied":null,"purpose":"Gitea service endpoint","record_type":null,"service":"gitea","source":"apps/gitea/docker-compose.yml","target":null,"ttl":null},"gotify":{"fqdn":"gotify.lan.ddnsgeek.com","hostname":"gotify","proxied":null,"purpose":"Gotify notifications","record_type":null,"service":"gotify","source":"monitoring/gotify/docker-compose.yml","target":null,"ttl":null},"grafana":{"fqdn":"grafana.lan.ddnsgeek.com","hostname":"grafana","proxied":null,"purpose":"Grafana monitoring UI","record_type":null,"service":"grafana","source":"monitoring/grafana/docker-compose.yml","target":null,"ttl":null},"influxdb":{"fqdn":"influxdb.lan.ddnsgeek.com","hostname":"influxdb","proxied":null,"purpose":"InfluxDB metrics endpoint","record_type":null,"service":"influxdb","source":"monitoring/influxdb/docker-compose.yml","target":null,"ttl":null},"monitor_kuma":{"fqdn":"monitor-kuma.lan.ddnsgeek.com","hostname":"monitor-kuma","proxied":null,"purpose":"Uptime Kuma monitoring UI","record_type":null,"service":"uptime-kuma","source":"monitoring/uptime-kuma/docker-compose.yml","target":null,"ttl":null},"mtls_bridge":{"fqdn":"mtls-bridge.lan.ddnsgeek.com","hostname":"mtls-bridge","proxied":null,"purpose":"mTLS bridge API","record_type":null,"service":"mtls-bridge","source":"monitoring/mtls-bridge/docker-compose.yml","target":null,"ttl":null},"nextcloud":{"fqdn":"nextcloud.lan.ddnsgeek.com","hostname":"nextcloud","proxied":null,"purpose":"Nextcloud service endpoint","record_type":null,"service":"nextcloud-webapp","source":"apps/nextcloud/docker-compose.yml","target":null,"ttl":null},"node_red":{"fqdn":"node-red.lan.ddnsgeek.com","hostname":"node-red","proxied":null,"purpose":"Node-RED automation UI/API","record_type":null,"service":"node-red","source":"monitoring/node-red/docker-compose.yml","target":null,"ttl":null},"passbolt":{"fqdn":"passbolt.lan.ddnsgeek.com","hostname":"passbolt","proxied":null,"purpose":"Passbolt password management","record_type":null,"service":"passbolt-webapp","source":"apps/passbolt/docker-compose.yml","target":null,"ttl":null},"portainer":{"fqdn":"portainer.lan.ddnsgeek.com","hostname":"portainer","proxied":null,"purpose":"Portainer admin endpoint","record_type":null,"service":"portainer","source":"monitoring/portainer/docker-compose.yml","target":null,"ttl":null},"prometheus":{"fqdn":"prometheus.lan.ddnsgeek.com","hostname":"prometheus","proxied":null,"purpose":"Prometheus metrics endpoint","record_type":null,"service":"prometheus","source":"monitoring/prometheus/docker-compose.yml","target":null,"ttl":null},"searxng":{"fqdn":"searxng.lan.ddnsgeek.com","hostname":"searxng","proxied":null,"purpose":"SearXNG search endpoint","record_type":null,"service":"searxng","source":"apps/searxng/docker-compose.yml","target":null,"ttl":null},"traefik":{"fqdn":"traefik.lan.ddnsgeek.com","hostname":"traefik","proxied":null,"purpose":"Traefik dashboard/API endpoint","record_type":null,"service":"traefik","source":"core/traefik/docker-compose.yml","target":null,"ttl":null}}} diff --git a/monitoring/influxdb/docker-compose.yml b/monitoring/influxdb/docker-compose.yml index bd56fb7..763c4ad 100644 --- a/monitoring/influxdb/docker-compose.yml +++ b/monitoring/influxdb/docker-compose.yml @@ -21,6 +21,8 @@ services: # - traefik_reverse_proxy - traefik - monitor + ports: + - 8086:8086 labels: - "traefik.http.routers.influxdb.rule=Host(`influxdb.lan.ddnsgeek.com`)" - "traefik.enable=true" diff --git a/monitoring/node-red/data/context/00b02bbd01c91485/flow.json b/monitoring/node-red/data/context/00b02bbd01c91485/flow.json index 238ce56..aa340b4 100644 --- a/monitoring/node-red/data/context/00b02bbd01c91485/flow.json +++ b/monitoring/node-red/data/context/00b02bbd01c91485/flow.json @@ -17,12 +17,6 @@ "status": "pull_failed", "failedAt": 1778569512880, "notified": true - }, - "searxng-webapp|searxng/searxng:latest|docker": { - "time": 1778613012267, - "status": "success", - "completedAt": 1778613022513, - "notified": true } } } \ 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 e4affcf..e6eb7a2 100644 --- a/monitoring/node-red/data/update-events.ndjson +++ b/monitoring/node-red/data/update-events.ndjson @@ -518,3 +518,6 @@ {"ts":"2026-05-12T07:05:12.904Z","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-12T07:05:12.904Z","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-12T19:10:22.519Z","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-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":""} diff --git a/update-containers.log b/update-containers.log index 7527819..fc61065 100644 --- a/update-containers.log +++ b/update-containers.log @@ -1,13 +1,13 @@ -12:50:25 INFO: === Update started: 2026-05-12 12:50:25 === -12:50:25 WARNING: Skipping traefik (directory does not exist) -12:50:25 WARNING: Skipping nextcloud (directory does not exist) -12:50:25 WARNING: Skipping passbolt (directory does not exist) -12:50:25 WARNING: Skipping searxng (directory does not exist) -12:50:25 WARNING: Skipping gitea (directory does not exist) -12:50:25 WARNING: Skipping gotify (directory does not exist) -12:50:25 WARNING: Skipping grafana (directory does not exist) -12:50:25 WARNING: Skipping gramps (directory does not exist) -12:50:25 WARNING: Skipping portainer (directory does not exist) -12:50:25 WARNING: Skipping prometheus (directory does not exist) -12:50:25 WARNING: Skipping uptime-kuma (directory does not exist) -12:50:25 INFO: Pruning unused containers, images, networks, and volumes... +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...