locals { dynu_dns_records_catalog_base = { auth = { hostname = "auth" service = "authelia" source = "core/authelia/docker-compose.yml" purpose = "Authentication portal" record_type = null ttl = null target = null proxied = null } gitea = { hostname = "gitea" service = "gitea" source = "apps/gitea/docker-compose.yml" purpose = "Gitea service endpoint" record_type = null ttl = null target = null proxied = null } gotify = { hostname = "gotify" service = "gotify" source = "monitoring/gotify/docker-compose.yml" purpose = "Gotify notifications" record_type = null ttl = null target = null proxied = null } grafana = { hostname = "grafana" service = "grafana" source = "monitoring/grafana/docker-compose.yml" purpose = "Grafana monitoring UI" record_type = null ttl = null target = null proxied = null } familytree = { hostname = "familytree" service = "gramps" source = "apps/gramps/docker-compose.yml" purpose = "Family tree application" record_type = null ttl = null target = null proxied = null } influxdb = { hostname = "influxdb" service = "influxdb" source = "monitoring/influxdb/docker-compose.yml" purpose = "InfluxDB metrics endpoint" record_type = null ttl = null target = null proxied = null } monitor_kuma = { hostname = "monitor-kuma" service = "uptime-kuma" source = "monitoring/uptime-kuma/docker-compose.yml" purpose = "Uptime Kuma monitoring UI" record_type = null ttl = null target = null proxied = null } mtls_bridge = { hostname = "mtls-bridge" service = "mtls-bridge" source = "monitoring/mtls-bridge/docker-compose.yml" purpose = "mTLS bridge API" record_type = null ttl = null target = null proxied = null } nextcloud = { hostname = "nextcloud" service = "nextcloud-webapp" source = "apps/nextcloud/docker-compose.yml" purpose = "Nextcloud service endpoint" record_type = null ttl = null target = null proxied = null } node_red = { hostname = "node-red" service = "node-red" source = "monitoring/node-red/docker-compose.yml" purpose = "Node-RED automation UI/API" record_type = null ttl = null target = null proxied = null } passbolt = { hostname = "passbolt" service = "passbolt-webapp" source = "apps/passbolt/docker-compose.yml" purpose = "Passbolt password management" record_type = null ttl = null target = null proxied = null } portainer = { hostname = "portainer" service = "portainer" source = "monitoring/portainer/docker-compose.yml" purpose = "Portainer admin endpoint" record_type = null ttl = null target = null proxied = null } prometheus = { hostname = "prometheus" service = "prometheus" source = "monitoring/prometheus/docker-compose.yml" purpose = "Prometheus metrics endpoint" record_type = null ttl = null target = null proxied = null } searxng = { hostname = "searxng" service = "searxng" source = "apps/searxng/docker-compose.yml" purpose = "SearXNG search endpoint" record_type = null ttl = null target = null proxied = null } traefik = { hostname = "traefik" service = "traefik" source = "core/traefik/docker-compose.yml" purpose = "Traefik dashboard/API endpoint" record_type = null ttl = null target = null proxied = null } } dynu_dns_records_catalog = { for key, record in local.dynu_dns_records_catalog_base : key => merge(record, { fqdn = format("%s.%s", record.hostname, local.dynu_domain) }) } }