Fix public topology/routing diagram generation and layout

This commit is contained in:
beatz174-bit
2026-05-13 10:08:42 +10:00
parent 1b679a4f09
commit 2619d86dc1
17 changed files with 1346 additions and 1985 deletions
+2 -4
View File
@@ -1,12 +1,12 @@
# Docker Compose Inventory
Source fingerprint: `0fad36c3fed6`
Source fingerprint: `232be78ef441`
## Summary
| Item | Count |
|---|---:|
| Services | 30 |
| Services | 28 |
| Networks | 5 |
| Volumes | 0 |
@@ -40,8 +40,6 @@ Source fingerprint: `0fad36c3fed6`
| portainer | portainer | portainer/portainer-ce:latest | | monitoring, all, portainer | traefik | | unless-stopped |
| prometheus | prometheus | prom/prometheus:latest | | monitoring, all, prometheus | monitor, traefik | | unless-stopped |
| searxng-webapp | searxng-webapp | searxng/searxng | | apps, all, searxng | traefik | | always |
| shift-recorder-web | shift-recorder | | /home/nixos/docker/apps/shift-recorder | apps, all, shift-recorder | traefik | | unless-stopped |
| stockfill | stockfill | | /home/nixos/docker/apps/stockfill | apps, all, stockfill | traefik | | unless-stopped |
| telegraf | telegraf | telegraf:latest | | monitoring, all, telegraf, prometheus | monitor | | unless-stopped |
| traefik | traefik | traefik:3 | /home/nixos/docker/core | core, all, traefik | traefik | {'mode': 'ingress', 'target': 80, 'published': '80', 'protocol': 'tcp'}, {'mode': 'ingress', 'target': 443, 'published': '443', 'protocol': 'tcp'} | always |
+6 -2
View File
@@ -4,7 +4,9 @@
This view groups containers by inferred host and service role (edge/proxy/auth, monitoring, automation, apps, and supporting storage/services).
![Physical topology](physical-topology.svg)
<div class="diagram-wrap">
<img src="physical-topology.svg" alt="Physical topology">
</div>
## Docker, Traefik and Dynu routing
@@ -12,4 +14,6 @@ This view shows sanitised public DNS names flowing to Traefik, then to exposed D
_Diagrams are generated from Compose data and Traefik labels._
![Docker Traefik Dynu](docker-traefik-dynu.svg)
<div class="diagram-wrap">
<img src="docker-traefik-dynu.svg" alt="Docker Traefik Dynu">
</div>
+156 -180
View File
@@ -1,463 +1,439 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 12.2.1 (0)
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: Compose Pages: 1 -->
<svg width="342pt" height="1610pt"
viewBox="0.00 0.00 341.70 1610.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1606)">
<svg width="334pt" height="1502pt"
viewBox="0.00 0.00 334.49 1502.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1498)">
<title>Compose</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1606 337.7,-1606 337.7,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1498 330.49,-1498 330.49,4 -4,4"/>
<!-- svc:authelia -->
<g id="node1" class="node">
<title>svc:authelia</title>
<polygon fill="#dfefff" stroke="black" points="125.5,-900 54,-900 54,-864 125.5,-864 125.5,-900"/>
<text text-anchor="middle" x="89.75" y="-877.33" font-family="Helvetica,sans-Serif" font-size="14.00">authelia</text>
<polygon fill="#dfefff" stroke="black" points="126,-738 54,-738 54,-702 126,-702 126,-738"/>
<text text-anchor="middle" x="90" y="-716.3" font-family="Helvetica,sans-Serif" font-size="14.00">authelia</text>
</g>
<!-- net:traefik -->
<g id="node35" class="node">
<g id="node33" class="node">
<title>net:traefik</title>
<ellipse fill="#f4f4f4" stroke="black" cx="274.6" cy="-828" rx="42.79" ry="18"/>
<text text-anchor="middle" x="274.6" y="-823.33" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-774" rx="40.09" ry="18"/>
<text text-anchor="middle" x="271.25" y="-770.3" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
</g>
<!-- svc:authelia&#45;&gt;net:traefik -->
<g id="edge1" class="edge">
<title>svc:authelia&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M125.57,-871.72C154.68,-863.12 196.4,-850.8 228.13,-841.43"/>
<polygon fill="black" stroke="black" points="228.86,-844.86 237.45,-838.67 226.87,-838.15 228.86,-844.86"/>
<path fill="none" stroke="black" d="M126.41,-730.67C155.5,-739.43 196.8,-751.87 227.69,-761.18"/>
<polygon fill="black" stroke="black" points="226.74,-764.55 237.32,-764.08 228.76,-757.85 226.74,-764.55"/>
</g>
<!-- svc:crowdsec -->
<g id="node2" class="node">
<title>svc:crowdsec</title>
<polygon fill="#dfefff" stroke="black" points="130,-846 49.5,-846 49.5,-810 130,-810 130,-846"/>
<text text-anchor="middle" x="89.75" y="-823.33" font-family="Helvetica,sans-Serif" font-size="14.00">crowdsec</text>
<polygon fill="#dfefff" stroke="black" points="130.5,-684 49.5,-684 49.5,-648 130.5,-648 130.5,-684"/>
<text text-anchor="middle" x="90" y="-662.3" font-family="Helvetica,sans-Serif" font-size="14.00">crowdsec</text>
</g>
<!-- svc:crowdsec&#45;&gt;net:traefik -->
<g id="edge2" class="edge">
<title>svc:crowdsec&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M130.43,-828C156.64,-828 191.33,-828 219.99,-828"/>
<polygon fill="black" stroke="black" points="219.94,-831.5 229.94,-828 219.94,-824.5 219.94,-831.5"/>
<path fill="none" stroke="black" d="M130.61,-674.06C146.59,-678.3 164.81,-684.44 180,-693 206.25,-707.78 231.35,-731.35 248.38,-749.26"/>
<polygon fill="black" stroke="black" points="246.24,-752.1 255.62,-757.03 251.37,-747.33 246.24,-752.1"/>
</g>
<!-- svc:docker&#45;socket&#45;proxy -->
<g id="node3" class="node">
<title>svc:docker&#45;socket&#45;proxy</title>
<polygon fill="#dfefff" stroke="black" points="167.12,-1116 12.38,-1116 12.38,-1080 167.12,-1080 167.12,-1116"/>
<text text-anchor="middle" x="89.75" y="-1093.33" font-family="Helvetica,sans-Serif" font-size="14.00">docker&#45;socket&#45;proxy</text>
<polygon fill="#dfefff" stroke="black" points="167.5,-954 12.5,-954 12.5,-918 167.5,-918 167.5,-954"/>
<text text-anchor="middle" x="90" y="-932.3" font-family="Helvetica,sans-Serif" font-size="14.00">docker&#45;socket&#45;proxy</text>
</g>
<!-- net:monitor -->
<g id="node32" class="node">
<g id="node30" class="node">
<title>net:monitor</title>
<ellipse fill="#f4f4f4" stroke="black" cx="274.6" cy="-1314" rx="49.1" ry="18"/>
<text text-anchor="middle" x="274.6" y="-1309.33" font-family="Helvetica,sans-Serif" font-size="14.00">monitor</text>
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-1206" rx="46.29" ry="18"/>
<text text-anchor="middle" x="271.25" y="-1202.3" font-family="Helvetica,sans-Serif" font-size="14.00">monitor</text>
</g>
<!-- svc:docker&#45;socket&#45;proxy&#45;&gt;net:monitor -->
<g id="edge3" class="edge">
<title>svc:docker&#45;socket&#45;proxy&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M167.08,-1116.44C171.5,-1118.94 175.69,-1121.78 179.5,-1125 229.66,-1167.43 255.71,-1243.09 266.82,-1284.65"/>
<polygon fill="black" stroke="black" points="263.39,-1285.36 269.25,-1294.19 270.17,-1283.63 263.39,-1285.36"/>
<path fill="none" stroke="black" d="M167.53,-953.71C172.02,-956.38 176.24,-959.46 180,-963 242.3,-1021.6 261.83,-1127.12 267.77,-1177.6"/>
<polygon fill="black" stroke="black" points="264.31,-1178.21 268.86,-1187.78 271.27,-1177.46 264.31,-1178.21"/>
</g>
<!-- svc:docker&#45;socket&#45;proxy&#45;&gt;net:traefik -->
<g id="edge4" class="edge">
<title>svc:docker&#45;socket&#45;proxy&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M167.43,-1079.96C171.77,-1077.37 175.84,-1074.4 179.5,-1071 242.11,-1012.86 263.56,-908.25 270.5,-857.38"/>
<polygon fill="black" stroke="black" points="273.94,-858.09 271.71,-847.73 266.99,-857.22 273.94,-858.09"/>
<path fill="none" stroke="black" d="M165.31,-917.9C170.5,-915.32 175.46,-912.37 180,-909 218.01,-880.82 244.97,-831.56 259.03,-800.98"/>
<polygon fill="black" stroke="black" points="262.27,-802.31 263.14,-791.76 255.87,-799.46 262.27,-802.31"/>
</g>
<!-- svc:docker&#45;update&#45;exporter -->
<g id="node4" class="node">
<title>svc:docker&#45;update&#45;exporter</title>
<polygon fill="#dfefff" stroke="black" points="179.5,-1494 0,-1494 0,-1458 179.5,-1458 179.5,-1494"/>
<text text-anchor="middle" x="89.75" y="-1471.33" font-family="Helvetica,sans-Serif" font-size="14.00">docker&#45;update&#45;exporter</text>
<polygon fill="#dfefff" stroke="black" points="180,-1494 0,-1494 0,-1458 180,-1458 180,-1494"/>
<text text-anchor="middle" x="90" y="-1472.3" font-family="Helvetica,sans-Serif" font-size="14.00">docker&#45;update&#45;exporter</text>
</g>
<!-- svc:docker&#45;update&#45;exporter&#45;&gt;net:monitor -->
<g id="edge5" class="edge">
<title>svc:docker&#45;update&#45;exporter&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M165.23,-1457.57C170.25,-1455.06 175.07,-1452.22 179.5,-1449 217.95,-1421.05 246.17,-1372.4 261.21,-1341.77"/>
<polygon fill="black" stroke="black" points="264.19,-1343.65 265.33,-1333.12 257.87,-1340.64 264.19,-1343.65"/>
<path fill="none" stroke="black" d="M168.37,-1457.79C172.55,-1455.23 176.47,-1452.32 180,-1449 242.3,-1390.4 261.83,-1284.88 267.77,-1234.4"/>
<polygon fill="black" stroke="black" points="271.27,-1234.54 268.86,-1224.22 264.31,-1233.79 271.27,-1234.54"/>
</g>
<!-- svc:error&#45;pages -->
<g id="node5" class="node">
<title>svc:error&#45;pages</title>
<polygon fill="#dfefff" stroke="black" points="137.12,-792 42.38,-792 42.38,-756 137.12,-756 137.12,-792"/>
<text text-anchor="middle" x="89.75" y="-769.33" font-family="Helvetica,sans-Serif" font-size="14.00">error&#45;pages</text>
<polygon fill="#dfefff" stroke="black" points="137.5,-630 42.5,-630 42.5,-594 137.5,-594 137.5,-630"/>
<text text-anchor="middle" x="90" y="-608.3" font-family="Helvetica,sans-Serif" font-size="14.00">error&#45;pages</text>
</g>
<!-- svc:error&#45;pages&#45;&gt;net:traefik -->
<g id="edge6" class="edge">
<title>svc:error&#45;pages&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M137.36,-787.77C165.17,-795.98 200.32,-806.36 227.95,-814.52"/>
<polygon fill="black" stroke="black" points="226.88,-817.85 237.46,-817.33 228.86,-811.14 226.88,-817.85"/>
<path fill="none" stroke="black" d="M137.71,-619.76C152.25,-623.79 167.68,-629.86 180,-639 218.01,-667.18 244.97,-716.44 259.03,-747.02"/>
<polygon fill="black" stroke="black" points="255.87,-748.54 263.14,-756.24 262.27,-745.69 255.87,-748.54"/>
</g>
<!-- svc:gitea -->
<g id="node6" class="node">
<title>svc:gitea</title>
<polygon fill="#dfefff" stroke="black" points="116.75,-738 62.75,-738 62.75,-702 116.75,-702 116.75,-738"/>
<text text-anchor="middle" x="89.75" y="-715.33" font-family="Helvetica,sans-Serif" font-size="14.00">gitea</text>
<polygon fill="#dfefff" stroke="black" points="117,-576 63,-576 63,-540 117,-540 117,-576"/>
<text text-anchor="middle" x="90" y="-554.3" font-family="Helvetica,sans-Serif" font-size="14.00">gitea</text>
</g>
<!-- svc:gitea&#45;&gt;net:traefik -->
<g id="edge7" class="edge">
<title>svc:gitea&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M117.13,-725C135.41,-729.18 159.89,-736.21 179.5,-747 206.52,-761.87 232.73,-785.42 250.6,-803.3"/>
<polygon fill="black" stroke="black" points="247.64,-805.29 257.14,-809.99 252.65,-800.39 247.64,-805.29"/>
<path fill="none" stroke="black" d="M117.07,-560.28C136.41,-563.2 162.37,-569.85 180,-585 229.98,-627.95 254.42,-704.8 264.44,-746.04"/>
<polygon fill="black" stroke="black" points="261.07,-747 266.73,-755.95 267.88,-745.42 261.07,-747"/>
</g>
<!-- svc:gitea&#45;runner -->
<g id="node7" class="node">
<title>svc:gitea&#45;runner</title>
<polygon fill="#dfefff" stroke="black" points="141.25,-684 38.25,-684 38.25,-648 141.25,-648 141.25,-684"/>
<text text-anchor="middle" x="89.75" y="-661.33" font-family="Helvetica,sans-Serif" font-size="14.00">gitea&#45;runner</text>
<polygon fill="#dfefff" stroke="black" points="142,-522 38,-522 38,-486 142,-486 142,-522"/>
<text text-anchor="middle" x="90" y="-500.3" font-family="Helvetica,sans-Serif" font-size="14.00">gitea&#45;runner</text>
</g>
<!-- svc:gitea&#45;runner&#45;&gt;net:traefik -->
<g id="edge8" class="edge">
<title>svc:gitea&#45;runner&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M141.36,-675.13C154.61,-679.13 168.3,-684.85 179.5,-693 217.95,-720.95 246.17,-769.6 261.21,-800.23"/>
<polygon fill="black" stroke="black" points="257.87,-801.36 265.33,-808.88 264.19,-798.35 257.87,-801.36"/>
<path fill="none" stroke="black" d="M142.31,-511.04C155.9,-515.03 169.65,-521.26 180,-531 242.3,-589.6 261.83,-695.12 267.77,-745.6"/>
<polygon fill="black" stroke="black" points="264.31,-746.21 268.86,-755.78 271.27,-745.46 264.31,-746.21"/>
</g>
<!-- svc:gotify -->
<g id="node8" class="node">
<title>svc:gotify</title>
<polygon fill="#dfefff" stroke="black" points="117.25,-630 62.25,-630 62.25,-594 117.25,-594 117.25,-630"/>
<text text-anchor="middle" x="89.75" y="-607.33" font-family="Helvetica,sans-Serif" font-size="14.00">gotify</text>
<polygon fill="#dfefff" stroke="black" points="118,-468 62,-468 62,-432 118,-432 118,-468"/>
<text text-anchor="middle" x="90" y="-446.3" font-family="Helvetica,sans-Serif" font-size="14.00">gotify</text>
</g>
<!-- svc:gotify&#45;&gt;net:traefik -->
<g id="edge9" class="edge">
<title>svc:gotify&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M117.49,-614.51C136.64,-617.54 162.04,-624.23 179.5,-639 229.66,-681.43 255.71,-757.09 266.82,-798.65"/>
<polygon fill="black" stroke="black" points="263.39,-799.36 269.25,-808.19 270.17,-797.63 263.39,-799.36"/>
<path fill="none" stroke="black" d="M118.17,-451.6C137.81,-454.16 163.67,-460.68 180,-477 254.99,-551.96 268.02,-687.13 270.03,-745.69"/>
<polygon fill="black" stroke="black" points="266.53,-745.79 270.29,-755.69 273.53,-745.61 266.53,-745.79"/>
</g>
<!-- svc:grafana -->
<g id="node9" class="node">
<title>svc:grafana</title>
<polygon fill="#dfefff" stroke="black" points="124.75,-1062 54.75,-1062 54.75,-1026 124.75,-1026 124.75,-1062"/>
<text text-anchor="middle" x="89.75" y="-1039.33" font-family="Helvetica,sans-Serif" font-size="14.00">grafana</text>
<polygon fill="#dfefff" stroke="black" points="125.5,-1278 54.5,-1278 54.5,-1242 125.5,-1242 125.5,-1278"/>
<text text-anchor="middle" x="90" y="-1256.3" font-family="Helvetica,sans-Serif" font-size="14.00">grafana</text>
</g>
<!-- svc:grafana&#45;&gt;net:monitor -->
<g id="edge10" class="edge">
<title>svc:grafana&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M125.1,-1047.21C143.24,-1050.54 164.75,-1057.3 179.5,-1071 242.11,-1129.14 263.56,-1233.75 270.5,-1284.62"/>
<polygon fill="black" stroke="black" points="266.99,-1284.78 271.71,-1294.27 273.94,-1283.91 266.99,-1284.78"/>
<path fill="none" stroke="black" d="M125.56,-1249.59C153.74,-1241.1 193.78,-1229.04 224.6,-1219.75"/>
<polygon fill="black" stroke="black" points="225.69,-1223.08 234.26,-1216.84 223.67,-1216.38 225.69,-1223.08"/>
</g>
<!-- svc:grafana&#45;&gt;net:traefik -->
<g id="edge11" class="edge">
<title>svc:grafana&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M125.04,-1040.15C142.95,-1036.63 164.25,-1029.9 179.5,-1017 229.66,-974.57 255.71,-898.91 266.82,-857.35"/>
<polygon fill="black" stroke="black" points="270.17,-858.37 269.25,-847.81 263.39,-856.64 270.17,-858.37"/>
<path fill="none" stroke="black" d="M125.54,-1257.93C144.23,-1254.97 166.25,-1248.21 180,-1233 238.17,-1168.67 262.1,-892.17 268.43,-802.32"/>
<polygon fill="black" stroke="black" points="271.93,-802.3 269.13,-792.08 264.95,-801.82 271.93,-802.3"/>
</g>
<!-- svc:gramps&#45;redis -->
<g id="node10" class="node">
<title>svc:gramps&#45;redis</title>
<polygon fill="#dfefff" stroke="black" points="143.88,-360 35.62,-360 35.62,-324 143.88,-324 143.88,-360"/>
<text text-anchor="middle" x="89.75" y="-337.32" font-family="Helvetica,sans-Serif" font-size="14.00">gramps&#45;redis</text>
<polygon fill="#dfefff" stroke="black" points="144.5,-360 35.5,-360 35.5,-324 144.5,-324 144.5,-360"/>
<text text-anchor="middle" x="90" y="-338.3" font-family="Helvetica,sans-Serif" font-size="14.00">gramps&#45;redis</text>
</g>
<!-- net:gramps -->
<g id="node31" class="node">
<g id="node29" class="node">
<title>net:gramps</title>
<ellipse fill="#f4f4f4" stroke="black" cx="274.6" cy="-342" rx="48.58" ry="18"/>
<text text-anchor="middle" x="274.6" y="-337.32" font-family="Helvetica,sans-Serif" font-size="14.00">gramps</text>
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-342" rx="45.49" ry="18"/>
<text text-anchor="middle" x="271.25" y="-338.3" font-family="Helvetica,sans-Serif" font-size="14.00">gramps</text>
</g>
<!-- svc:gramps&#45;redis&#45;&gt;net:gramps -->
<g id="edge12" class="edge">
<title>svc:gramps&#45;redis&#45;&gt;net:gramps</title>
<path fill="none" stroke="black" d="M144.13,-342C166.12,-342 191.69,-342 214.27,-342"/>
<polygon fill="black" stroke="black" points="214.25,-345.5 224.25,-342 214.25,-338.5 214.25,-345.5"/>
<path fill="none" stroke="black" d="M144.78,-342C167.14,-342 193.05,-342 215.51,-342"/>
<polygon fill="black" stroke="black" points="215.56,-345.5 225.56,-342 215.56,-338.5 215.56,-345.5"/>
</g>
<!-- svc:grampsweb -->
<g id="node11" class="node">
<title>svc:grampsweb</title>
<polygon fill="#dfefff" stroke="black" points="138.62,-414 40.88,-414 40.88,-378 138.62,-378 138.62,-414"/>
<text text-anchor="middle" x="89.75" y="-391.32" font-family="Helvetica,sans-Serif" font-size="14.00">grampsweb</text>
<polygon fill="#dfefff" stroke="black" points="139,-414 41,-414 41,-378 139,-378 139,-414"/>
<text text-anchor="middle" x="90" y="-392.3" font-family="Helvetica,sans-Serif" font-size="14.00">grampsweb</text>
</g>
<!-- svc:grampsweb&#45;&gt;net:gramps -->
<g id="edge13" class="edge">
<title>svc:grampsweb&#45;&gt;net:gramps</title>
<path fill="none" stroke="black" d="M138.79,-381.81C165.27,-373.99 198.07,-364.31 224.69,-356.45"/>
<polygon fill="black" stroke="black" points="225.63,-359.82 234.23,-353.63 223.65,-353.1 225.63,-359.82"/>
<path fill="none" stroke="black" d="M139.03,-381.53C165.7,-373.5 198.68,-363.56 224.9,-355.66"/>
<polygon fill="black" stroke="black" points="226.03,-358.98 234.59,-352.74 224.01,-352.27 226.03,-358.98"/>
</g>
<!-- svc:grampsweb&#45;&gt;net:traefik -->
<g id="edge14" class="edge">
<title>svc:grampsweb&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M139.04,-401.22C153.82,-405.09 168.94,-411.71 179.5,-423 231.19,-478.28 261.34,-714.72 270.55,-798.46"/>
<polygon fill="black" stroke="black" points="267.04,-798.59 271.6,-808.16 274,-797.84 267.04,-798.59"/>
<path fill="none" stroke="black" d="M139.27,-401.34C154.08,-405.21 169.28,-411.81 180,-423 225.12,-470.09 256.34,-671.08 266.59,-745.84"/>
<polygon fill="black" stroke="black" points="263.14,-746.48 267.95,-755.92 270.08,-745.55 263.14,-746.48"/>
</g>
<!-- svc:grampsweb_celery -->
<g id="node12" class="node">
<title>svc:grampsweb_celery</title>
<polygon fill="#dfefff" stroke="black" points="163,-306 16.5,-306 16.5,-270 163,-270 163,-306"/>
<text text-anchor="middle" x="89.75" y="-283.32" font-family="Helvetica,sans-Serif" font-size="14.00">grampsweb_celery</text>
<polygon fill="#dfefff" stroke="black" points="163.5,-306 16.5,-306 16.5,-270 163.5,-270 163.5,-306"/>
<text text-anchor="middle" x="90" y="-284.3" font-family="Helvetica,sans-Serif" font-size="14.00">grampsweb_celery</text>
</g>
<!-- svc:grampsweb_celery&#45;&gt;net:gramps -->
<g id="edge15" class="edge">
<title>svc:grampsweb_celery&#45;&gt;net:gramps</title>
<path fill="none" stroke="black" d="M153.17,-306.43C176.62,-313.36 202.91,-321.12 224.94,-327.63"/>
<polygon fill="black" stroke="black" points="223.66,-330.9 234.25,-330.38 225.65,-324.19 223.66,-330.9"/>
<path fill="none" stroke="black" d="M151.18,-306.13C175.28,-313.39 202.57,-321.61 224.94,-328.35"/>
<polygon fill="black" stroke="black" points="223.94,-331.71 234.52,-331.24 225.96,-325 223.94,-331.71"/>
</g>
<!-- svc:influxdb -->
<g id="node13" class="node">
<title>svc:influxdb</title>
<polygon fill="#dfefff" stroke="black" points="126.25,-1386 53.25,-1386 53.25,-1350 126.25,-1350 126.25,-1386"/>
<text text-anchor="middle" x="89.75" y="-1363.33" font-family="Helvetica,sans-Serif" font-size="14.00">influxdb</text>
<polygon fill="#dfefff" stroke="black" points="127,-1224 53,-1224 53,-1188 127,-1188 127,-1224"/>
<text text-anchor="middle" x="90" y="-1202.3" font-family="Helvetica,sans-Serif" font-size="14.00">influxdb</text>
</g>
<!-- svc:influxdb&#45;&gt;net:monitor -->
<g id="edge16" class="edge">
<title>svc:influxdb&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M126.44,-1357.46C154.39,-1349.2 193.59,-1337.63 224.5,-1328.5"/>
<polygon fill="black" stroke="black" points="225.43,-1331.88 234.03,-1325.69 223.45,-1325.16 225.43,-1331.88"/>
<path fill="none" stroke="black" d="M127.27,-1206C152.33,-1206 186.13,-1206 214.57,-1206"/>
<polygon fill="black" stroke="black" points="214.79,-1209.5 224.79,-1206 214.79,-1202.5 214.79,-1209.5"/>
</g>
<!-- svc:influxdb&#45;&gt;net:traefik -->
<g id="edge17" class="edge">
<title>svc:influxdb&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M126.6,-1365.75C144.97,-1362.7 166.21,-1355.9 179.5,-1341 244.32,-1268.35 266.64,-955.74 272.12,-857.6"/>
<polygon fill="black" stroke="black" points="275.61,-857.9 272.65,-847.73 268.62,-857.53 275.61,-857.9"/>
<path fill="none" stroke="black" d="M127.17,-1203.5C145.42,-1200.36 166.5,-1193.56 180,-1179 231.57,-1123.4 259.36,-885.3 267.6,-802.51"/>
<polygon fill="black" stroke="black" points="271.1,-802.62 268.59,-792.33 264.14,-801.94 271.1,-802.62"/>
</g>
<!-- svc:monitor&#45;kuma -->
<g id="node14" class="node">
<title>svc:monitor&#45;kuma</title>
<polygon fill="#dfefff" stroke="black" points="145.75,-1332 33.75,-1332 33.75,-1296 145.75,-1296 145.75,-1332"/>
<text text-anchor="middle" x="89.75" y="-1309.33" font-family="Helvetica,sans-Serif" font-size="14.00">monitor&#45;kuma</text>
<polygon fill="#dfefff" stroke="black" points="146.5,-1170 33.5,-1170 33.5,-1134 146.5,-1134 146.5,-1170"/>
<text text-anchor="middle" x="90" y="-1148.3" font-family="Helvetica,sans-Serif" font-size="14.00">monitor&#45;kuma</text>
</g>
<!-- svc:monitor&#45;kuma&#45;&gt;net:monitor -->
<g id="edge18" class="edge">
<title>svc:monitor&#45;kuma&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M146.11,-1314C167.49,-1314 192.01,-1314 213.8,-1314"/>
<polygon fill="black" stroke="black" points="213.73,-1317.5 223.73,-1314 213.73,-1310.5 213.73,-1317.5"/>
<path fill="none" stroke="black" d="M146.73,-1168.79C171.73,-1176.32 200.85,-1185.1 224.54,-1192.23"/>
<polygon fill="black" stroke="black" points="223.75,-1195.65 234.33,-1195.18 225.77,-1188.94 223.75,-1195.65"/>
</g>
<!-- svc:monitor&#45;kuma&#45;&gt;net:traefik -->
<g id="edge19" class="edge">
<title>svc:monitor&#45;kuma&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M146.15,-1306.92C158.6,-1302.89 170.71,-1296.64 179.5,-1287 237.7,-1223.11 264.11,-949.07 271.41,-857.74"/>
<polygon fill="black" stroke="black" points="274.89,-858.1 272.18,-847.85 267.92,-857.55 274.89,-858.1"/>
<path fill="none" stroke="black" d="M146.69,-1144.49C159.02,-1140.46 171.06,-1134.33 180,-1125 225.12,-1077.91 256.34,-876.92 266.59,-802.16"/>
<polygon fill="black" stroke="black" points="270.08,-802.45 267.95,-792.08 263.14,-801.52 270.08,-802.45"/>
</g>
<!-- svc:mtls&#45;bridge -->
<g id="node15" class="node">
<title>svc:mtls&#45;bridge</title>
<polygon fill="#dfefff" stroke="black" points="137.88,-1278 41.62,-1278 41.62,-1242 137.88,-1242 137.88,-1278"/>
<text text-anchor="middle" x="89.75" y="-1255.33" font-family="Helvetica,sans-Serif" font-size="14.00">mtls&#45;bridge</text>
<polygon fill="#dfefff" stroke="black" points="138.5,-1116 41.5,-1116 41.5,-1080 138.5,-1080 138.5,-1116"/>
<text text-anchor="middle" x="90" y="-1094.3" font-family="Helvetica,sans-Serif" font-size="14.00">mtls&#45;bridge</text>
</g>
<!-- svc:mtls&#45;bridge&#45;&gt;net:monitor -->
<g id="edge20" class="edge">
<title>svc:mtls&#45;bridge&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M138.31,-1274.05C164.79,-1281.87 197.71,-1291.59 224.44,-1299.48"/>
<polygon fill="black" stroke="black" points="223.45,-1302.84 234.03,-1302.31 225.43,-1296.13 223.45,-1302.84"/>
<path fill="none" stroke="black" d="M138.76,-1108.34C152.58,-1112.41 167.34,-1117.87 180,-1125 206.25,-1139.78 231.35,-1163.35 248.38,-1181.26"/>
<polygon fill="black" stroke="black" points="246.24,-1184.1 255.62,-1189.03 251.37,-1179.33 246.24,-1184.1"/>
</g>
<!-- svc:mtls&#45;bridge&#45;&gt;net:traefik -->
<g id="edge21" class="edge">
<title>svc:mtls&#45;bridge&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M138.12,-1255.01C153.19,-1251.19 168.72,-1244.53 179.5,-1233 231.19,-1177.72 261.34,-941.28 270.55,-857.54"/>
<polygon fill="black" stroke="black" points="274,-858.16 271.6,-847.84 267.04,-857.41 274,-858.16"/>
<path fill="none" stroke="black" d="M138.53,-1092.51C153.46,-1088.63 168.92,-1082.07 180,-1071 254.99,-996.04 268.02,-860.87 270.03,-802.31"/>
<polygon fill="black" stroke="black" points="273.53,-802.39 270.29,-792.31 266.53,-802.21 273.53,-802.39"/>
</g>
<!-- svc:nextcloud&#45;db -->
<g id="node16" class="node">
<title>svc:nextcloud&#45;db</title>
<polygon fill="#dfefff" stroke="black" points="143.5,-90 36,-90 36,-54 143.5,-54 143.5,-90"/>
<text text-anchor="middle" x="89.75" y="-67.33" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud&#45;db</text>
<polygon fill="#dfefff" stroke="black" points="144,-90 36,-90 36,-54 144,-54 144,-90"/>
<text text-anchor="middle" x="90" y="-68.3" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud&#45;db</text>
</g>
<!-- net:nextcloud -->
<g id="node33" class="node">
<g id="node31" class="node">
<title>net:nextcloud</title>
<ellipse fill="#f4f4f4" stroke="black" cx="274.6" cy="-180" rx="59.1" ry="18"/>
<text text-anchor="middle" x="274.6" y="-175.32" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud</text>
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-180" rx="55.49" ry="18"/>
<text text-anchor="middle" x="271.25" y="-176.3" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud</text>
</g>
<!-- svc:nextcloud&#45;db&#45;&gt;net:nextcloud -->
<g id="edge22" class="edge">
<title>svc:nextcloud&#45;db&#45;&gt;net:nextcloud</title>
<path fill="none" stroke="black" d="M143.84,-84.22C155.96,-88.07 168.49,-92.94 179.5,-99 206.19,-113.69 232.1,-136.85 249.95,-154.65"/>
<polygon fill="black" stroke="black" points="246.99,-156.64 256.49,-161.32 251.99,-151.73 246.99,-156.64"/>
<path fill="none" stroke="black" d="M144.33,-84.04C156.48,-87.9 169.03,-92.82 180,-99 206.09,-113.7 231.04,-137.06 248.07,-154.93"/>
<polygon fill="black" stroke="black" points="245.93,-157.77 255.31,-162.7 251.06,-153 245.93,-157.77"/>
</g>
<!-- svc:nextcloud&#45;redis -->
<g id="node17" class="node">
<title>svc:nextcloud&#45;redis</title>
<polygon fill="#dfefff" stroke="black" points="151.38,-198 28.12,-198 28.12,-162 151.38,-162 151.38,-198"/>
<text text-anchor="middle" x="89.75" y="-175.32" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud&#45;redis</text>
<polygon fill="#dfefff" stroke="black" points="152,-198 28,-198 28,-162 152,-162 152,-198"/>
<text text-anchor="middle" x="90" y="-176.3" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud&#45;redis</text>
</g>
<!-- svc:nextcloud&#45;redis&#45;&gt;net:nextcloud -->
<g id="edge23" class="edge">
<title>svc:nextcloud&#45;redis&#45;&gt;net:nextcloud</title>
<path fill="none" stroke="black" d="M151.64,-180C168.42,-180 186.77,-180 204.01,-180"/>
<polygon fill="black" stroke="black" points="203.64,-183.5 213.64,-180 203.64,-176.5 203.64,-183.5"/>
<path fill="none" stroke="black" d="M152.18,-180C169.48,-180 188.35,-180 205.83,-180"/>
<polygon fill="black" stroke="black" points="205.94,-183.5 215.94,-180 205.94,-176.5 205.94,-183.5"/>
</g>
<!-- svc:nextcloud&#45;webapp -->
<g id="node18" class="node">
<title>svc:nextcloud&#45;webapp</title>
<polygon fill="#dfefff" stroke="black" points="161.88,-252 17.62,-252 17.62,-216 161.88,-216 161.88,-252"/>
<text text-anchor="middle" x="89.75" y="-229.32" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud&#45;webapp</text>
<polygon fill="#dfefff" stroke="black" points="162.5,-252 17.5,-252 17.5,-216 162.5,-216 162.5,-252"/>
<text text-anchor="middle" x="90" y="-230.3" font-family="Helvetica,sans-Serif" font-size="14.00">nextcloud&#45;webapp</text>
</g>
<!-- svc:nextcloud&#45;webapp&#45;&gt;net:nextcloud -->
<g id="edge24" class="edge">
<title>svc:nextcloud&#45;webapp&#45;&gt;net:nextcloud</title>
<path fill="none" stroke="black" d="M153.17,-215.57C174.91,-209.14 199.11,-202 220.07,-195.81"/>
<polygon fill="black" stroke="black" points="220.97,-199.19 229.57,-193 218.99,-192.48 220.97,-199.19"/>
<path fill="none" stroke="black" d="M151.18,-215.87C173.57,-209.12 198.72,-201.55 220.11,-195.1"/>
<polygon fill="black" stroke="black" points="221.4,-198.37 229.97,-192.13 219.38,-191.67 221.4,-198.37"/>
</g>
<!-- svc:nextcloud&#45;webapp&#45;&gt;net:traefik -->
<g id="edge25" class="edge">
<title>svc:nextcloud&#45;webapp&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M162.07,-247.45C168.62,-250.99 174.62,-255.43 179.5,-261 215.53,-302.08 258.79,-687.96 270.53,-798.52"/>
<polygon fill="black" stroke="black" points="267.03,-798.68 271.56,-808.26 273.99,-797.95 267.03,-798.68"/>
<path fill="none" stroke="black" d="M162.89,-247.71C169.31,-251.2 175.18,-255.56 180,-261 212.66,-297.85 255.07,-643.36 267,-745.62"/>
<polygon fill="black" stroke="black" points="263.55,-746.27 268.18,-755.8 270.51,-745.47 263.55,-746.27"/>
</g>
<!-- svc:node&#45;exporter -->
<g id="node19" class="node">
<title>svc:node&#45;exporter</title>
<polygon fill="#dfefff" stroke="black" points="147.25,-1440 32.25,-1440 32.25,-1404 147.25,-1404 147.25,-1440"/>
<text text-anchor="middle" x="89.75" y="-1417.33" font-family="Helvetica,sans-Serif" font-size="14.00">node&#45;exporter</text>
<polygon fill="#dfefff" stroke="black" points="148,-1440 32,-1440 32,-1404 148,-1404 148,-1440"/>
<text text-anchor="middle" x="90" y="-1418.3" font-family="Helvetica,sans-Serif" font-size="14.00">node&#45;exporter</text>
</g>
<!-- svc:node&#45;exporter&#45;&gt;net:monitor -->
<g id="edge26" class="edge">
<title>svc:node&#45;exporter&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M147.58,-1408.56C158.51,-1404.92 169.62,-1400.43 179.5,-1395 206.36,-1380.22 232.42,-1356.86 250.27,-1339.02"/>
<polygon fill="black" stroke="black" points="252.32,-1341.94 256.82,-1332.34 247.32,-1337.04 252.32,-1341.94"/>
<path fill="none" stroke="black" d="M148.25,-1412.27C159.68,-1408.33 170.94,-1402.79 180,-1395 229.98,-1352.05 254.42,-1275.2 264.44,-1233.96"/>
<polygon fill="black" stroke="black" points="267.88,-1234.58 266.73,-1224.05 261.07,-1233 267.88,-1234.58"/>
</g>
<!-- svc:node&#45;red -->
<g id="node20" class="node">
<title>svc:node&#45;red</title>
<polygon fill="#dfefff" stroke="black" points="128.88,-1224 50.62,-1224 50.62,-1188 128.88,-1188 128.88,-1224"/>
<text text-anchor="middle" x="89.75" y="-1201.33" font-family="Helvetica,sans-Serif" font-size="14.00">node&#45;red</text>
<polygon fill="#dfefff" stroke="black" points="129.5,-1062 50.5,-1062 50.5,-1026 129.5,-1026 129.5,-1062"/>
<text text-anchor="middle" x="90" y="-1040.3" font-family="Helvetica,sans-Serif" font-size="14.00">node&#45;red</text>
</g>
<!-- svc:node&#45;red&#45;&gt;net:monitor -->
<g id="edge27" class="edge">
<title>svc:node&#45;red&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M129.28,-1214C145.41,-1218.27 163.98,-1224.46 179.5,-1233 206.36,-1247.78 232.42,-1271.14 250.27,-1288.98"/>
<polygon fill="black" stroke="black" points="247.32,-1290.96 256.82,-1295.66 252.32,-1286.06 247.32,-1290.96"/>
<path fill="none" stroke="black" d="M129.57,-1049.69C146.29,-1053.6 165.34,-1060.13 180,-1071 218.01,-1099.18 244.97,-1148.44 259.03,-1179.02"/>
<polygon fill="black" stroke="black" points="255.87,-1180.54 263.14,-1188.24 262.27,-1177.69 255.87,-1180.54"/>
</g>
<!-- svc:node&#45;red&#45;&gt;net:traefik -->
<g id="edge28" class="edge">
<title>svc:node&#45;red&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M129.25,-1202.74C146.74,-1199.35 166.4,-1192.54 179.5,-1179 224.78,-1132.19 258.23,-932.59 269.48,-857.09"/>
<polygon fill="black" stroke="black" points="272.88,-857.98 270.87,-847.58 265.96,-856.97 272.88,-857.98"/>
<path fill="none" stroke="black" d="M129.95,-1040.03C147.14,-1036.46 166.48,-1029.72 180,-1017 242.3,-958.4 261.83,-852.88 267.77,-802.4"/>
<polygon fill="black" stroke="black" points="271.27,-802.54 268.86,-792.22 264.31,-801.79 271.27,-802.54"/>
</g>
<!-- svc:passbolt&#45;db -->
<g id="node21" class="node">
<title>svc:passbolt&#45;db</title>
<polygon fill="#dfefff" stroke="black" points="138.62,-36 40.88,-36 40.88,0 138.62,0 138.62,-36"/>
<text text-anchor="middle" x="89.75" y="-13.32" font-family="Helvetica,sans-Serif" font-size="14.00">passbolt&#45;db</text>
<polygon fill="#dfefff" stroke="black" points="139,-36 41,-36 41,0 139,0 139,-36"/>
<text text-anchor="middle" x="90" y="-14.3" font-family="Helvetica,sans-Serif" font-size="14.00">passbolt&#45;db</text>
</g>
<!-- net:passbolt -->
<g id="node34" class="node">
<g id="node32" class="node">
<title>net:passbolt</title>
<ellipse fill="#f4f4f4" stroke="black" cx="274.6" cy="-72" rx="52.26" ry="18"/>
<text text-anchor="middle" x="274.6" y="-67.33" font-family="Helvetica,sans-Serif" font-size="14.00">passbolt</text>
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-72" rx="48.99" ry="18"/>
<text text-anchor="middle" x="271.25" y="-68.3" font-family="Helvetica,sans-Serif" font-size="14.00">passbolt</text>
</g>
<!-- svc:passbolt&#45;db&#45;&gt;net:passbolt -->
<g id="edge29" class="edge">
<title>svc:passbolt&#45;db&#45;&gt;net:passbolt</title>
<path fill="none" stroke="black" d="M138.79,-32.19C164.72,-39.84 196.7,-49.29 223,-57.06"/>
<polygon fill="black" stroke="black" points="221.86,-60.37 232.44,-59.85 223.85,-53.66 221.86,-60.37"/>
<path fill="none" stroke="black" d="M139.03,-32.47C165.15,-40.34 197.32,-50.03 223.27,-57.85"/>
<polygon fill="black" stroke="black" points="222.3,-61.21 232.88,-60.74 224.32,-54.51 222.3,-61.21"/>
</g>
<!-- svc:passbolt&#45;webapp -->
<g id="node22" class="node">
<title>svc:passbolt&#45;webapp</title>
<polygon fill="#dfefff" stroke="black" points="157,-144 22.5,-144 22.5,-108 157,-108 157,-144"/>
<text text-anchor="middle" x="89.75" y="-121.33" font-family="Helvetica,sans-Serif" font-size="14.00">passbolt&#45;webapp</text>
<polygon fill="#dfefff" stroke="black" points="157.5,-144 22.5,-144 22.5,-108 157.5,-108 157.5,-144"/>
<text text-anchor="middle" x="90" y="-122.3" font-family="Helvetica,sans-Serif" font-size="14.00">passbolt&#45;webapp</text>
</g>
<!-- svc:passbolt&#45;webapp&#45;&gt;net:passbolt -->
<g id="edge30" class="edge">
<title>svc:passbolt&#45;webapp&#45;&gt;net:passbolt</title>
<path fill="none" stroke="black" d="M153.17,-107.57C175.98,-100.83 201.49,-93.3 223.14,-86.9"/>
<polygon fill="black" stroke="black" points="224.02,-90.29 232.62,-84.1 222.04,-83.58 224.02,-90.29"/>
<path fill="none" stroke="black" d="M151.18,-107.87C174.64,-100.8 201.13,-92.82 223.16,-86.19"/>
<polygon fill="black" stroke="black" points="224.37,-89.48 232.94,-83.24 222.35,-82.77 224.37,-89.48"/>
</g>
<!-- svc:passbolt&#45;webapp&#45;&gt;net:traefik -->
<g id="edge31" class="edge">
<title>svc:passbolt&#45;webapp&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M157.45,-136.93C165.83,-140.81 173.54,-146.02 179.5,-153 190.23,-165.56 253.83,-669.77 269.91,-798.38"/>
<polygon fill="black" stroke="black" points="266.41,-798.64 271.13,-808.13 273.36,-797.77 266.41,-798.64"/>
<path fill="none" stroke="black" d="M157.85,-136.93C166.26,-140.81 174,-146.02 180,-153 189.88,-164.49 250.79,-625.33 266.53,-745.56"/>
<polygon fill="black" stroke="black" points="263.1,-746.33 267.87,-755.8 270.04,-745.43 263.1,-746.33"/>
</g>
<!-- svc:pihole&#45;exporter -->
<g id="node23" class="node">
<title>svc:pihole&#45;exporter</title>
<polygon fill="#dfefff" stroke="black" points="151,-1602 28.5,-1602 28.5,-1566 151,-1566 151,-1602"/>
<text text-anchor="middle" x="89.75" y="-1579.33" font-family="Helvetica,sans-Serif" font-size="14.00">pihole&#45;exporter</text>
<polygon fill="#dfefff" stroke="black" points="151.5,-1386 28.5,-1386 28.5,-1350 151.5,-1350 151.5,-1386"/>
<text text-anchor="middle" x="90" y="-1364.3" font-family="Helvetica,sans-Serif" font-size="14.00">pihole&#45;exporter</text>
</g>
<!-- svc:pihole&#45;exporter&#45;&gt;net:monitor -->
<g id="edge32" class="edge">
<title>svc:pihole&#45;exporter&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M151.06,-1573.76C161.45,-1569.85 171.47,-1564.45 179.5,-1557 242.11,-1498.86 263.56,-1394.25 270.5,-1343.38"/>
<polygon fill="black" stroke="black" points="273.94,-1344.09 271.71,-1333.73 266.99,-1343.22 273.94,-1344.09"/>
<path fill="none" stroke="black" d="M151.62,-1355.78C161.68,-1352.07 171.57,-1347.25 180,-1341 218.01,-1312.82 244.97,-1263.56 259.03,-1232.98"/>
<polygon fill="black" stroke="black" points="262.27,-1234.31 263.14,-1223.76 255.87,-1231.46 262.27,-1234.31"/>
</g>
<!-- svc:portainer -->
<g id="node24" class="node">
<title>svc:portainer</title>
<polygon fill="#dfefff" stroke="black" points="129.62,-576 49.88,-576 49.88,-540 129.62,-540 129.62,-576"/>
<text text-anchor="middle" x="89.75" y="-553.33" font-family="Helvetica,sans-Serif" font-size="14.00">portainer</text>
<polygon fill="#dfefff" stroke="black" points="130,-900 50,-900 50,-864 130,-864 130,-900"/>
<text text-anchor="middle" x="90" y="-878.3" font-family="Helvetica,sans-Serif" font-size="14.00">portainer</text>
</g>
<!-- svc:portainer&#45;&gt;net:traefik -->
<g id="edge33" class="edge">
<title>svc:portainer&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M129.96,-562.18C146.97,-565.79 166.05,-572.51 179.5,-585 242.11,-643.14 263.56,-747.75 270.5,-798.62"/>
<polygon fill="black" stroke="black" points="266.99,-798.78 271.71,-808.27 273.94,-797.91 266.99,-798.78"/>
<path fill="none" stroke="black" d="M130.17,-874.06C146.25,-869.82 164.67,-863.64 180,-855 206.25,-840.22 231.35,-816.65 248.38,-798.74"/>
<polygon fill="black" stroke="black" points="251.37,-800.67 255.62,-790.97 246.24,-795.9 251.37,-800.67"/>
</g>
<!-- svc:prometheus -->
<g id="node25" class="node">
<title>svc:prometheus</title>
<polygon fill="#dfefff" stroke="black" points="139.38,-1170 40.12,-1170 40.12,-1134 139.38,-1134 139.38,-1170"/>
<text text-anchor="middle" x="89.75" y="-1147.33" font-family="Helvetica,sans-Serif" font-size="14.00">prometheus</text>
<polygon fill="#dfefff" stroke="black" points="140,-1008 40,-1008 40,-972 140,-972 140,-1008"/>
<text text-anchor="middle" x="90" y="-986.3" font-family="Helvetica,sans-Serif" font-size="14.00">prometheus</text>
</g>
<!-- svc:prometheus&#45;&gt;net:monitor -->
<g id="edge34" class="edge">
<title>svc:prometheus&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M139.52,-1160.58C153.33,-1164.61 167.78,-1170.48 179.5,-1179 217.95,-1206.95 246.17,-1255.6 261.21,-1286.23"/>
<polygon fill="black" stroke="black" points="257.87,-1287.36 265.33,-1294.88 264.19,-1284.35 257.87,-1287.36"/>
<path fill="none" stroke="black" d="M140.37,-997.26C154.39,-1001.24 168.86,-1007.42 180,-1017 229.98,-1059.95 254.42,-1136.8 264.44,-1178.04"/>
<polygon fill="black" stroke="black" points="261.07,-1179 266.73,-1187.95 267.88,-1177.42 261.07,-1179"/>
</g>
<!-- svc:prometheus&#45;&gt;net:traefik -->
<g id="edge35" class="edge">
<title>svc:prometheus&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M139.46,-1146.03C153.91,-1142.11 168.73,-1135.64 179.5,-1125 254.55,-1050.8 269.86,-917.17 272.9,-857.81"/>
<polygon fill="black" stroke="black" points="276.4,-857.97 273.32,-847.83 269.4,-857.68 276.4,-857.97"/>
<path fill="none" stroke="black" d="M140.37,-982.74C154.39,-978.76 168.86,-972.58 180,-963 229.98,-920.05 254.42,-843.2 264.44,-801.96"/>
<polygon fill="black" stroke="black" points="267.88,-802.58 266.73,-792.05 261.07,-801 267.88,-802.58"/>
</g>
<!-- svc:searxng&#45;webapp -->
<g id="node26" class="node">
<title>svc:searxng&#45;webapp</title>
<polygon fill="#dfefff" stroke="black" points="155.5,-522 24,-522 24,-486 155.5,-486 155.5,-522"/>
<text text-anchor="middle" x="89.75" y="-499.32" font-family="Helvetica,sans-Serif" font-size="14.00">searxng&#45;webapp</text>
<polygon fill="#dfefff" stroke="black" points="156,-846 24,-846 24,-810 156,-810 156,-846"/>
<text text-anchor="middle" x="90" y="-824.3" font-family="Helvetica,sans-Serif" font-size="14.00">searxng&#45;webapp</text>
</g>
<!-- svc:searxng&#45;webapp&#45;&gt;net:traefik -->
<g id="edge36" class="edge">
<title>svc:searxng&#45;webapp&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M155.98,-515.68C164.67,-519.46 172.86,-524.43 179.5,-531 254.55,-605.2 269.86,-738.83 272.9,-798.19"/>
<polygon fill="black" stroke="black" points="269.4,-798.32 273.32,-808.17 276.4,-798.03 269.4,-798.32"/>
</g>
<!-- svc:shift&#45;recorder&#45;web -->
<g id="node27" class="node">
<title>svc:shift&#45;recorder&#45;web</title>
<polygon fill="#dfefff" stroke="black" points="160.38,-468 19.12,-468 19.12,-432 160.38,-432 160.38,-468"/>
<text text-anchor="middle" x="89.75" y="-445.32" font-family="Helvetica,sans-Serif" font-size="14.00">shift&#45;recorder&#45;web</text>
</g>
<!-- svc:shift&#45;recorder&#45;web&#45;&gt;net:traefik -->
<g id="edge37" class="edge">
<title>svc:shift&#45;recorder&#45;web&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M160.67,-463.5C167.65,-467.02 174.13,-471.44 179.5,-477 224.78,-523.81 258.23,-723.41 269.48,-798.91"/>
<polygon fill="black" stroke="black" points="265.96,-799.03 270.87,-808.42 272.88,-798.02 265.96,-799.03"/>
</g>
<!-- svc:stockfill -->
<g id="node28" class="node">
<title>svc:stockfill</title>
<polygon fill="#dfefff" stroke="black" points="124.38,-1008 55.12,-1008 55.12,-972 124.38,-972 124.38,-1008"/>
<text text-anchor="middle" x="89.75" y="-985.33" font-family="Helvetica,sans-Serif" font-size="14.00">stockfill</text>
</g>
<!-- svc:stockfill&#45;&gt;net:traefik -->
<g id="edge38" class="edge">
<title>svc:stockfill&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M124.75,-985.14C142.36,-981.34 163.48,-974.65 179.5,-963 217.95,-935.05 246.17,-886.4 261.21,-855.77"/>
<polygon fill="black" stroke="black" points="264.19,-857.65 265.33,-847.12 257.87,-854.64 264.19,-857.65"/>
<path fill="none" stroke="black" d="M151.18,-809.87C176.26,-802.32 204.79,-793.72 227.63,-786.84"/>
<polygon fill="black" stroke="black" points="228.81,-790.14 237.37,-783.9 226.79,-783.44 228.81,-790.14"/>
</g>
<!-- svc:telegraf -->
<g id="node29" class="node">
<g id="node27" class="node">
<title>svc:telegraf</title>
<polygon fill="#dfefff" stroke="black" points="124.75,-1548 54.75,-1548 54.75,-1512 124.75,-1512 124.75,-1548"/>
<text text-anchor="middle" x="89.75" y="-1525.33" font-family="Helvetica,sans-Serif" font-size="14.00">telegraf</text>
<polygon fill="#dfefff" stroke="black" points="125.5,-1332 54.5,-1332 54.5,-1296 125.5,-1296 125.5,-1332"/>
<text text-anchor="middle" x="90" y="-1310.3" font-family="Helvetica,sans-Serif" font-size="14.00">telegraf</text>
</g>
<!-- svc:telegraf&#45;&gt;net:monitor -->
<g id="edge39" class="edge">
<g id="edge37" class="edge">
<title>svc:telegraf&#45;&gt;net:monitor</title>
<path fill="none" stroke="black" d="M125.04,-1526.15C142.95,-1522.63 164.25,-1515.9 179.5,-1503 229.66,-1460.57 255.71,-1384.91 266.82,-1343.35"/>
<polygon fill="black" stroke="black" points="270.17,-1344.37 269.25,-1333.81 263.39,-1342.64 270.17,-1344.37"/>
<path fill="none" stroke="black" d="M125.8,-1307.18C142.85,-1302.93 163.26,-1296.43 180,-1287 206.25,-1272.22 231.35,-1248.65 248.38,-1230.74"/>
<polygon fill="black" stroke="black" points="251.37,-1232.67 255.62,-1222.97 246.24,-1227.9 251.37,-1232.67"/>
</g>
<!-- svc:traefik -->
<g id="node30" class="node">
<g id="node28" class="node">
<title>svc:traefik</title>
<polygon fill="#dfefff" stroke="black" points="120.25,-954 59.25,-954 59.25,-918 120.25,-918 120.25,-954"/>
<text text-anchor="middle" x="89.75" y="-931.33" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
<polygon fill="#dfefff" stroke="black" points="121,-792 59,-792 59,-756 121,-756 121,-792"/>
<text text-anchor="middle" x="90" y="-770.3" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
</g>
<!-- svc:traefik&#45;&gt;net:traefik -->
<g id="edge40" class="edge">
<g id="edge38" class="edge">
<title>svc:traefik&#45;&gt;net:traefik</title>
<path fill="none" stroke="black" d="M120.34,-930.25C138.21,-926 161.02,-919.17 179.5,-909 206.52,-894.13 232.73,-870.58 250.6,-852.7"/>
<polygon fill="black" stroke="black" points="252.65,-855.61 257.14,-846.01 247.64,-850.71 252.65,-855.61"/>
<path fill="none" stroke="black" d="M121,-774C148.16,-774 188.69,-774 220.66,-774"/>
<polygon fill="black" stroke="black" points="220.71,-777.5 230.71,-774 220.71,-770.5 220.71,-777.5"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 41 KiB

