digraph DockerTraefikDynu { graph [rankdir=LR, compound=true, splines=ortho, nodesep=0.5, ranksep=1.0, fontname="Helvetica"]; node [fontname="Helvetica", fontsize=10, style="rounded,filled"]; edge [fontname="Helvetica", fontsize=9]; "ext:dynu" [label="Dynu / Public DNS", shape=oval, fillcolor="#fde68a"]; "svc:traefik" [label="traefik", shape=box, fillcolor="#bfdbfe"]; "net:gramps" [label="gramps", shape=ellipse, fillcolor="#f3f4f6"]; "net:monitor" [label="monitor", shape=ellipse, fillcolor="#f3f4f6"]; "net:nextcloud" [label="nextcloud", shape=ellipse, fillcolor="#f3f4f6"]; "net:passbolt" [label="passbolt", shape=ellipse, fillcolor="#f3f4f6"]; "net:traefik" [label="traefik", shape=ellipse, fillcolor="#f3f4f6"]; "svc:authelia" [label="authelia", shape=box, fillcolor="#dcfce7"]; "svc:authelia" -> "net:traefik" [color="#6b7280"]; "router:authelia" [label="router:authelia\nentry:websecure tls:true", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:authelia"; "router:authelia" -> "svc:authelia" [label="service:authelia"]; "dns:service-1." [label="service-1.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-1."; "dns:service-1." -> "router:authelia"; "svc:crowdsec" [label="crowdsec", shape=box, fillcolor="#dcfce7"]; "svc:crowdsec" -> "net:traefik" [color="#6b7280"]; "svc:docker-socket-proxy" [label="docker-socket-proxy", shape=box, fillcolor="#dcfce7"]; "svc:docker-socket-proxy" -> "net:monitor" [color="#6b7280"]; "svc:docker-socket-proxy" -> "net:traefik" [color="#6b7280"]; "svc:docker-update-exporter" [label="docker-update-exporter", shape=box, fillcolor="#dcfce7"]; "svc:docker-update-exporter" -> "net:monitor" [color="#6b7280"]; "svc:error-pages" [label="error-pages", shape=box, fillcolor="#dcfce7"]; "svc:error-pages" -> "net:traefik" [color="#6b7280"]; "router:error-pages-router" [label="router:error-pages-router\nentry:web tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:error-pages-router"; "router:error-pages-router" -> "svc:error-pages" [label="service:error-pages"]; "mw:error-pages-middleware" [label="error-pages-middleware", shape=hexagon, fillcolor="#ddd6fe"]; "router:error-pages-router" -> "mw:error-pages-middleware" [style=dashed]; "lb:error-pages:error-pages-service" [label="lb:error-pages-service\nport:8080", shape=component, fillcolor="#fecaca"]; "lb:error-pages:error-pages-service" -> "svc:error-pages"; "svc:gitea" [label="gitea", shape=box, fillcolor="#dcfce7"]; "svc:gitea" -> "net:traefik" [color="#6b7280"]; "router:gitea" [label="router:gitea\nentry:websecure tls:true", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:gitea"; "router:gitea" -> "svc:gitea" [label="service:gitea"]; "dns:service-2." [label="service-2.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-2."; "dns:service-2." -> "router:gitea"; "lb:gitea:gitea" [label="lb:gitea\nport:3000", shape=component, fillcolor="#fecaca"]; "lb:gitea:gitea" -> "svc:gitea"; "svc:gitea-runner" [label="gitea-runner", shape=box, fillcolor="#dcfce7"]; "svc:gitea-runner" -> "net:traefik" [color="#6b7280"]; "svc:gotify" [label="gotify", shape=box, fillcolor="#dcfce7"]; "svc:gotify" -> "net:traefik" [color="#6b7280"]; "router:gotify" [label="router:gotify\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:gotify"; "router:gotify" -> "svc:gotify" [label="service:gotify"]; "dns:service-3." [label="service-3.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-3."; "dns:service-3." -> "router:gotify"; "lb:gotify:gotify" [label="lb:gotify\nport:80", shape=component, fillcolor="#fecaca"]; "lb:gotify:gotify" -> "svc:gotify"; "svc:grafana" [label="grafana", shape=box, fillcolor="#dcfce7"]; "svc:grafana" -> "net:monitor" [color="#6b7280"]; "svc:grafana" -> "net:traefik" [color="#6b7280"]; "router:grafana" [label="router:grafana\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:grafana"; "router:grafana" -> "svc:grafana" [label="service:grafana"]; "dns:service-4." [label="service-4.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-4."; "dns:service-4." -> "router:grafana"; "lb:grafana:grafana" [label="lb:grafana\nport:3000", shape=component, fillcolor="#fecaca"]; "lb:grafana:grafana" -> "svc:grafana"; "svc:gramps-redis" [label="gramps-redis", shape=box, fillcolor="#dcfce7"]; "svc:gramps-redis" -> "net:gramps" [color="#6b7280"]; "svc:grampsweb" [label="grampsweb", shape=box, fillcolor="#dcfce7"]; "svc:grampsweb" -> "net:gramps" [color="#6b7280"]; "svc:grampsweb" -> "net:traefik" [color="#6b7280"]; "router:gramps" [label="router:gramps\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:gramps"; "router:gramps" -> "svc:grampsweb" [label="service:grampsweb"]; "dns:service-5." [label="service-5.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-5."; "dns:service-5." -> "router:gramps"; "lb:grampsweb:gramps" [label="lb:gramps\nport:5000", shape=component, fillcolor="#fecaca"]; "lb:grampsweb:gramps" -> "svc:grampsweb"; "svc:grampsweb_celery" [label="grampsweb_celery", shape=box, fillcolor="#dcfce7"]; "svc:grampsweb_celery" -> "net:gramps" [color="#6b7280"]; "svc:influxdb" [label="influxdb", shape=box, fillcolor="#dcfce7"]; "svc:influxdb" -> "net:monitor" [color="#6b7280"]; "svc:influxdb" -> "net:traefik" [color="#6b7280"]; "router:influxdb" [label="router:influxdb\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:influxdb"; "router:influxdb" -> "svc:influxdb" [label="service:influxdb"]; "dns:service-6." [label="service-6.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-6."; "dns:service-6." -> "router:influxdb"; "mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"]; "router:influxdb" -> "mw:authelia" [style=dashed]; "lb:influxdb:influxdb" [label="lb:influxdb\nport:8086", shape=component, fillcolor="#fecaca"]; "lb:influxdb:influxdb" -> "svc:influxdb"; "svc:monitor-kuma" [label="monitor-kuma", shape=box, fillcolor="#dcfce7"]; "svc:monitor-kuma" -> "net:monitor" [color="#6b7280"]; "svc:monitor-kuma" -> "net:traefik" [color="#6b7280"]; "router:monitor" [label="router:monitor\nentry:websecure tls:true", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:monitor"; "router:monitor" -> "svc:monitor-kuma" [label="service:monitor-kuma"]; "dns:service-7." [label="service-7.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-7."; "dns:service-7." -> "router:monitor"; "lb:monitor-kuma:monitor" [label="lb:monitor\nport:3001", shape=component, fillcolor="#fecaca"]; "lb:monitor-kuma:monitor" -> "svc:monitor-kuma"; "svc:mtls-bridge" [label="mtls-bridge", shape=box, fillcolor="#dcfce7"]; "svc:mtls-bridge" -> "net:monitor" [color="#6b7280"]; "svc:mtls-bridge" -> "net:traefik" [color="#6b7280"]; "router:mtls-bridge" [label="router:mtls-bridge\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:mtls-bridge"; "router:mtls-bridge" -> "svc:mtls-bridge" [label="service:mtls-bridge"]; "dns:service-8." [label="service-8.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-8."; "dns:service-8." -> "router:mtls-bridge"; "mw:mtls-bridge-auth" [label="mtls-bridge-auth", shape=hexagon, fillcolor="#ddd6fe"]; "router:mtls-bridge" -> "mw:mtls-bridge-auth" [style=dashed]; "mw:mtls-bridge-cors" [label="mtls-bridge-cors", shape=hexagon, fillcolor="#ddd6fe"]; "router:mtls-bridge" -> "mw:mtls-bridge-cors" [style=dashed]; "router:mtls-bridge-preflight" [label="router:mtls-bridge-preflight\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:mtls-bridge-preflight"; "router:mtls-bridge-preflight" -> "svc:mtls-bridge" [label="service:mtls-bridge"]; "dns:service-8." [label="service-8.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-8."; "dns:service-8." -> "router:mtls-bridge-preflight"; "mw:mtls-bridge-cors" [label="mtls-bridge-cors", shape=hexagon, fillcolor="#ddd6fe"]; "router:mtls-bridge-preflight" -> "mw:mtls-bridge-cors" [style=dashed]; "lb:mtls-bridge:mtls-bridge" [label="lb:mtls-bridge\nport:8080", shape=component, fillcolor="#fecaca"]; "lb:mtls-bridge:mtls-bridge" -> "svc:mtls-bridge"; "svc:nextcloud-db" [label="nextcloud-db", shape=box, fillcolor="#dcfce7"]; "svc:nextcloud-db" -> "net:nextcloud" [color="#6b7280"]; "svc:nextcloud-redis" [label="nextcloud-redis", shape=box, fillcolor="#dcfce7"]; "svc:nextcloud-redis" -> "net:nextcloud" [color="#6b7280"]; "svc:nextcloud-webapp" [label="nextcloud-webapp", shape=box, fillcolor="#dcfce7"]; "svc:nextcloud-webapp" -> "net:nextcloud" [color="#6b7280"]; "svc:nextcloud-webapp" -> "net:traefik" [color="#6b7280"]; "router:nextcloud" [label="router:nextcloud\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:nextcloud"; "router:nextcloud" -> "svc:nextcloud-webapp" [label="service:nextcloud-webapp"]; "dns:service-9." [label="service-9.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-9."; "dns:service-9." -> "router:nextcloud"; "mw:nextcloud-dav" [label="nextcloud-dav", shape=hexagon, fillcolor="#ddd6fe"]; "router:nextcloud" -> "mw:nextcloud-dav" [style=dashed]; "mw:nextcloud-webfinger" [label="nextcloud-webfinger", shape=hexagon, fillcolor="#ddd6fe"]; "router:nextcloud" -> "mw:nextcloud-webfinger" [style=dashed]; "svc:node-exporter" [label="node-exporter", shape=box, fillcolor="#dcfce7"]; "svc:node-exporter" -> "net:monitor" [color="#6b7280"]; "svc:node-red" [label="node-red", shape=box, fillcolor="#dcfce7"]; "svc:node-red" -> "net:monitor" [color="#6b7280"]; "svc:node-red" -> "net:traefik" [color="#6b7280"]; "router:node-red" [label="router:node-red\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:node-red"; "router:node-red" -> "svc:node-red" [label="service:node-red"]; "dns:service-10." [label="service-10.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-10."; "dns:service-10." -> "router:node-red"; "mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"]; "router:node-red" -> "mw:authelia" [style=dashed]; "lb:node-red:node-red" [label="lb:node-red\nport:1880", shape=component, fillcolor="#fecaca"]; "lb:node-red:node-red" -> "svc:node-red"; "svc:passbolt-db" [label="passbolt-db", shape=box, fillcolor="#dcfce7"]; "svc:passbolt-db" -> "net:passbolt" [color="#6b7280"]; "svc:passbolt-webapp" [label="passbolt-webapp", shape=box, fillcolor="#dcfce7"]; "svc:passbolt-webapp" -> "net:passbolt" [color="#6b7280"]; "svc:passbolt-webapp" -> "net:traefik" [color="#6b7280"]; "router:passbolt" [label="router:passbolt\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:passbolt"; "router:passbolt" -> "svc:passbolt-webapp" [label="service:passbolt-webapp"]; "dns:service-11." [label="service-11.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-11."; "dns:service-11." -> "router:passbolt"; "svc:pihole-exporter" [label="pihole-exporter", shape=box, fillcolor="#dcfce7"]; "svc:pihole-exporter" -> "net:monitor" [color="#6b7280"]; "svc:portainer" [label="portainer", shape=box, fillcolor="#dcfce7"]; "svc:portainer" -> "net:traefik" [color="#6b7280"]; "router:portainer" [label="router:portainer\nentry:websecure tls:true", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:portainer"; "router:portainer" -> "svc:portainer" [label="service:portainer"]; "dns:service-12." [label="service-12.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-12."; "dns:service-12." -> "router:portainer"; "lb:portainer:portainer" [label="lb:portainer\nport:9000", shape=component, fillcolor="#fecaca"]; "lb:portainer:portainer" -> "svc:portainer"; "svc:prometheus" [label="prometheus", shape=box, fillcolor="#dcfce7"]; "svc:prometheus" -> "net:monitor" [color="#6b7280"]; "svc:prometheus" -> "net:traefik" [color="#6b7280"]; "router:prometheus" [label="router:prometheus\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:prometheus"; "router:prometheus" -> "svc:prometheus" [label="service:prometheus"]; "dns:service-13." [label="service-13.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-13."; "dns:service-13." -> "router:prometheus"; "mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"]; "router:prometheus" -> "mw:authelia" [style=dashed]; "lb:prometheus:prometheus" [label="lb:prometheus\nport:9090", shape=component, fillcolor="#fecaca"]; "lb:prometheus:prometheus" -> "svc:prometheus"; "svc:searxng-webapp" [label="searxng-webapp", shape=box, fillcolor="#dcfce7"]; "svc:searxng-webapp" -> "net:traefik" [color="#6b7280"]; "router:searxng" [label="router:searxng\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:searxng"; "router:searxng" -> "svc:searxng-webapp" [label="service:searxng-webapp"]; "dns:service-14." [label="service-14.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-14."; "dns:service-14." -> "router:searxng"; "lb:searxng-webapp:searxng" [label="lb:searxng\nport:8080", shape=component, fillcolor="#fecaca"]; "lb:searxng-webapp:searxng" -> "svc:searxng-webapp"; "svc:shift-recorder-web" [label="shift-recorder-web", shape=box, fillcolor="#dcfce7"]; "svc:shift-recorder-web" -> "net:traefik" [color="#6b7280"]; "router:shifts" [label="router:shifts\nentry:websecure tls:true", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:shifts"; "router:shifts" -> "svc:shift-recorder-web" [label="service:shift-recorder-web"]; "dns:service-15." [label="service-15.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-15."; "dns:service-15." -> "router:shifts"; "lb:shift-recorder-web:shifts" [label="lb:shifts\nport:80", shape=component, fillcolor="#fecaca"]; "lb:shift-recorder-web:shifts" -> "svc:shift-recorder-web"; "svc:stockfill" [label="stockfill", shape=box, fillcolor="#dcfce7"]; "svc:stockfill" -> "net:traefik" [color="#6b7280"]; "router:stockfill" [label="router:stockfill\nentry:websecure tls:true", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:stockfill"; "router:stockfill" -> "svc:stockfill" [label="service:stockfill"]; "dns:service-16." [label="service-16.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-16."; "dns:service-16." -> "router:stockfill"; "lb:stockfill:stockfill" [label="lb:stockfill\nport:80", shape=component, fillcolor="#fecaca"]; "lb:stockfill:stockfill" -> "svc:stockfill"; "svc:telegraf" [label="telegraf", shape=box, fillcolor="#dcfce7"]; "svc:telegraf" -> "net:monitor" [color="#6b7280"]; "svc:traefik" [label="traefik", shape=box, fillcolor="#dcfce7"]; "svc:traefik" -> "net:traefik" [color="#6b7280"]; "router:traefik" [label="router:traefik\nentry:websecure tls:false", shape=diamond, fillcolor="#fbcfe8"]; "svc:traefik" -> "router:traefik"; "router:traefik" -> "svc:traefik" [label="service:api@internal"]; "dns:service-17." [label="service-17.", shape=note, fillcolor="#fde68a"]; "ext:dynu" -> "dns:service-17."; "dns:service-17." -> "router:traefik"; "mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"]; "router:traefik" -> "mw:authelia" [style=dashed]; }