+13 -261
View File
@@ -1,271 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 12.2.1 (0)
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: PhysicalTopology Pages: 1 -->
<svg width="591pt" height="2761pt"
viewBox="0.00 0.00 590.50 2761.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2757)">
<svg width="514pt" height="61pt"
viewBox="0.00 0.00 514.00 61.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 57)">
<title>PhysicalTopology</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-2757 586.5,-2757 586.5,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_docker</title>
<path fill="#eff6ff" stroke="#93c5fd" d="M12,-8C12,-8 199.25,-8 199.25,-8 205.25,-8 211.25,-14 211.25,-20 211.25,-20 211.25,-2522 211.25,-2522 211.25,-2528 205.25,-2534 199.25,-2534 199.25,-2534 12,-2534 12,-2534 6,-2534 0,-2528 0,-2522 0,-2522 0,-20 0,-20 0,-14 6,-8 12,-8"/>
<text text-anchor="middle" x="105.62" y="-2516.7" font-family="Helvetica,sans-Serif" font-size="14.00">docker host</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_docker_apps</title>
<path fill="none" stroke="#bfdbfe" stroke-dasharray="5,2" d="M43.75,-16C43.75,-16 166.5,-16 166.5,-16 172.5,-16 178.5,-22 178.5,-28 178.5,-28 178.5,-1457 178.5,-1457 178.5,-1463 172.5,-1469 166.5,-1469 166.5,-1469 43.75,-1469 43.75,-1469 37.75,-1469 31.75,-1463 31.75,-1457 31.75,-1457 31.75,-28 31.75,-28 31.75,-22 37.75,-16 43.75,-16"/>
<text text-anchor="middle" x="105.12" y="-1451.7" font-family="Helvetica,sans-Serif" font-size="14.00">apps</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_docker_automation</title>
<path fill="none" stroke="#bfdbfe" stroke-dasharray="5,2" d="M70.25,-1478C70.25,-1478 141,-1478 141,-1478 147,-1478 153,-1484 153,-1490 153,-1490 153,-1543 153,-1543 153,-1549 147,-1555 141,-1555 141,-1555 70.25,-1555 70.25,-1555 64.25,-1555 58.25,-1549 58.25,-1543 58.25,-1543 58.25,-1490 58.25,-1490 58.25,-1484 64.25,-1478 70.25,-1478"/>
<text text-anchor="middle" x="105.62" y="-1537.7" font-family="Helvetica,sans-Serif" font-size="14.00">automation</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_docker_edge_proxy_auth</title>
<path fill="none" stroke="#bfdbfe" stroke-dasharray="5,2" d="M51.62,-1564C51.62,-1564 158.62,-1564 158.62,-1564 164.62,-1564 170.62,-1570 170.62,-1576 170.62,-1576 170.62,-1801 170.62,-1801 170.62,-1807 164.62,-1813 158.62,-1813 158.62,-1813 51.62,-1813 51.62,-1813 45.62,-1813 39.62,-1807 39.62,-1801 39.62,-1801 39.62,-1576 39.62,-1576 39.62,-1570 45.62,-1564 51.62,-1564"/>
<text text-anchor="middle" x="105.12" y="-1795.7" font-family="Helvetica,sans-Serif" font-size="14.00">edge/proxy/auth</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_docker_monitoring</title>
<path fill="none" stroke="#bfdbfe" stroke-dasharray="5,2" d="M66.62,-1822C66.62,-1822 143.62,-1822 143.62,-1822 149.62,-1822 155.62,-1828 155.62,-1834 155.62,-1834 155.62,-2059 155.62,-2059 155.62,-2065 149.62,-2071 143.62,-2071 143.62,-2071 66.62,-2071 66.62,-2071 60.62,-2071 54.62,-2065 54.62,-2059 54.62,-2059 54.62,-1834 54.62,-1834 54.62,-1828 60.62,-1822 66.62,-1822"/>
<text text-anchor="middle" x="105.12" y="-2053.7" font-family="Helvetica,sans-Serif" font-size="14.00">monitoring</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_docker_storage_database_support</title>
<path fill="none" stroke="#bfdbfe" stroke-dasharray="5,2" d="M20,-2080C20,-2080 191.25,-2080 191.25,-2080 197.25,-2080 203.25,-2086 203.25,-2092 203.25,-2092 203.25,-2489 203.25,-2489 203.25,-2495 197.25,-2501 191.25,-2501 191.25,-2501 20,-2501 20,-2501 14,-2501 8,-2495 8,-2489 8,-2489 8,-2092 8,-2092 8,-2086 14,-2080 20,-2080"/>
<text text-anchor="middle" x="105.62" y="-2483.7" font-family="Helvetica,sans-Serif" font-size="14.00">storage/database/support</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_raspberrypi</title>
<path fill="#eff6ff" stroke="#93c5fd" d="M52.25,-2542C52.25,-2542 159,-2542 159,-2542 165,-2542 171,-2548 171,-2554 171,-2554 171,-2648 171,-2648 171,-2654 165,-2660 159,-2660 159,-2660 52.25,-2660 52.25,-2660 46.25,-2660 40.25,-2654 40.25,-2648 40.25,-2648 40.25,-2554 40.25,-2554 40.25,-2548 46.25,-2542 52.25,-2542"/>
<text text-anchor="middle" x="105.62" y="-2642.7" font-family="Helvetica,sans-Serif" font-size="14.00">raspberrypi host</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_raspberrypi_apps</title>
<path fill="none" stroke="#bfdbfe" stroke-dasharray="5,2" d="M63.62,-2550C63.62,-2550 146.62,-2550 146.62,-2550 152.62,-2550 158.62,-2556 158.62,-2562 158.62,-2562 158.62,-2615 158.62,-2615 158.62,-2621 152.62,-2627 146.62,-2627 146.62,-2627 63.62,-2627 63.62,-2627 57.62,-2627 51.62,-2621 51.62,-2615 51.62,-2615 51.62,-2562 51.62,-2562 51.62,-2556 57.62,-2550 63.62,-2550"/>
<text text-anchor="middle" x="105.12" y="-2609.7" font-family="Helvetica,sans-Serif" font-size="14.00">apps</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_legend</title>
<path fill="none" stroke="#d1d5db" d="M71.88,-2668C71.88,-2668 562.5,-2668 562.5,-2668 568.5,-2668 574.5,-2674 574.5,-2680 574.5,-2680 574.5,-2733 574.5,-2733 574.5,-2739 568.5,-2745 562.5,-2745 562.5,-2745 71.88,-2745 71.88,-2745 65.88,-2745 59.88,-2739 59.88,-2733 59.88,-2733 59.88,-2680 59.88,-2680 59.88,-2674 65.88,-2668 71.88,-2668"/>
<text text-anchor="middle" x="317.19" y="-2727.7" font-family="Helvetica,sans-Serif" font-size="14.00">Legend</text>
</g>
<!-- svc:crowdsec -->
<polygon fill="white" stroke="transparent" points="-4,4 -4,-57 510,-57 510,4 -4,4"/>
<!-- placeholder:inventory -->
<g id="node1" class="node">
<title>svc:crowdsec</title>
<path fill="#dcfce7" stroke="black" d="M124,-60C124,-60 86.25,-60 86.25,-60 80.25,-60 74.25,-54 74.25,-48 74.25,-48 74.25,-36 74.25,-36 74.25,-30 80.25,-24 86.25,-24 86.25,-24 124,-24 124,-24 130,-24 136,-30 136,-36 136,-36 136,-48 136,-48 136,-54 130,-60 124,-60"/>
<text text-anchor="middle" x="105.12" y="-38.88" font-family="Helvetica,sans-Serif" font-size="10.00">crowdsec</text>
</g>
<!-- svc:docker&#45;update&#45;exporter -->
<g id="node2" class="node">
<title>svc:docker&#45;update&#45;exporter</title>
<path fill="#dcfce7" stroke="black" d="M158.5,-146C158.5,-146 51.75,-146 51.75,-146 45.75,-146 39.75,-140 39.75,-134 39.75,-134 39.75,-122 39.75,-122 39.75,-116 45.75,-110 51.75,-110 51.75,-110 158.5,-110 158.5,-110 164.5,-110 170.5,-116 170.5,-122 170.5,-122 170.5,-134 170.5,-134 170.5,-140 164.5,-146 158.5,-146"/>
<text text-anchor="middle" x="105.12" y="-124.88" font-family="Helvetica,sans-Serif" font-size="10.00">docker&#45;update&#45;exporter</text>
</g>
<!-- svc:error&#45;pages -->
<g id="node3" class="node">
<title>svc:error&#45;pages</title>
<path fill="#dcfce7" stroke="black" d="M129.25,-232C129.25,-232 81,-232 81,-232 75,-232 69,-226 69,-220 69,-220 69,-208 69,-208 69,-202 75,-196 81,-196 81,-196 129.25,-196 129.25,-196 135.25,-196 141.25,-202 141.25,-208 141.25,-208 141.25,-220 141.25,-220 141.25,-226 135.25,-232 129.25,-232"/>
<text text-anchor="middle" x="105.12" y="-210.88" font-family="Helvetica,sans-Serif" font-size="10.00">error&#45;pages</text>
</g>
<!-- svc:gitea -->
<g id="node4" class="node">
<title>svc:gitea</title>
<path fill="#dcfce7" stroke="black" d="M120.12,-318C120.12,-318 90.12,-318 90.12,-318 84.12,-318 78.12,-312 78.12,-306 78.12,-306 78.12,-294 78.12,-294 78.12,-288 84.12,-282 90.12,-282 90.12,-282 120.12,-282 120.12,-282 126.12,-282 132.12,-288 132.12,-294 132.12,-294 132.12,-306 132.12,-306 132.12,-312 126.12,-318 120.12,-318"/>
<text text-anchor="middle" x="105.12" y="-296.88" font-family="Helvetica,sans-Serif" font-size="10.00">gitea</text>
</g>
<!-- svc:gotify -->
<g id="node5" class="node">
<title>svc:gotify</title>
<path fill="#dcfce7" stroke="black" d="M120.12,-404C120.12,-404 90.12,-404 90.12,-404 84.12,-404 78.12,-398 78.12,-392 78.12,-392 78.12,-380 78.12,-380 78.12,-374 84.12,-368 90.12,-368 90.12,-368 120.12,-368 120.12,-368 126.12,-368 132.12,-374 132.12,-380 132.12,-380 132.12,-392 132.12,-392 132.12,-398 126.12,-404 120.12,-404"/>
<text text-anchor="middle" x="105.12" y="-382.88" font-family="Helvetica,sans-Serif" font-size="10.00">gotify</text>
</g>
<!-- svc:grampsweb -->
<g id="node6" class="node">
<title>svc:grampsweb</title>
<path fill="#dcfce7" stroke="black" d="M129.62,-490C129.62,-490 80.62,-490 80.62,-490 74.62,-490 68.62,-484 68.62,-478 68.62,-478 68.62,-466 68.62,-466 68.62,-460 74.62,-454 80.62,-454 80.62,-454 129.62,-454 129.62,-454 135.62,-454 141.62,-460 141.62,-466 141.62,-466 141.62,-478 141.62,-478 141.62,-484 135.62,-490 129.62,-490"/>
<text text-anchor="middle" x="105.12" y="-468.88" font-family="Helvetica,sans-Serif" font-size="10.00">grampsweb</text>
</g>
<!-- svc:grampsweb_celery -->
<g id="node7" class="node">
<title>svc:grampsweb_celery</title>
<path fill="#dcfce7" stroke="black" d="M147.25,-576C147.25,-576 63,-576 63,-576 57,-576 51,-570 51,-564 51,-564 51,-552 51,-552 51,-546 57,-540 63,-540 63,-540 147.25,-540 147.25,-540 153.25,-540 159.25,-546 159.25,-552 159.25,-552 159.25,-564 159.25,-564 159.25,-570 153.25,-576 147.25,-576"/>
<text text-anchor="middle" x="105.12" y="-554.88" font-family="Helvetica,sans-Serif" font-size="10.00">grampsweb_celery</text>
</g>
<!-- svc:monitor&#45;kuma -->
<g id="node8" class="node">
<title>svc:monitor&#45;kuma</title>
<path fill="#dcfce7" stroke="black" d="M135.62,-662C135.62,-662 74.62,-662 74.62,-662 68.62,-662 62.62,-656 62.62,-650 62.62,-650 62.62,-638 62.62,-638 62.62,-632 68.62,-626 74.62,-626 74.62,-626 135.62,-626 135.62,-626 141.62,-626 147.62,-632 147.62,-638 147.62,-638 147.62,-650 147.62,-650 147.62,-656 141.62,-662 135.62,-662"/>
<text text-anchor="middle" x="105.12" y="-640.88" font-family="Helvetica,sans-Serif" font-size="10.00">monitor&#45;kuma</text>
</g>
<!-- svc:mtls&#45;bridge -->
<g id="node9" class="node">
<title>svc:mtls&#45;bridge</title>
<path fill="#dcfce7" stroke="black" d="M129.25,-748C129.25,-748 81,-748 81,-748 75,-748 69,-742 69,-736 69,-736 69,-724 69,-724 69,-718 75,-712 81,-712 81,-712 129.25,-712 129.25,-712 135.25,-712 141.25,-718 141.25,-724 141.25,-724 141.25,-736 141.25,-736 141.25,-742 135.25,-748 129.25,-748"/>
<text text-anchor="middle" x="105.12" y="-726.88" font-family="Helvetica,sans-Serif" font-size="10.00">mtls&#45;bridge</text>
</g>
<!-- svc:nextcloud&#45;webapp -->
<g id="node10" class="node">
<title>svc:nextcloud&#45;webapp</title>
<path fill="#dcfce7" stroke="black" d="M146.12,-834C146.12,-834 64.12,-834 64.12,-834 58.12,-834 52.12,-828 52.12,-822 52.12,-822 52.12,-810 52.12,-810 52.12,-804 58.12,-798 64.12,-798 64.12,-798 146.12,-798 146.12,-798 152.12,-798 158.12,-804 158.12,-810 158.12,-810 158.12,-822 158.12,-822 158.12,-828 152.12,-834 146.12,-834"/>
<text text-anchor="middle" x="105.12" y="-812.88" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud&#45;webapp</text>
</g>
<!-- svc:node&#45;red -->
<g id="node11" class="node">
<title>svc:node&#45;red</title>
<path fill="#dcfce7" stroke="black" d="M122.88,-920C122.88,-920 87.38,-920 87.38,-920 81.38,-920 75.38,-914 75.38,-908 75.38,-908 75.38,-896 75.38,-896 75.38,-890 81.38,-884 87.38,-884 87.38,-884 122.88,-884 122.88,-884 128.88,-884 134.88,-890 134.88,-896 134.88,-896 134.88,-908 134.88,-908 134.88,-914 128.88,-920 122.88,-920"/>
<text text-anchor="middle" x="105.12" y="-898.88" font-family="Helvetica,sans-Serif" font-size="10.00">node&#45;red</text>
</g>
<!-- svc:passbolt&#45;webapp -->
<g id="node12" class="node">
<title>svc:passbolt&#45;webapp</title>
<path fill="#dcfce7" stroke="black" d="M142.75,-1006C142.75,-1006 67.5,-1006 67.5,-1006 61.5,-1006 55.5,-1000 55.5,-994 55.5,-994 55.5,-982 55.5,-982 55.5,-976 61.5,-970 67.5,-970 67.5,-970 142.75,-970 142.75,-970 148.75,-970 154.75,-976 154.75,-982 154.75,-982 154.75,-994 154.75,-994 154.75,-1000 148.75,-1006 142.75,-1006"/>
<text text-anchor="middle" x="105.12" y="-984.88" font-family="Helvetica,sans-Serif" font-size="10.00">passbolt&#45;webapp</text>
</g>
<!-- svc:portainer -->
<g id="node13" class="node">
<title>svc:portainer</title>
<path fill="#dcfce7" stroke="black" d="M123.25,-1092C123.25,-1092 87,-1092 87,-1092 81,-1092 75,-1086 75,-1080 75,-1080 75,-1068 75,-1068 75,-1062 81,-1056 87,-1056 87,-1056 123.25,-1056 123.25,-1056 129.25,-1056 135.25,-1062 135.25,-1068 135.25,-1068 135.25,-1080 135.25,-1080 135.25,-1086 129.25,-1092 123.25,-1092"/>
<text text-anchor="middle" x="105.12" y="-1070.88" font-family="Helvetica,sans-Serif" font-size="10.00">portainer</text>
</g>
<!-- svc:searxng&#45;webapp -->
<g id="node14" class="node">
<title>svc:searxng&#45;webapp</title>
<path fill="#dcfce7" stroke="black" d="M141.62,-1178C141.62,-1178 68.62,-1178 68.62,-1178 62.62,-1178 56.62,-1172 56.62,-1166 56.62,-1166 56.62,-1154 56.62,-1154 56.62,-1148 62.62,-1142 68.62,-1142 68.62,-1142 141.62,-1142 141.62,-1142 147.62,-1142 153.62,-1148 153.62,-1154 153.62,-1154 153.62,-1166 153.62,-1166 153.62,-1172 147.62,-1178 141.62,-1178"/>
<text text-anchor="middle" x="105.12" y="-1156.88" font-family="Helvetica,sans-Serif" font-size="10.00">searxng&#45;webapp</text>
</g>
<!-- svc:shift&#45;recorder&#45;web -->
<g id="node15" class="node">
<title>svc:shift&#45;recorder&#45;web</title>
<path fill="#dcfce7" stroke="black" d="M145.75,-1264C145.75,-1264 64.5,-1264 64.5,-1264 58.5,-1264 52.5,-1258 52.5,-1252 52.5,-1252 52.5,-1240 52.5,-1240 52.5,-1234 58.5,-1228 64.5,-1228 64.5,-1228 145.75,-1228 145.75,-1228 151.75,-1228 157.75,-1234 157.75,-1240 157.75,-1240 157.75,-1252 157.75,-1252 157.75,-1258 151.75,-1264 145.75,-1264"/>
<text text-anchor="middle" x="105.12" y="-1242.88" font-family="Helvetica,sans-Serif" font-size="10.00">shift&#45;recorder&#45;web</text>
</g>
<!-- svc:stockfill -->
<g id="node16" class="node">
<title>svc:stockfill</title>
<path fill="#dcfce7" stroke="black" d="M120.25,-1350C120.25,-1350 90,-1350 90,-1350 84,-1350 78,-1344 78,-1338 78,-1338 78,-1326 78,-1326 78,-1320 84,-1314 90,-1314 90,-1314 120.25,-1314 120.25,-1314 126.25,-1314 132.25,-1320 132.25,-1326 132.25,-1326 132.25,-1338 132.25,-1338 132.25,-1344 126.25,-1350 120.25,-1350"/>
<text text-anchor="middle" x="105.12" y="-1328.88" font-family="Helvetica,sans-Serif" font-size="10.00">stockfill</text>
</g>
<!-- svc:telegraf -->
<g id="node17" class="node">
<title>svc:telegraf</title>
<path fill="#dcfce7" stroke="black" d="M120.25,-1436C120.25,-1436 90,-1436 90,-1436 84,-1436 78,-1430 78,-1424 78,-1424 78,-1412 78,-1412 78,-1406 84,-1400 90,-1400 90,-1400 120.25,-1400 120.25,-1400 126.25,-1400 132.25,-1406 132.25,-1412 132.25,-1412 132.25,-1424 132.25,-1424 132.25,-1430 126.25,-1436 120.25,-1436"/>
<text text-anchor="middle" x="105.12" y="-1414.88" font-family="Helvetica,sans-Serif" font-size="10.00">telegraf</text>
</g>
<!-- svc:gitea&#45;runner -->
<g id="node18" class="node">
<title>svc:gitea&#45;runner</title>
<path fill="#dcfce7" stroke="black" d="M131.12,-1522C131.12,-1522 79.12,-1522 79.12,-1522 73.12,-1522 67.12,-1516 67.12,-1510 67.12,-1510 67.12,-1498 67.12,-1498 67.12,-1492 73.12,-1486 79.12,-1486 79.12,-1486 131.12,-1486 131.12,-1486 137.12,-1486 143.12,-1492 143.12,-1498 143.12,-1498 143.12,-1510 143.12,-1510 143.12,-1516 137.12,-1522 131.12,-1522"/>
<text text-anchor="middle" x="105.12" y="-1500.88" font-family="Helvetica,sans-Serif" font-size="10.00">gitea&#45;runner</text>
</g>
<!-- svc:authelia -->
<g id="node19" class="node">
<title>svc:authelia</title>
<path fill="#dcfce7" stroke="black" d="M121,-1608C121,-1608 89.25,-1608 89.25,-1608 83.25,-1608 77.25,-1602 77.25,-1596 77.25,-1596 77.25,-1584 77.25,-1584 77.25,-1578 83.25,-1572 89.25,-1572 89.25,-1572 121,-1572 121,-1572 127,-1572 133,-1578 133,-1584 133,-1584 133,-1596 133,-1596 133,-1602 127,-1608 121,-1608"/>
<text text-anchor="middle" x="105.12" y="-1586.88" font-family="Helvetica,sans-Serif" font-size="10.00">authelia</text>
</g>
<!-- svc:docker&#45;socket&#45;proxy -->
<g id="node20" class="node">
<title>svc:docker&#45;socket&#45;proxy</title>
<path fill="#dcfce7" stroke="black" d="M150.62,-1694C150.62,-1694 59.62,-1694 59.62,-1694 53.62,-1694 47.62,-1688 47.62,-1682 47.62,-1682 47.62,-1670 47.62,-1670 47.62,-1664 53.62,-1658 59.62,-1658 59.62,-1658 150.62,-1658 150.62,-1658 156.62,-1658 162.62,-1664 162.62,-1670 162.62,-1670 162.62,-1682 162.62,-1682 162.62,-1688 156.62,-1694 150.62,-1694"/>
<text text-anchor="middle" x="105.12" y="-1672.88" font-family="Helvetica,sans-Serif" font-size="10.00">docker&#45;socket&#45;proxy</text>
</g>
<!-- svc:traefik -->
<g id="node21" class="node">
<title>svc:traefik</title>
<path fill="#dcfce7" stroke="black" d="M120.12,-1780C120.12,-1780 90.12,-1780 90.12,-1780 84.12,-1780 78.12,-1774 78.12,-1768 78.12,-1768 78.12,-1756 78.12,-1756 78.12,-1750 84.12,-1744 90.12,-1744 90.12,-1744 120.12,-1744 120.12,-1744 126.12,-1744 132.12,-1750 132.12,-1756 132.12,-1756 132.12,-1768 132.12,-1768 132.12,-1774 126.12,-1780 120.12,-1780"/>
<text text-anchor="middle" x="105.12" y="-1758.88" font-family="Helvetica,sans-Serif" font-size="10.00">traefik</text>
</g>
<!-- svc:grafana -->
<g id="node22" class="node">
<title>svc:grafana</title>
<path fill="#dcfce7" stroke="black" d="M120.12,-1866C120.12,-1866 90.12,-1866 90.12,-1866 84.12,-1866 78.12,-1860 78.12,-1854 78.12,-1854 78.12,-1842 78.12,-1842 78.12,-1836 84.12,-1830 90.12,-1830 90.12,-1830 120.12,-1830 120.12,-1830 126.12,-1830 132.12,-1836 132.12,-1842 132.12,-1842 132.12,-1854 132.12,-1854 132.12,-1860 126.12,-1866 120.12,-1866"/>
<text text-anchor="middle" x="105.12" y="-1844.88" font-family="Helvetica,sans-Serif" font-size="10.00">grafana</text>
</g>
<!-- svc:node&#45;exporter -->
<g id="node23" class="node">
<title>svc:node&#45;exporter</title>
<path fill="#dcfce7" stroke="black" d="M135.62,-1952C135.62,-1952 74.62,-1952 74.62,-1952 68.62,-1952 62.62,-1946 62.62,-1940 62.62,-1940 62.62,-1928 62.62,-1928 62.62,-1922 68.62,-1916 74.62,-1916 74.62,-1916 135.62,-1916 135.62,-1916 141.62,-1916 147.62,-1922 147.62,-1928 147.62,-1928 147.62,-1940 147.62,-1940 147.62,-1946 141.62,-1952 135.62,-1952"/>
<text text-anchor="middle" x="105.12" y="-1930.88" font-family="Helvetica,sans-Serif" font-size="10.00">node&#45;exporter</text>
</g>
<!-- svc:prometheus -->
<g id="node24" class="node">
<title>svc:prometheus</title>
<path fill="#dcfce7" stroke="black" d="M130.38,-2038C130.38,-2038 79.88,-2038 79.88,-2038 73.88,-2038 67.88,-2032 67.88,-2026 67.88,-2026 67.88,-2014 67.88,-2014 67.88,-2008 73.88,-2002 79.88,-2002 79.88,-2002 130.38,-2002 130.38,-2002 136.38,-2002 142.38,-2008 142.38,-2014 142.38,-2014 142.38,-2026 142.38,-2026 142.38,-2032 136.38,-2038 130.38,-2038"/>
<text text-anchor="middle" x="105.12" y="-2016.88" font-family="Helvetica,sans-Serif" font-size="10.00">prometheus</text>
</g>
<!-- svc:gramps&#45;redis -->
<g id="node25" class="node">
<title>svc:gramps&#45;redis</title>
<path fill="#dcfce7" stroke="black" d="M133.38,-2124C133.38,-2124 76.88,-2124 76.88,-2124 70.88,-2124 64.88,-2118 64.88,-2112 64.88,-2112 64.88,-2100 64.88,-2100 64.88,-2094 70.88,-2088 76.88,-2088 76.88,-2088 133.38,-2088 133.38,-2088 139.38,-2088 145.38,-2094 145.38,-2100 145.38,-2100 145.38,-2112 145.38,-2112 145.38,-2118 139.38,-2124 133.38,-2124"/>
<text text-anchor="middle" x="105.12" y="-2102.88" font-family="Helvetica,sans-Serif" font-size="10.00">gramps&#45;redis</text>
</g>
<!-- svc:influxdb -->
<g id="node26" class="node">
<title>svc:influxdb</title>
<path fill="#dcfce7" stroke="black" d="M120.62,-2210C120.62,-2210 89.62,-2210 89.62,-2210 83.62,-2210 77.62,-2204 77.62,-2198 77.62,-2198 77.62,-2186 77.62,-2186 77.62,-2180 83.62,-2174 89.62,-2174 89.62,-2174 120.62,-2174 120.62,-2174 126.62,-2174 132.62,-2180 132.62,-2186 132.62,-2186 132.62,-2198 132.62,-2198 132.62,-2204 126.62,-2210 120.62,-2210"/>
<text text-anchor="middle" x="105.12" y="-2188.88" font-family="Helvetica,sans-Serif" font-size="10.00">influxdb</text>
</g>
<!-- svc:nextcloud&#45;db -->
<g id="node27" class="node">
<title>svc:nextcloud&#45;db</title>
<path fill="#dcfce7" stroke="black" d="M133,-2296C133,-2296 77.25,-2296 77.25,-2296 71.25,-2296 65.25,-2290 65.25,-2284 65.25,-2284 65.25,-2272 65.25,-2272 65.25,-2266 71.25,-2260 77.25,-2260 77.25,-2260 133,-2260 133,-2260 139,-2260 145,-2266 145,-2272 145,-2272 145,-2284 145,-2284 145,-2290 139,-2296 133,-2296"/>
<text text-anchor="middle" x="105.12" y="-2274.88" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud&#45;db</text>
</g>
<!-- svc:nextcloud&#45;redis -->
<g id="node28" class="node">
<title>svc:nextcloud&#45;redis</title>
<path fill="#dcfce7" stroke="black" d="M139,-2382C139,-2382 71.25,-2382 71.25,-2382 65.25,-2382 59.25,-2376 59.25,-2370 59.25,-2370 59.25,-2358 59.25,-2358 59.25,-2352 65.25,-2346 71.25,-2346 71.25,-2346 139,-2346 139,-2346 145,-2346 151,-2352 151,-2358 151,-2358 151,-2370 151,-2370 151,-2376 145,-2382 139,-2382"/>
<text text-anchor="middle" x="105.12" y="-2360.88" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud&#45;redis</text>
</g>
<!-- svc:passbolt&#45;db -->
<g id="node29" class="node">
<title>svc:passbolt&#45;db</title>
<path fill="#dcfce7" stroke="black" d="M129.62,-2468C129.62,-2468 80.62,-2468 80.62,-2468 74.62,-2468 68.62,-2462 68.62,-2456 68.62,-2456 68.62,-2444 68.62,-2444 68.62,-2438 74.62,-2432 80.62,-2432 80.62,-2432 129.62,-2432 129.62,-2432 135.62,-2432 141.62,-2438 141.62,-2444 141.62,-2444 141.62,-2456 141.62,-2456 141.62,-2462 135.62,-2468 129.62,-2468"/>
<text text-anchor="middle" x="105.12" y="-2446.88" font-family="Helvetica,sans-Serif" font-size="10.00">passbolt&#45;db</text>
</g>
<!-- svc:pihole&#45;exporter -->
<g id="node30" class="node">
<title>svc:pihole&#45;exporter</title>
<path fill="#dcfce7" stroke="black" d="M138.62,-2594C138.62,-2594 71.62,-2594 71.62,-2594 65.62,-2594 59.62,-2588 59.62,-2582 59.62,-2582 59.62,-2570 59.62,-2570 59.62,-2564 65.62,-2558 71.62,-2558 71.62,-2558 138.62,-2558 138.62,-2558 144.62,-2558 150.62,-2564 150.62,-2570 150.62,-2570 150.62,-2582 150.62,-2582 150.62,-2588 144.62,-2594 138.62,-2594"/>
<text text-anchor="middle" x="105.12" y="-2572.88" font-family="Helvetica,sans-Serif" font-size="10.00">pihole&#45;exporter</text>
</g>
<!-- leg_host -->
<g id="node31" class="node">
<title>leg_host</title>
<polygon fill="#eff6ff" stroke="black" points="142.38,-2712 71.88,-2712 67.88,-2708 67.88,-2676 138.38,-2676 142.38,-2680 142.38,-2712"/>
<polyline fill="none" stroke="black" points="138.38,-2708 67.88,-2708"/>
<polyline fill="none" stroke="black" points="138.38,-2708 138.38,-2676"/>
<polyline fill="none" stroke="black" points="138.38,-2708 142.38,-2712"/>
<text text-anchor="middle" x="105.12" y="-2690.88" font-family="Helvetica,sans-Serif" font-size="10.00">Host cluster</text>
</g>
<!-- leg_cat -->
<g id="node32" class="node">
<title>leg_cat</title>
<polygon fill="#f8fbff" stroke="black" points="379,-2712 376,-2716 355,-2716 352,-2712 281.25,-2712 281.25,-2676 379,-2676 379,-2712"/>
<text text-anchor="middle" x="330.12" y="-2690.88" font-family="Helvetica,sans-Serif" font-size="10.00">Service category</text>
</g>
<!-- leg_host&#45;&gt;leg_cat -->
<g id="edge1" class="edge">
<title>leg_host&#45;&gt;leg_cat</title>
<path fill="none" stroke="#64748b" stroke-dasharray="5,2" d="M142.45,-2694C176.9,-2694 229.26,-2694 269.77,-2694"/>
<polygon fill="#64748b" stroke="#64748b" points="269.61,-2697.5 279.61,-2694 269.61,-2690.5 269.61,-2697.5"/>
</g>
<!-- leg_svc -->
<g id="node33" class="node">
<title>leg_svc</title>
<path fill="#dcfce7" stroke="black" d="M554.5,-2712C554.5,-2712 477,-2712 477,-2712 471,-2712 465,-2706 465,-2700 465,-2700 465,-2688 465,-2688 465,-2682 471,-2676 477,-2676 477,-2676 554.5,-2676 554.5,-2676 560.5,-2676 566.5,-2682 566.5,-2688 566.5,-2688 566.5,-2700 566.5,-2700 566.5,-2706 560.5,-2712 554.5,-2712"/>
<text text-anchor="middle" x="515.75" y="-2690.88" font-family="Helvetica,sans-Serif" font-size="10.00">Container/service</text>
</g>
<!-- leg_cat&#45;&gt;leg_svc -->
<g id="edge2" class="edge">
<title>leg_cat&#45;&gt;leg_svc</title>
<path fill="none" stroke="#64748b" stroke-dasharray="5,2" d="M379.37,-2694C401.93,-2694 429.05,-2694 453.07,-2694"/>
<polygon fill="#64748b" stroke="#64748b" points="453.07,-2697.5 463.07,-2694 453.07,-2690.5 453.07,-2697.5"/>
<title>placeholder:inventory</title>
<polygon fill="#fef3c7" stroke="black" points="500,-53 0,-53 0,0 506,0 506,-47 500,-53"/>
<polyline fill="none" stroke="black" points="500,-53 500,-47 "/>
<polyline fill="none" stroke="black" points="506,-47 500,-47 "/>
<text text-anchor="middle" x="253" y="-37.8" font-family="Times,serif" font-size="14.00">Host inventory JSON not found.</text>
<text text-anchor="middle" x="253" y="-22.8" font-family="Times,serif" font-size="14.00">Generate terraform inventory and rerun scripts/docs/generate&#45;all.sh</text>
<text text-anchor="middle" x="253" y="-7.8" font-family="Times,serif" font-size="14.00">(&#45;&#45;host&#45;inventory &lt;path&gt;).</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

+23
View File
@@ -0,0 +1,23 @@
.md-content img, article img {
max-width: 100%;
width: auto;
height: auto;
}
.diagram-wrap {
width: 100%;
overflow-x: auto;
margin: 1rem 0 2rem;
}
.diagram-wrap img {
max-width: none;
width: 1400px;
height: auto;
}
@media (max-width: 900px) {
.diagram-wrap img {
width: 1200px;
}
}
+16 -18
View File
@@ -2,22 +2,20 @@
| Service | Router | Rule | Entrypoints | TLS | Middlewares | Target Port |
|---|---|---|---|---|---|---|
| authelia | authelia | Host(`<internal-domain>`) | websecure | true | | |
| authelia | authelia | Host(`auth.<domain>`) | websecure | true | | |
| error-pages | error-pages-router | HostRegexp(`{host:.+}`) | web | | error-pages-middleware | |
| gitea | gitea | Host(`<internal-domain>`) | websecure | true | | 3000 |
| gotify | gotify | Host(`<internal-domain>`) | websecure | | | 80 |
| grafana | grafana | Host(`<internal-domain>`) | websecure | | | 3000 |
| grampsweb | gramps | Host(`<internal-domain>`) | websecure | | | 5000 |
| influxdb | influxdb | Host(`<internal-domain>`) | websecure | | authelia | 8086 |
| monitor-kuma | monitor | Host(`<internal-domain>`) | websecure | true | | 3001 |
| mtls-bridge | mtls-bridge | Host(`<internal-domain>`) | websecure | | mtls-bridge-auth,mtls-bridge-cors | 8080 |
| mtls-bridge | mtls-bridge-preflight | Host(`<internal-domain>`) && Method(`OPTIONS`) | websecure | | mtls-bridge-cors | |
| nextcloud-webapp | nextcloud | Host(`<internal-domain>`) | websecure | | nextcloud-dav, nextcloud-webfinger | |
| node-red | node-red | Host(`<internal-domain>`) | websecure | | authelia | 1880 |
| passbolt-webapp | passbolt | Host(`<internal-domain>`) | websecure | | | |
| portainer | portainer | Host(`<internal-domain>`) | websecure | true | | 9000 |
| prometheus | prometheus | Host(`<internal-domain>`) | websecure | | authelia | 9090 |
| searxng-webapp | searxng | Host(`<internal-domain>`) | websecure | | | 8080 |
| shift-recorder-web | shifts | Host(`<internal-domain>`) | websecure | true | | 80 |
| stockfill | stockfill | Host(`<internal-domain>`) | websecure | true | | 80 |
| traefik | traefik | Host(`<internal-domain>`) | websecure | | authelia | |
| gitea | gitea | Host(`gitea.<domain>`) | websecure | true | | 3000 |
| gotify | gotify | Host(`gotify.<domain>`) | websecure | | | 80 |
| grafana | grafana | Host(`grafana.<domain>`) | websecure | | | 3000 |
| grampsweb | gramps | Host(`familytree.<domain>`) | websecure | | | 5000 |
| influxdb | influxdb | Host(`influxdb.<domain>`) | websecure | | authelia | 8086 |
| monitor-kuma | monitor | Host(`monitor-kuma.<domain>`) | websecure | true | | 3001 |
| mtls-bridge | mtls-bridge | Host(`mtls-bridge.<domain>`) | websecure | | mtls-bridge-auth,mtls-bridge-cors | 8080 |
| mtls-bridge | mtls-bridge-preflight | Host(`mtls-bridge.<domain>`) && Method(`OPTIONS`) | websecure | | mtls-bridge-cors | |
| nextcloud-webapp | nextcloud | Host(`nextcloud.<domain>`) | websecure | | nextcloud-dav, nextcloud-webfinger | |
| node-red | node-red | Host(`node-red.<domain>`) | websecure | | authelia | 1880 |
| passbolt-webapp | passbolt | Host(`passbolt.<domain>`) | websecure | | | |
| portainer | portainer | Host(`portainer.<domain>`) | websecure | true | | 9000 |
| prometheus | prometheus | Host(`prometheus.<domain>`) | websecure | | authelia | 9090 |
| searxng-webapp | searxng | Host(`searxng.<domain>`) | websecure | | | 8080 |
| traefik | traefik | Host(`traefik.<domain>`) | websecure | | authelia | |