Merge pull request #72 from beatz174-bit/codex/improve-documentation-with-generated-diagrams
Generate physical and Docker/Traefik/Dynu diagrams; require Graphviz and validate in CI
@@ -29,3 +29,17 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
test -d docs/public
|
test -d docs/public
|
||||||
test -n "$(find docs/public -mindepth 1 -print -quit)"
|
test -n "$(find docs/public -mindepth 1 -print -quit)"
|
||||||
|
- name: Install Graphviz and MkDocs
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y graphviz
|
||||||
|
dot -V
|
||||||
|
python3 -m pip install --user mkdocs
|
||||||
|
- name: Validate public docs and diagrams
|
||||||
|
run: |
|
||||||
|
test -f docs/public/physical-topology.svg
|
||||||
|
test -f docs/public/docker-traefik-dynu.svg
|
||||||
|
! rg -n "Graphviz dot not found" docs/public/*.svg
|
||||||
|
! rg -n "lan\.ddnsgeek\.com" docs/public/*.svg docs/public/*.md
|
||||||
|
! rg -n -i "password|token|api_key|secret" docs/public/*.svg
|
||||||
|
python3 -m mkdocs build -f mkdocs-public.yml --strict
|
||||||
|
|||||||
@@ -28,13 +28,26 @@ jobs:
|
|||||||
test -d docs/public
|
test -d docs/public
|
||||||
test -n "$(find docs/public -mindepth 1 -print -quit)"
|
test -n "$(find docs/public -mindepth 1 -print -quit)"
|
||||||
|
|
||||||
|
- name: Install Graphviz
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y graphviz
|
||||||
|
dot -V
|
||||||
|
|
||||||
|
- name: Validate sanitized diagram artifacts
|
||||||
|
run: |
|
||||||
|
test -f docs/public/physical-topology.svg
|
||||||
|
test -f docs/public/docker-traefik-dynu.svg
|
||||||
|
! rg -n "Graphviz dot not found" docs/public/*.svg
|
||||||
|
! rg -n "lan\.ddnsgeek\.com" docs/public/*.svg docs/public/*.md
|
||||||
|
! rg -n -i "password|token|api_key|secret" docs/public/*.svg
|
||||||
|
|
||||||
- name: Install MkDocs
|
- name: Install MkDocs
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install --user mkdocs
|
python3 -m pip install --user mkdocs
|
||||||
|
|
||||||
- name: Build public MkDocs site
|
- name: Build public MkDocs site
|
||||||
run: |
|
run: |
|
||||||
|
|
||||||
python3 -m mkdocs build -f mkdocs-public.yml --strict
|
python3 -m mkdocs build -f mkdocs-public.yml --strict
|
||||||
|
|
||||||
- name: Verify published content excludes internal/generated docs
|
- name: Verify published content excludes internal/generated docs
|
||||||
|
|||||||
@@ -2,21 +2,37 @@
|
|||||||
|
|
||||||
## Local generation
|
## Local generation
|
||||||
|
|
||||||
|
Install prerequisites:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y graphviz
|
||||||
|
```
|
||||||
|
|
||||||
|
Then generate and validate public docs:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x scripts/docs/*.sh
|
chmod +x scripts/docs/*.sh
|
||||||
scripts/docs/generate-all.sh
|
scripts/docs/generate-all.sh
|
||||||
|
python3 -m mkdocs build -f mkdocs-public.yml --strict
|
||||||
|
```
|
||||||
|
|
||||||
|
NixOS-friendly alternative:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix shell nixpkgs#graphviz nixpkgs#python3 nixpkgs#python3Packages.pyyaml
|
||||||
```
|
```
|
||||||
|
|
||||||
This pipeline only runs `docker compose config` and static parsing. It does **not** start containers.
|
This pipeline only runs `docker compose config` and static parsing. It does **not** start containers.
|
||||||
|
|
||||||
## CI behaviour
|
## CI behaviour
|
||||||
|
|
||||||
GitHub Actions workflow `.github/workflows/generate-docs.yml` runs on pushes/PRs to `main` and manual dispatch. It generates docs and uploads them as the `generated-documentation` artifact.
|
GitHub Actions workflow `.github/workflows/generate-docs.yml` validates committed public docs and diagrams and runs a strict public MkDocs build.
|
||||||
|
|
||||||
## Outputs
|
## Outputs
|
||||||
|
|
||||||
- `docs/generated`: resolved compose config and markdown inventories
|
- `docs/generated`: resolved compose config and markdown inventories
|
||||||
- `docs/diagrams`: DOT and SVG architecture diagram
|
- `docs/diagrams`: generated DOT and SVG diagrams
|
||||||
- `docs/public`: sanitized copy for public sharing
|
- `docs/public`: sanitized copy for public sharing
|
||||||
|
|
||||||
## Publication safety
|
## Publication safety
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
digraph Compose {
|
digraph Compose {
|
||||||
rankdir=LR;
|
rankdir=LR;
|
||||||
node [fontname=Helvetica];
|
node [fontname="Helvetica"];
|
||||||
"svc:authelia" [label="authelia", shape=box, style=filled, fillcolor="#dfefff"];
|
"svc:authelia" [label="authelia", shape=box, style=filled, fillcolor="#dfefff"];
|
||||||
"svc:crowdsec" [label="crowdsec", shape=box, style=filled, fillcolor="#dfefff"];
|
"svc:crowdsec" [label="crowdsec", shape=box, style=filled, fillcolor="#dfefff"];
|
||||||
"svc:docker-socket-proxy" [label="docker-socket-proxy", shape=box, style=filled, fillcolor="#dfefff"];
|
"svc:docker-socket-proxy" [label="docker-socket-proxy", shape=box, style=filled, fillcolor="#dfefff"];
|
||||||
|
|||||||
@@ -1 +1,463 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="640" height="80"><text x="10" y="40">Graphviz dot not found in environment.</text></svg>
|
<?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 2.43.0 (0)
|
||||||
|
-->
|
||||||
|
<!-- Title: Compose Pages: 1 -->
|
||||||
|
<svg width="334pt" height="1610pt"
|
||||||
|
viewBox="0.00 0.00 334.49 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)">
|
||||||
|
<title>Compose</title>
|
||||||
|
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1606 330.49,-1606 330.49,4 -4,4"/>
|
||||||
|
<!-- svc:authelia -->
|
||||||
|
<g id="node1" class="node">
|
||||||
|
<title>svc:authelia</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="126,-900 54,-900 54,-864 126,-864 126,-900"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-878.3" font-family="Helvetica,sans-Serif" font-size="14.00">authelia</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:traefik -->
|
||||||
|
<g id="node35" class="node">
|
||||||
|
<title>net:traefik</title>
|
||||||
|
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-828" rx="40.09" ry="18"/>
|
||||||
|
<text text-anchor="middle" x="271.25" y="-824.3" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:authelia->net:traefik -->
|
||||||
|
<g id="edge1" class="edge">
|
||||||
|
<title>svc:authelia->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M126.41,-871.33C155.5,-862.57 196.8,-850.13 227.69,-840.82"/>
|
||||||
|
<polygon fill="black" stroke="black" points="228.76,-844.15 237.32,-837.92 226.74,-837.45 228.76,-844.15"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:crowdsec -->
|
||||||
|
<g id="node2" class="node">
|
||||||
|
<title>svc:crowdsec</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="130.5,-846 49.5,-846 49.5,-810 130.5,-810 130.5,-846"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-824.3" font-family="Helvetica,sans-Serif" font-size="14.00">crowdsec</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:crowdsec->net:traefik -->
|
||||||
|
<g id="edge2" class="edge">
|
||||||
|
<title>svc:crowdsec->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M130.78,-828C157.33,-828 192.43,-828 220.78,-828"/>
|
||||||
|
<polygon fill="black" stroke="black" points="220.88,-831.5 230.88,-828 220.88,-824.5 220.88,-831.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy -->
|
||||||
|
<g id="node3" class="node">
|
||||||
|
<title>svc:docker-socket-proxy</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="167.5,-1116 12.5,-1116 12.5,-1080 167.5,-1080 167.5,-1116"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1094.3" font-family="Helvetica,sans-Serif" font-size="14.00">docker-socket-proxy</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:monitor -->
|
||||||
|
<g id="node32" class="node">
|
||||||
|
<title>net:monitor</title>
|
||||||
|
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-1314" rx="46.29" ry="18"/>
|
||||||
|
<text text-anchor="middle" x="271.25" y="-1310.3" font-family="Helvetica,sans-Serif" font-size="14.00">monitor</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy->net:monitor -->
|
||||||
|
<g id="edge3" class="edge">
|
||||||
|
<title>svc:docker-socket-proxy->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M167.18,-1116.1C171.75,-1118.68 176.08,-1121.63 180,-1125 229.98,-1167.95 254.42,-1244.8 264.44,-1286.04"/>
|
||||||
|
<polygon fill="black" stroke="black" points="261.07,-1287 266.73,-1295.95 267.88,-1285.42 261.07,-1287"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy->net:traefik -->
|
||||||
|
<g id="edge4" class="edge">
|
||||||
|
<title>svc:docker-socket-proxy->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M167.53,-1080.29C172.02,-1077.62 176.24,-1074.54 180,-1071 242.3,-1012.4 261.83,-906.88 267.77,-856.4"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.27,-856.54 268.86,-846.22 264.31,-855.79 271.27,-856.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-update-exporter -->
|
||||||
|
<g id="node4" class="node">
|
||||||
|
<title>svc:docker-update-exporter</title>
|
||||||
|
<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-update-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-update-exporter->net:monitor -->
|
||||||
|
<g id="edge5" class="edge">
|
||||||
|
<title>svc:docker-update-exporter->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M165.31,-1457.9C170.5,-1455.32 175.46,-1452.37 180,-1449 218.01,-1420.82 244.97,-1371.56 259.03,-1340.98"/>
|
||||||
|
<polygon fill="black" stroke="black" points="262.27,-1342.31 263.14,-1331.76 255.87,-1339.46 262.27,-1342.31"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:error-pages -->
|
||||||
|
<g id="node5" class="node">
|
||||||
|
<title>svc:error-pages</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="137.5,-792 42.5,-792 42.5,-756 137.5,-756 137.5,-792"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-770.3" font-family="Helvetica,sans-Serif" font-size="14.00">error-pages</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:error-pages->net:traefik -->
|
||||||
|
<g id="edge6" class="edge">
|
||||||
|
<title>svc:error-pages->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M137.63,-788.05C165.53,-796.45 200.71,-807.05 227.83,-815.22"/>
|
||||||
|
<polygon fill="black" stroke="black" points="226.84,-818.58 237.43,-818.11 228.86,-811.88 226.84,-818.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea -->
|
||||||
|
<g id="node6" class="node">
|
||||||
|
<title>svc:gitea</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="117,-738 63,-738 63,-702 117,-702 117,-738"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-716.3" font-family="Helvetica,sans-Serif" font-size="14.00">gitea</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea->net:traefik -->
|
||||||
|
<g id="edge7" class="edge">
|
||||||
|
<title>svc:gitea->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M117.13,-724.77C135.53,-728.87 160.3,-735.91 180,-747 206.25,-761.78 231.35,-785.35 248.38,-803.26"/>
|
||||||
|
<polygon fill="black" stroke="black" points="246.24,-806.1 255.62,-811.03 251.37,-801.33 246.24,-806.1"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea-runner -->
|
||||||
|
<g id="node7" class="node">
|
||||||
|
<title>svc:gitea-runner</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="142,-684 38,-684 38,-648 142,-648 142,-684"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-662.3" font-family="Helvetica,sans-Serif" font-size="14.00">gitea-runner</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea-runner->net:traefik -->
|
||||||
|
<g id="edge8" class="edge">
|
||||||
|
<title>svc:gitea-runner->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M142.32,-675.1C155.46,-679.1 168.98,-684.83 180,-693 218.01,-721.18 244.97,-770.44 259.03,-801.02"/>
|
||||||
|
<polygon fill="black" stroke="black" points="255.87,-802.54 263.14,-810.24 262.27,-799.69 255.87,-802.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gotify -->
|
||||||
|
<g id="node8" class="node">
|
||||||
|
<title>svc:gotify</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="118,-630 62,-630 62,-594 118,-594 118,-630"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-608.3" font-family="Helvetica,sans-Serif" font-size="14.00">gotify</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gotify->net:traefik -->
|
||||||
|
<g id="edge9" class="edge">
|
||||||
|
<title>svc:gotify->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M118.29,-614.47C137.49,-617.48 162.73,-624.16 180,-639 229.98,-681.95 254.42,-758.8 264.44,-800.04"/>
|
||||||
|
<polygon fill="black" stroke="black" points="261.07,-801 266.73,-809.95 267.88,-799.42 261.07,-801"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana -->
|
||||||
|
<g id="node9" class="node">
|
||||||
|
<title>svc:grafana</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="125.5,-1062 54.5,-1062 54.5,-1026 125.5,-1026 125.5,-1062"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1040.3" font-family="Helvetica,sans-Serif" font-size="14.00">grafana</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana->net:monitor -->
|
||||||
|
<g id="edge10" class="edge">
|
||||||
|
<title>svc:grafana->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.52,-1047.11C143.74,-1050.41 165.3,-1057.17 180,-1071 242.3,-1129.6 261.83,-1235.12 267.77,-1285.6"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.31,-1286.21 268.86,-1295.78 271.27,-1285.46 264.31,-1286.21"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana->net:traefik -->
|
||||||
|
<g id="edge11" class="edge">
|
||||||
|
<title>svc:grafana->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.91,-1040.19C143.8,-1036.68 164.94,-1029.94 180,-1017 229.98,-974.05 254.42,-897.2 264.44,-855.96"/>
|
||||||
|
<polygon fill="black" stroke="black" points="267.88,-856.58 266.73,-846.05 261.07,-855 267.88,-856.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gramps-redis -->
|
||||||
|
<g id="node10" class="node">
|
||||||
|
<title>svc:gramps-redis</title>
|
||||||
|
<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-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:gramps -->
|
||||||
|
<g id="node31" class="node">
|
||||||
|
<title>net:gramps</title>
|
||||||
|
<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-redis->net:gramps -->
|
||||||
|
<g id="edge12" class="edge">
|
||||||
|
<title>svc:gramps-redis->net:gramps</title>
|
||||||
|
<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="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->net:gramps -->
|
||||||
|
<g id="edge13" class="edge">
|
||||||
|
<title>svc:grampsweb->net:gramps</title>
|
||||||
|
<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->net:traefik -->
|
||||||
|
<g id="edge14" class="edge">
|
||||||
|
<title>svc:grampsweb->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M139.02,-401.02C153.99,-404.86 169.35,-411.52 180,-423 231.57,-478.6 259.36,-716.7 267.6,-799.49"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.14,-800.06 268.59,-809.67 271.1,-799.38 264.14,-800.06"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grampsweb_celery -->
|
||||||
|
<g id="node12" class="node">
|
||||||
|
<title>svc:grampsweb_celery</title>
|
||||||
|
<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->net:gramps -->
|
||||||
|
<g id="edge15" class="edge">
|
||||||
|
<title>svc:grampsweb_celery->net:gramps</title>
|
||||||
|
<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="127,-1386 53,-1386 53,-1350 127,-1350 127,-1386"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1364.3" font-family="Helvetica,sans-Serif" font-size="14.00">influxdb</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:influxdb->net:monitor -->
|
||||||
|
<g id="edge16" class="edge">
|
||||||
|
<title>svc:influxdb->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M127.27,-1357.07C155.3,-1348.63 194.28,-1336.88 224.46,-1327.79"/>
|
||||||
|
<polygon fill="black" stroke="black" points="225.77,-1331.06 234.33,-1324.82 223.75,-1324.35 225.77,-1331.06"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:influxdb->net:traefik -->
|
||||||
|
<g id="edge17" class="edge">
|
||||||
|
<title>svc:influxdb->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M127.44,-1365.74C145.77,-1362.68 166.83,-1355.86 180,-1341 244.76,-1267.93 264.48,-953.16 269.06,-856.4"/>
|
||||||
|
<polygon fill="black" stroke="black" points="272.57,-856.36 269.53,-846.21 265.58,-856.04 272.57,-856.36"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma -->
|
||||||
|
<g id="node14" class="node">
|
||||||
|
<title>svc:monitor-kuma</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="146.5,-1332 33.5,-1332 33.5,-1296 146.5,-1296 146.5,-1332"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1310.3" font-family="Helvetica,sans-Serif" font-size="14.00">monitor-kuma</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma->net:monitor -->
|
||||||
|
<g id="edge18" class="edge">
|
||||||
|
<title>svc:monitor-kuma->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M146.73,-1314C168.47,-1314 193.32,-1314 215.01,-1314"/>
|
||||||
|
<polygon fill="black" stroke="black" points="215.05,-1317.5 225.05,-1314 215.05,-1310.5 215.05,-1317.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma->net:traefik -->
|
||||||
|
<g id="edge19" class="edge">
|
||||||
|
<title>svc:monitor-kuma->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M146.61,-1307C159.1,-1302.97 171.23,-1296.7 180,-1287 238.17,-1222.67 262.1,-946.17 268.43,-856.32"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.93,-856.3 269.13,-846.08 264.95,-855.82 271.93,-856.3"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge -->
|
||||||
|
<g id="node15" class="node">
|
||||||
|
<title>svc:mtls-bridge</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="138.5,-1278 41.5,-1278 41.5,-1242 138.5,-1242 138.5,-1278"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1256.3" font-family="Helvetica,sans-Serif" font-size="14.00">mtls-bridge</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge->net:monitor -->
|
||||||
|
<g id="edge20" class="edge">
|
||||||
|
<title>svc:mtls-bridge->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M138.56,-1274.33C165.14,-1282.34 198.1,-1292.27 224.4,-1300.19"/>
|
||||||
|
<polygon fill="black" stroke="black" points="223.54,-1303.58 234.12,-1303.12 225.56,-1296.88 223.54,-1303.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge->net:traefik -->
|
||||||
|
<g id="edge21" class="edge">
|
||||||
|
<title>svc:mtls-bridge->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M138.56,-1255.1C153.68,-1251.28 169.24,-1244.6 180,-1233 231.57,-1177.4 259.36,-939.3 267.6,-856.51"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.1,-856.62 268.59,-846.33 264.14,-855.94 271.1,-856.62"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-db -->
|
||||||
|
<g id="node16" class="node">
|
||||||
|
<title>svc:nextcloud-db</title>
|
||||||
|
<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-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:nextcloud -->
|
||||||
|
<g id="node33" class="node">
|
||||||
|
<title>net:nextcloud</title>
|
||||||
|
<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-db->net:nextcloud -->
|
||||||
|
<g id="edge22" class="edge">
|
||||||
|
<title>svc:nextcloud-db->net:nextcloud</title>
|
||||||
|
<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-redis -->
|
||||||
|
<g id="node17" class="node">
|
||||||
|
<title>svc:nextcloud-redis</title>
|
||||||
|
<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-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-redis->net:nextcloud -->
|
||||||
|
<g id="edge23" class="edge">
|
||||||
|
<title>svc:nextcloud-redis->net:nextcloud</title>
|
||||||
|
<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-webapp -->
|
||||||
|
<g id="node18" class="node">
|
||||||
|
<title>svc:nextcloud-webapp</title>
|
||||||
|
<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-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-webapp->net:nextcloud -->
|
||||||
|
<g id="edge24" class="edge">
|
||||||
|
<title>svc:nextcloud-webapp->net:nextcloud</title>
|
||||||
|
<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-webapp->net:traefik -->
|
||||||
|
<g id="edge25" class="edge">
|
||||||
|
<title>svc:nextcloud-webapp->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M162.56,-247.4C169.12,-250.94 175.12,-255.4 180,-261 215.98,-302.27 256.67,-690.32 267.49,-799.53"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.03,-800.16 268.49,-809.77 271,-799.47 264.03,-800.16"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-exporter -->
|
||||||
|
<g id="node19" class="node">
|
||||||
|
<title>svc:node-exporter</title>
|
||||||
|
<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-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-exporter->net:monitor -->
|
||||||
|
<g id="edge26" class="edge">
|
||||||
|
<title>svc:node-exporter->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M148.08,-1408.74C159.04,-1405.08 170.15,-1400.55 180,-1395 206.25,-1380.22 231.35,-1356.65 248.38,-1338.74"/>
|
||||||
|
<polygon fill="black" stroke="black" points="251.37,-1340.67 255.62,-1330.97 246.24,-1335.9 251.37,-1340.67"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red -->
|
||||||
|
<g id="node20" class="node">
|
||||||
|
<title>svc:node-red</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="129.5,-1224 50.5,-1224 50.5,-1188 129.5,-1188 129.5,-1224"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1202.3" font-family="Helvetica,sans-Serif" font-size="14.00">node-red</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red->net:monitor -->
|
||||||
|
<g id="edge27" class="edge">
|
||||||
|
<title>svc:node-red->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M129.72,-1213.82C145.92,-1218.07 164.52,-1224.28 180,-1233 206.25,-1247.78 231.35,-1271.35 248.38,-1289.26"/>
|
||||||
|
<polygon fill="black" stroke="black" points="246.24,-1292.1 255.62,-1297.03 251.37,-1287.33 246.24,-1292.1"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red->net:traefik -->
|
||||||
|
<g id="edge28" class="edge">
|
||||||
|
<title>svc:node-red->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M129.66,-1202.83C147.22,-1199.45 166.93,-1192.64 180,-1179 225.12,-1131.91 256.34,-930.92 266.59,-856.16"/>
|
||||||
|
<polygon fill="black" stroke="black" points="270.08,-856.45 267.95,-846.08 263.14,-855.52 270.08,-856.45"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-db -->
|
||||||
|
<g id="node21" class="node">
|
||||||
|
<title>svc:passbolt-db</title>
|
||||||
|
<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-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:passbolt -->
|
||||||
|
<g id="node34" class="node">
|
||||||
|
<title>net:passbolt</title>
|
||||||
|
<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-db->net:passbolt -->
|
||||||
|
<g id="edge29" class="edge">
|
||||||
|
<title>svc:passbolt-db->net:passbolt</title>
|
||||||
|
<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-webapp -->
|
||||||
|
<g id="node22" class="node">
|
||||||
|
<title>svc:passbolt-webapp</title>
|
||||||
|
<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-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-webapp->net:passbolt -->
|
||||||
|
<g id="edge30" class="edge">
|
||||||
|
<title>svc:passbolt-webapp->net:passbolt</title>
|
||||||
|
<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-webapp->net:traefik -->
|
||||||
|
<g id="edge31" class="edge">
|
||||||
|
<title>svc:passbolt-webapp->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M157.92,-136.87C166.32,-140.76 174.04,-145.99 180,-153 190.73,-165.62 251.89,-673.92 266.91,-799.95"/>
|
||||||
|
<polygon fill="black" stroke="black" points="263.45,-800.46 268.11,-809.97 270.4,-799.63 263.45,-800.46"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:pihole-exporter -->
|
||||||
|
<g id="node23" class="node">
|
||||||
|
<title>svc:pihole-exporter</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="151.5,-1602 28.5,-1602 28.5,-1566 151.5,-1566 151.5,-1602"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1580.3" font-family="Helvetica,sans-Serif" font-size="14.00">pihole-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:pihole-exporter->net:monitor -->
|
||||||
|
<g id="edge32" class="edge">
|
||||||
|
<title>svc:pihole-exporter->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M151.56,-1573.88C161.97,-1569.95 172,-1564.52 180,-1557 242.3,-1498.4 261.83,-1392.88 267.77,-1342.4"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.27,-1342.54 268.86,-1332.22 264.31,-1341.79 271.27,-1342.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:portainer -->
|
||||||
|
<g id="node24" class="node">
|
||||||
|
<title>svc:portainer</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="130,-576 50,-576 50,-540 130,-540 130,-576"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-554.3" font-family="Helvetica,sans-Serif" font-size="14.00">portainer</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:portainer->net:traefik -->
|
||||||
|
<g id="edge33" class="edge">
|
||||||
|
<title>svc:portainer->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M130.4,-562.06C147.48,-565.65 166.59,-572.39 180,-585 242.3,-643.6 261.83,-749.12 267.77,-799.6"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.31,-800.21 268.86,-809.78 271.27,-799.46 264.31,-800.21"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus -->
|
||||||
|
<g id="node25" class="node">
|
||||||
|
<title>svc:prometheus</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="140,-1170 40,-1170 40,-1134 140,-1134 140,-1170"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1148.3" font-family="Helvetica,sans-Serif" font-size="14.00">prometheus</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus->net:monitor -->
|
||||||
|
<g id="edge34" class="edge">
|
||||||
|
<title>svc:prometheus->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M140.01,-1160.42C153.86,-1164.44 168.33,-1170.34 180,-1179 218.01,-1207.18 244.97,-1256.44 259.03,-1287.02"/>
|
||||||
|
<polygon fill="black" stroke="black" points="255.87,-1288.54 263.14,-1296.24 262.27,-1285.69 255.87,-1288.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus->net:traefik -->
|
||||||
|
<g id="edge35" class="edge">
|
||||||
|
<title>svc:prometheus->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M140.38,-1146.01C154.73,-1142.08 169.38,-1135.62 180,-1125 254.99,-1050.04 268.02,-914.87 270.03,-856.31"/>
|
||||||
|
<polygon fill="black" stroke="black" points="273.53,-856.39 270.29,-846.31 266.53,-856.21 273.53,-856.39"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:searxng-webapp -->
|
||||||
|
<g id="node26" class="node">
|
||||||
|
<title>svc:searxng-webapp</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="156,-522 24,-522 24,-486 156,-486 156,-522"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-500.3" font-family="Helvetica,sans-Serif" font-size="14.00">searxng-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:searxng-webapp->net:traefik -->
|
||||||
|
<g id="edge36" class="edge">
|
||||||
|
<title>svc:searxng-webapp->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M156.03,-515.39C164.9,-519.2 173.26,-524.27 180,-531 254.99,-605.96 268.02,-741.13 270.03,-799.69"/>
|
||||||
|
<polygon fill="black" stroke="black" points="266.53,-799.79 270.29,-809.69 273.53,-799.61 266.53,-799.79"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:shift-recorder-web -->
|
||||||
|
<g id="node27" class="node">
|
||||||
|
<title>svc:shift-recorder-web</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="161,-468 19,-468 19,-432 161,-432 161,-468"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-446.3" font-family="Helvetica,sans-Serif" font-size="14.00">shift-recorder-web</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:shift-recorder-web->net:traefik -->
|
||||||
|
<g id="edge37" class="edge">
|
||||||
|
<title>svc:shift-recorder-web->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M161.17,-463.42C168.16,-466.96 174.64,-471.4 180,-477 225.12,-524.09 256.34,-725.08 266.59,-799.84"/>
|
||||||
|
<polygon fill="black" stroke="black" points="263.14,-800.48 267.95,-809.92 270.08,-799.55 263.14,-800.48"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:stockfill -->
|
||||||
|
<g id="node28" class="node">
|
||||||
|
<title>svc:stockfill</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="125,-1008 55,-1008 55,-972 125,-972 125,-1008"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-986.3" font-family="Helvetica,sans-Serif" font-size="14.00">stockfill</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:stockfill->net:traefik -->
|
||||||
|
<g id="edge38" class="edge">
|
||||||
|
<title>svc:stockfill->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.19,-985.29C142.88,-981.52 164.05,-974.83 180,-963 218.01,-934.82 244.97,-885.56 259.03,-854.98"/>
|
||||||
|
<polygon fill="black" stroke="black" points="262.27,-856.31 263.14,-845.76 255.87,-853.46 262.27,-856.31"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:telegraf -->
|
||||||
|
<g id="node29" class="node">
|
||||||
|
<title>svc:telegraf</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="125.5,-1548 54.5,-1548 54.5,-1512 125.5,-1512 125.5,-1548"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1526.3" font-family="Helvetica,sans-Serif" font-size="14.00">telegraf</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:telegraf->net:monitor -->
|
||||||
|
<g id="edge39" class="edge">
|
||||||
|
<title>svc:telegraf->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.91,-1526.19C143.8,-1522.68 164.94,-1515.94 180,-1503 229.98,-1460.05 254.42,-1383.2 264.44,-1341.96"/>
|
||||||
|
<polygon fill="black" stroke="black" points="267.88,-1342.58 266.73,-1332.05 261.07,-1341 267.88,-1342.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:traefik -->
|
||||||
|
<g id="node30" class="node">
|
||||||
|
<title>svc:traefik</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="121,-954 59,-954 59,-918 121,-918 121,-954"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-932.3" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:traefik->net:traefik -->
|
||||||
|
<g id="edge40" class="edge">
|
||||||
|
<title>svc:traefik->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M121.17,-930.3C139.05,-926.1 161.71,-919.3 180,-909 206.25,-894.22 231.35,-870.65 248.38,-852.74"/>
|
||||||
|
<polygon fill="black" stroke="black" points="251.37,-854.67 255.62,-844.97 246.24,-849.9 251.37,-854.67"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 136 B After Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,260 @@
|
|||||||
|
digraph DockerTraefikDynu {
|
||||||
|
graph [rankdir=LR, compound=true, splines=true, 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";
|
||||||
|
"traefik-service:authelia" [label="service:authelia", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:authelia" -> "traefik-service:authelia";
|
||||||
|
"dns:service-1.<internal-domain>" [label="service-1.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-1.<internal-domain>";
|
||||||
|
"dns:service-1.<internal-domain>" -> "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";
|
||||||
|
"traefik-service:error-pages" [label="service:error-pages", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:error-pages-router" -> "traefik-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];
|
||||||
|
"traefik-service:error-pages-service" [label="service:error-pages-service\nport:8080", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:gitea" [label="service:gitea", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:gitea" -> "traefik-service:gitea";
|
||||||
|
"dns:service-2.<internal-domain>" [label="service-2.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-2.<internal-domain>";
|
||||||
|
"dns:service-2.<internal-domain>" -> "router:gitea";
|
||||||
|
"traefik-service:gitea" [label="service:gitea\nport:3000", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:gotify" [label="service:gotify", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:gotify" -> "traefik-service:gotify";
|
||||||
|
"dns:service-3.<internal-domain>" [label="service-3.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-3.<internal-domain>";
|
||||||
|
"dns:service-3.<internal-domain>" -> "router:gotify";
|
||||||
|
"traefik-service:gotify" [label="service:gotify\nport:80", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:grafana" [label="service:grafana", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:grafana" -> "traefik-service:grafana";
|
||||||
|
"dns:service-4.<internal-domain>" [label="service-4.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-4.<internal-domain>";
|
||||||
|
"dns:service-4.<internal-domain>" -> "router:grafana";
|
||||||
|
"traefik-service:grafana" [label="service:grafana\nport:3000", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:grampsweb" [label="service:grampsweb", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:gramps" -> "traefik-service:grampsweb";
|
||||||
|
"dns:service-5.<internal-domain>" [label="service-5.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-5.<internal-domain>";
|
||||||
|
"dns:service-5.<internal-domain>" -> "router:gramps";
|
||||||
|
"traefik-service:gramps" [label="service:gramps\nport:5000", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:influxdb" [label="service:influxdb", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:influxdb" -> "traefik-service:influxdb";
|
||||||
|
"dns:service-6.<internal-domain>" [label="service-6.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-6.<internal-domain>";
|
||||||
|
"dns:service-6.<internal-domain>" -> "router:influxdb";
|
||||||
|
"mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"];
|
||||||
|
"router:influxdb" -> "mw:authelia" [style=dashed];
|
||||||
|
"traefik-service:influxdb" [label="service:influxdb\nport:8086", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:monitor-kuma" [label="service:monitor-kuma", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:monitor" -> "traefik-service:monitor-kuma";
|
||||||
|
"dns:service-7.<internal-domain>" [label="service-7.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-7.<internal-domain>";
|
||||||
|
"dns:service-7.<internal-domain>" -> "router:monitor";
|
||||||
|
"traefik-service:monitor" [label="service:monitor\nport:3001", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:mtls-bridge" [label="service:mtls-bridge", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:mtls-bridge" -> "traefik-service:mtls-bridge";
|
||||||
|
"dns:service-8.<internal-domain>" [label="service-8.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-8.<internal-domain>";
|
||||||
|
"dns:service-8.<internal-domain>" -> "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";
|
||||||
|
"traefik-service:mtls-bridge" [label="service:mtls-bridge", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:mtls-bridge-preflight" -> "traefik-service:mtls-bridge";
|
||||||
|
"dns:service-8.<internal-domain>" [label="service-8.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-8.<internal-domain>";
|
||||||
|
"dns:service-8.<internal-domain>" -> "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];
|
||||||
|
"traefik-service:mtls-bridge" [label="service:mtls-bridge\nport:8080", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:nextcloud-webapp" [label="service:nextcloud-webapp", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:nextcloud" -> "traefik-service:nextcloud-webapp";
|
||||||
|
"dns:service-9.<internal-domain>" [label="service-9.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-9.<internal-domain>";
|
||||||
|
"dns:service-9.<internal-domain>" -> "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";
|
||||||
|
"traefik-service:node-red" [label="service:node-red", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:node-red" -> "traefik-service:node-red";
|
||||||
|
"dns:service-10.<internal-domain>" [label="service-10.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-10.<internal-domain>";
|
||||||
|
"dns:service-10.<internal-domain>" -> "router:node-red";
|
||||||
|
"mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"];
|
||||||
|
"router:node-red" -> "mw:authelia" [style=dashed];
|
||||||
|
"traefik-service:node-red" [label="service:node-red\nport:1880", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:passbolt-webapp" [label="service:passbolt-webapp", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:passbolt" -> "traefik-service:passbolt-webapp";
|
||||||
|
"dns:service-11.<internal-domain>" [label="service-11.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-11.<internal-domain>";
|
||||||
|
"dns:service-11.<internal-domain>" -> "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";
|
||||||
|
"traefik-service:portainer" [label="service:portainer", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:portainer" -> "traefik-service:portainer";
|
||||||
|
"dns:service-12.<internal-domain>" [label="service-12.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-12.<internal-domain>";
|
||||||
|
"dns:service-12.<internal-domain>" -> "router:portainer";
|
||||||
|
"traefik-service:portainer" [label="service:portainer\nport:9000", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:prometheus" [label="service:prometheus", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:prometheus" -> "traefik-service:prometheus";
|
||||||
|
"dns:service-13.<internal-domain>" [label="service-13.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-13.<internal-domain>";
|
||||||
|
"dns:service-13.<internal-domain>" -> "router:prometheus";
|
||||||
|
"mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"];
|
||||||
|
"router:prometheus" -> "mw:authelia" [style=dashed];
|
||||||
|
"traefik-service:prometheus" [label="service:prometheus\nport:9090", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:searxng-webapp" [label="service:searxng-webapp", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:searxng" -> "traefik-service:searxng-webapp";
|
||||||
|
"dns:service-14.<internal-domain>" [label="service-14.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-14.<internal-domain>";
|
||||||
|
"dns:service-14.<internal-domain>" -> "router:searxng";
|
||||||
|
"traefik-service:searxng" [label="service:searxng\nport:8080", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:shift-recorder-web" [label="service:shift-recorder-web", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:shifts" -> "traefik-service:shift-recorder-web";
|
||||||
|
"dns:service-15.<internal-domain>" [label="service-15.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-15.<internal-domain>";
|
||||||
|
"dns:service-15.<internal-domain>" -> "router:shifts";
|
||||||
|
"traefik-service:shifts" [label="service:shifts\nport:80", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:stockfill" [label="service:stockfill", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:stockfill" -> "traefik-service:stockfill";
|
||||||
|
"dns:service-16.<internal-domain>" [label="service-16.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-16.<internal-domain>";
|
||||||
|
"dns:service-16.<internal-domain>" -> "router:stockfill";
|
||||||
|
"traefik-service:stockfill" [label="service:stockfill\nport:80", shape=component, fillcolor="#fecaca"];
|
||||||
|
"traefik-service: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";
|
||||||
|
"traefik-service:api@internal" [label="service:api@internal", shape=component, fillcolor="#fecaca"];
|
||||||
|
"router:traefik" -> "traefik-service:api@internal";
|
||||||
|
"dns:service-17.<internal-domain>" [label="service-17.<internal-domain>", shape=note, fillcolor="#fde68a"];
|
||||||
|
"ext:dynu" -> "dns:service-17.<internal-domain>";
|
||||||
|
"dns:service-17.<internal-domain>" -> "router:traefik";
|
||||||
|
"mw:authelia" [label="authelia", shape=hexagon, fillcolor="#ddd6fe"];
|
||||||
|
"router:traefik" -> "mw:authelia" [style=dashed];
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 122 KiB |
@@ -0,0 +1,79 @@
|
|||||||
|
digraph PhysicalTopology {
|
||||||
|
graph [rankdir=LR, compound=true, splines=ortho, nodesep=0.45, ranksep=0.75, fontname="Helvetica"];
|
||||||
|
node [fontname="Helvetica", fontsize=10, style="rounded,filled", fillcolor="#ffffff"];
|
||||||
|
edge [fontname="Helvetica", fontsize=9];
|
||||||
|
subgraph "cluster_docker" {
|
||||||
|
label="docker";
|
||||||
|
style="rounded,filled";
|
||||||
|
color="#c7d6f5";
|
||||||
|
fillcolor="#eef3ff";
|
||||||
|
"host:docker" [label="docker", shape=box3d, fillcolor="#d4e3ff"];
|
||||||
|
"svc:authelia" [label="authelia", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:authelia" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:crowdsec" [label="crowdsec", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:crowdsec" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:docker-socket-proxy" [label="docker-socket-proxy", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:docker-socket-proxy" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:docker-update-exporter" [label="docker-update-exporter", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:docker-update-exporter" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:error-pages" [label="error-pages", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:error-pages" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:gitea" [label="gitea", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:gitea" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:gitea-runner" [label="gitea-runner", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:gitea-runner" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:gotify" [label="gotify", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:gotify" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:grafana" [label="grafana", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:grafana" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:gramps-redis" [label="gramps-redis", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:gramps-redis" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:grampsweb" [label="grampsweb", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:grampsweb" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:grampsweb_celery" [label="grampsweb_celery", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:grampsweb_celery" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:influxdb" [label="influxdb", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:influxdb" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:monitor-kuma" [label="monitor-kuma", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:monitor-kuma" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:mtls-bridge" [label="mtls-bridge", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:mtls-bridge" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:nextcloud-db" [label="nextcloud-db", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:nextcloud-db" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:nextcloud-redis" [label="nextcloud-redis", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:nextcloud-redis" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:nextcloud-webapp" [label="nextcloud-webapp", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:nextcloud-webapp" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:node-exporter" [label="node-exporter", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:node-exporter" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:node-red" [label="node-red", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:node-red" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:passbolt-db" [label="passbolt-db", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:passbolt-db" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:passbolt-webapp" [label="passbolt-webapp", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:passbolt-webapp" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:portainer" [label="portainer", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:portainer" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:prometheus" [label="prometheus", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:prometheus" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:searxng-webapp" [label="searxng-webapp", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:searxng-webapp" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:shift-recorder-web" [label="shift-recorder-web", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:shift-recorder-web" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:stockfill" [label="stockfill", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:stockfill" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:telegraf" [label="telegraf", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:telegraf" [style=dashed, color="#6b7280"];
|
||||||
|
"svc:traefik" [label="traefik", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:docker" -> "svc:traefik" [style=dashed, color="#6b7280"];
|
||||||
|
}
|
||||||
|
subgraph "cluster_raspberrypi" {
|
||||||
|
label="raspberrypi";
|
||||||
|
style="rounded,filled";
|
||||||
|
color="#c7d6f5";
|
||||||
|
fillcolor="#eef3ff";
|
||||||
|
"host:raspberrypi" [label="raspberrypi", shape=box3d, fillcolor="#d4e3ff"];
|
||||||
|
"svc:pihole-exporter" [label="pihole-exporter", shape=box, fillcolor="#dff2e1"];
|
||||||
|
"host:raspberrypi" -> "svc:pihole-exporter" [style=dashed, color="#6b7280"];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
<?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 2.43.0 (0)
|
||||||
|
-->
|
||||||
|
<!-- Title: PhysicalTopology Pages: 1 -->
|
||||||
|
<svg width="297pt" height="2086pt"
|
||||||
|
viewBox="0.00 0.00 297.00 2086.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 2082)">
|
||||||
|
<title>PhysicalTopology</title>
|
||||||
|
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2082 293,-2082 293,4 -4,4"/>
|
||||||
|
<g id="clust1" class="cluster">
|
||||||
|
<title>cluster_docker</title>
|
||||||
|
<path fill="#eef3ff" stroke="#c7d6f5" d="M29,-8C29,-8 269,-8 269,-8 275,-8 281,-14 281,-20 281,-20 281,-1975 281,-1975 281,-1981 275,-1987 269,-1987 269,-1987 29,-1987 29,-1987 23,-1987 17,-1981 17,-1975 17,-1975 17,-20 17,-20 17,-14 23,-8 29,-8"/>
|
||||||
|
<text text-anchor="middle" x="149" y="-1971.8" font-family="Helvetica,sans-Serif" font-size="14.00">docker</text>
|
||||||
|
</g>
|
||||||
|
<g id="clust2" class="cluster">
|
||||||
|
<title>cluster_raspberrypi</title>
|
||||||
|
<path fill="#eef3ff" stroke="#c7d6f5" d="M20,-1995C20,-1995 249.5,-1995 249.5,-1995 255.5,-1995 261.5,-2001 261.5,-2007 261.5,-2007 261.5,-2058 261.5,-2058 261.5,-2064 255.5,-2070 249.5,-2070 249.5,-2070 20,-2070 20,-2070 14,-2070 8,-2064 8,-2058 8,-2058 8,-2007 8,-2007 8,-2001 14,-1995 20,-1995"/>
|
||||||
|
<text text-anchor="middle" x="134.75" y="-2054.8" font-family="Helvetica,sans-Serif" font-size="14.00">raspberrypi</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker -->
|
||||||
|
<g id="node1" class="node">
|
||||||
|
<title>host:docker</title>
|
||||||
|
<polygon fill="#d4e3ff" stroke="black" points="79,-1004 29,-1004 25,-1000 25,-968 75,-968 79,-972 79,-1004"/>
|
||||||
|
<polyline fill="none" stroke="black" points="75,-1000 25,-1000 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="75,-1000 75,-968 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="75,-1000 79,-1004 "/>
|
||||||
|
<text text-anchor="middle" x="52" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">docker</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:authelia -->
|
||||||
|
<g id="node2" class="node">
|
||||||
|
<title>svc:authelia</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223.5,-52C223.5,-52 191.5,-52 191.5,-52 185.5,-52 179.5,-46 179.5,-40 179.5,-40 179.5,-28 179.5,-28 179.5,-22 185.5,-16 191.5,-16 191.5,-16 223.5,-16 223.5,-16 229.5,-16 235.5,-22 235.5,-28 235.5,-28 235.5,-40 235.5,-40 235.5,-46 229.5,-52 223.5,-52"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00">authelia</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:authelia -->
|
||||||
|
<g id="edge1" class="edge">
|
||||||
|
<title>host:docker->svc:authelia</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M30,-967.83C30,-836.22 30,-34 30,-34 30,-34 169.37,-34 169.37,-34"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.37,-37.5 179.37,-34 169.37,-30.5 169.37,-37.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:crowdsec -->
|
||||||
|
<g id="node3" class="node">
|
||||||
|
<title>svc:crowdsec</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M226.5,-120C226.5,-120 188.5,-120 188.5,-120 182.5,-120 176.5,-114 176.5,-108 176.5,-108 176.5,-96 176.5,-96 176.5,-90 182.5,-84 188.5,-84 188.5,-84 226.5,-84 226.5,-84 232.5,-84 238.5,-90 238.5,-96 238.5,-96 238.5,-108 238.5,-108 238.5,-114 232.5,-120 226.5,-120"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">crowdsec</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:crowdsec -->
|
||||||
|
<g id="edge2" class="edge">
|
||||||
|
<title>host:docker->svc:crowdsec</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M34,-967.94C34,-842.17 34,-102 34,-102 34,-102 166.48,-102 166.48,-102"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="166.48,-105.5 176.48,-102 166.48,-98.5 166.48,-105.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy -->
|
||||||
|
<g id="node4" class="node">
|
||||||
|
<title>svc:docker-socket-proxy</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M253.5,-188C253.5,-188 161.5,-188 161.5,-188 155.5,-188 149.5,-182 149.5,-176 149.5,-176 149.5,-164 149.5,-164 149.5,-158 155.5,-152 161.5,-152 161.5,-152 253.5,-152 253.5,-152 259.5,-152 265.5,-158 265.5,-164 265.5,-164 265.5,-176 265.5,-176 265.5,-182 259.5,-188 253.5,-188"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">docker-socket-proxy</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:docker-socket-proxy -->
|
||||||
|
<g id="edge3" class="edge">
|
||||||
|
<title>host:docker->svc:docker-socket-proxy</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M38,-967.81C38,-847.41 38,-170 38,-170 38,-170 139.17,-170 139.17,-170"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="139.17,-173.5 149.17,-170 139.17,-166.5 139.17,-173.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-update-exporter -->
|
||||||
|
<g id="node5" class="node">
|
||||||
|
<title>svc:docker-update-exporter</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M261,-256C261,-256 154,-256 154,-256 148,-256 142,-250 142,-244 142,-244 142,-232 142,-232 142,-226 148,-220 154,-220 154,-220 261,-220 261,-220 267,-220 273,-226 273,-232 273,-232 273,-244 273,-244 273,-250 267,-256 261,-256"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00">docker-update-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:docker-update-exporter -->
|
||||||
|
<g id="edge4" class="edge">
|
||||||
|
<title>host:docker->svc:docker-update-exporter</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79.25,-975.2C107.63,-975.2 148,-975.2 148,-975.2 148,-975.2 148,-266.22 148,-266.22"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="151.5,-266.22 148,-256.22 144.5,-266.22 151.5,-266.22"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:error-pages -->
|
||||||
|
<g id="node6" class="node">
|
||||||
|
<title>svc:error-pages</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232,-324C232,-324 183,-324 183,-324 177,-324 171,-318 171,-312 171,-312 171,-300 171,-300 171,-294 177,-288 183,-288 183,-288 232,-288 232,-288 238,-288 244,-294 244,-300 244,-300 244,-312 244,-312 244,-318 238,-324 232,-324"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">error-pages</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:error-pages -->
|
||||||
|
<g id="edge5" class="edge">
|
||||||
|
<title>host:docker->svc:error-pages</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M42,-967.81C42,-859.67 42,-306 42,-306 42,-306 160.77,-306 160.77,-306"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.77,-309.5 170.77,-306 160.77,-302.5 160.77,-309.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea -->
|
||||||
|
<g id="node7" class="node">
|
||||||
|
<title>svc:gitea</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-392C222.5,-392 192.5,-392 192.5,-392 186.5,-392 180.5,-386 180.5,-380 180.5,-380 180.5,-368 180.5,-368 180.5,-362 186.5,-356 192.5,-356 192.5,-356 222.5,-356 222.5,-356 228.5,-356 234.5,-362 234.5,-368 234.5,-368 234.5,-380 234.5,-380 234.5,-386 228.5,-392 222.5,-392"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">gitea</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gitea -->
|
||||||
|
<g id="edge6" class="edge">
|
||||||
|
<title>host:docker->svc:gitea</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M46,-967.68C46,-865.85 46,-374 46,-374 46,-374 170.47,-374 170.47,-374"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.47,-377.5 180.47,-374 170.47,-370.5 170.47,-377.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea-runner -->
|
||||||
|
<g id="node8" class="node">
|
||||||
|
<title>svc:gitea-runner</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M234,-460C234,-460 181,-460 181,-460 175,-460 169,-454 169,-448 169,-448 169,-436 169,-436 169,-430 175,-424 181,-424 181,-424 234,-424 234,-424 240,-424 246,-430 246,-436 246,-436 246,-448 246,-448 246,-454 240,-460 234,-460"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">gitea-runner</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gitea-runner -->
|
||||||
|
<g id="edge7" class="edge">
|
||||||
|
<title>host:docker->svc:gitea-runner</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M50,-967.9C50,-873.51 50,-442 50,-442 50,-442 158.97,-442 158.97,-442"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="158.97,-445.5 168.97,-442 158.97,-438.5 158.97,-445.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gotify -->
|
||||||
|
<g id="node9" class="node">
|
||||||
|
<title>svc:gotify</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-528C222.5,-528 192.5,-528 192.5,-528 186.5,-528 180.5,-522 180.5,-516 180.5,-516 180.5,-504 180.5,-504 180.5,-498 186.5,-492 192.5,-492 192.5,-492 222.5,-492 222.5,-492 228.5,-492 234.5,-498 234.5,-504 234.5,-504 234.5,-516 234.5,-516 234.5,-522 228.5,-528 222.5,-528"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">gotify</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gotify -->
|
||||||
|
<g id="edge8" class="edge">
|
||||||
|
<title>host:docker->svc:gotify</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M55,-967.92C55,-880.97 55,-510 55,-510 55,-510 170.24,-510 170.24,-510"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.24,-513.5 180.24,-510 170.24,-506.5 170.24,-513.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana -->
|
||||||
|
<g id="node10" class="node">
|
||||||
|
<title>svc:grafana</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-596C222.5,-596 192.5,-596 192.5,-596 186.5,-596 180.5,-590 180.5,-584 180.5,-584 180.5,-572 180.5,-572 180.5,-566 186.5,-560 192.5,-560 192.5,-560 222.5,-560 222.5,-560 228.5,-560 234.5,-566 234.5,-572 234.5,-572 234.5,-584 234.5,-584 234.5,-590 228.5,-596 222.5,-596"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00">grafana</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:grafana -->
|
||||||
|
<g id="edge9" class="edge">
|
||||||
|
<title>host:docker->svc:grafana</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M59,-967.94C59,-888.98 59,-578 59,-578 59,-578 170.26,-578 170.26,-578"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.26,-581.5 180.26,-578 170.26,-574.5 170.26,-581.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gramps-redis -->
|
||||||
|
<g id="node11" class="node">
|
||||||
|
<title>svc:gramps-redis</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M236,-664C236,-664 179,-664 179,-664 173,-664 167,-658 167,-652 167,-652 167,-640 167,-640 167,-634 173,-628 179,-628 179,-628 236,-628 236,-628 242,-628 248,-634 248,-640 248,-640 248,-652 248,-652 248,-658 242,-664 236,-664"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00">gramps-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gramps-redis -->
|
||||||
|
<g id="edge10" class="edge">
|
||||||
|
<title>host:docker->svc:gramps-redis</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M63,-967.72C63,-897.1 63,-646 63,-646 63,-646 156.86,-646 156.86,-646"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="156.86,-649.5 166.86,-646 156.86,-642.5 156.86,-649.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grampsweb -->
|
||||||
|
<g id="node12" class="node">
|
||||||
|
<title>svc:grampsweb</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232.5,-732C232.5,-732 182.5,-732 182.5,-732 176.5,-732 170.5,-726 170.5,-720 170.5,-720 170.5,-708 170.5,-708 170.5,-702 176.5,-696 182.5,-696 182.5,-696 232.5,-696 232.5,-696 238.5,-696 244.5,-702 244.5,-708 244.5,-708 244.5,-720 244.5,-720 244.5,-726 238.5,-732 232.5,-732"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">grampsweb</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:grampsweb -->
|
||||||
|
<g id="edge11" class="edge">
|
||||||
|
<title>host:docker->svc:grampsweb</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M67,-967.73C67,-906.75 67,-714 67,-714 67,-714 160.22,-714 160.22,-714"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.22,-717.5 170.22,-714 160.22,-710.5 160.22,-717.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grampsweb_celery -->
|
||||||
|
<g id="node13" class="node">
|
||||||
|
<title>svc:grampsweb_celery</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M250,-800C250,-800 165,-800 165,-800 159,-800 153,-794 153,-788 153,-788 153,-776 153,-776 153,-770 159,-764 165,-764 165,-764 250,-764 250,-764 256,-764 262,-770 262,-776 262,-776 262,-788 262,-788 262,-794 256,-800 250,-800"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00">grampsweb_celery</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:grampsweb_celery -->
|
||||||
|
<g id="edge12" class="edge">
|
||||||
|
<title>host:docker->svc:grampsweb_celery</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79,-982.4C110.7,-982.4 159,-982.4 159,-982.4 159,-982.4 159,-810.14 159,-810.14"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="162.5,-810.14 159,-800.14 155.5,-810.14 162.5,-810.14"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:influxdb -->
|
||||||
|
<g id="node14" class="node">
|
||||||
|
<title>svc:influxdb</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223.5,-868C223.5,-868 191.5,-868 191.5,-868 185.5,-868 179.5,-862 179.5,-856 179.5,-856 179.5,-844 179.5,-844 179.5,-838 185.5,-832 191.5,-832 191.5,-832 223.5,-832 223.5,-832 229.5,-832 235.5,-838 235.5,-844 235.5,-844 235.5,-856 235.5,-856 235.5,-862 229.5,-868 223.5,-868"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">influxdb</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:influxdb -->
|
||||||
|
<g id="edge13" class="edge">
|
||||||
|
<title>host:docker->svc:influxdb</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M71,-967.94C71,-930.95 71,-850 71,-850 71,-850 169.22,-850 169.22,-850"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.22,-853.5 179.22,-850 169.22,-846.5 169.22,-853.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma -->
|
||||||
|
<g id="node15" class="node">
|
||||||
|
<title>svc:monitor-kuma</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M238.5,-936C238.5,-936 176.5,-936 176.5,-936 170.5,-936 164.5,-930 164.5,-924 164.5,-924 164.5,-912 164.5,-912 164.5,-906 170.5,-900 176.5,-900 176.5,-900 238.5,-900 238.5,-900 244.5,-900 250.5,-906 250.5,-912 250.5,-912 250.5,-924 250.5,-924 250.5,-930 244.5,-936 238.5,-936"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-915.5" font-family="Helvetica,sans-Serif" font-size="10.00">monitor-kuma</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:monitor-kuma -->
|
||||||
|
<g id="edge14" class="edge">
|
||||||
|
<title>host:docker->svc:monitor-kuma</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M75,-967.78C75,-947.63 75,-918 75,-918 75,-918 154.48,-918 154.48,-918"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="154.48,-921.5 164.48,-918 154.48,-914.5 154.48,-921.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge -->
|
||||||
|
<g id="node16" class="node">
|
||||||
|
<title>svc:mtls-bridge</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232,-1004C232,-1004 183,-1004 183,-1004 177,-1004 171,-998 171,-992 171,-992 171,-980 171,-980 171,-974 177,-968 183,-968 183,-968 232,-968 232,-968 238,-968 244,-974 244,-980 244,-980 244,-992 244,-992 244,-998 238,-1004 232,-1004"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">mtls-bridge</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:mtls-bridge -->
|
||||||
|
<g id="edge15" class="edge">
|
||||||
|
<title>host:docker->svc:mtls-bridge</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79.09,-989.6C79.09,-989.6 160.82,-989.6 160.82,-989.6"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.82,-993.1 170.82,-989.6 160.82,-986.1 160.82,-993.1"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-db -->
|
||||||
|
<g id="node17" class="node">
|
||||||
|
<title>svc:nextcloud-db</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M235.5,-1072C235.5,-1072 179.5,-1072 179.5,-1072 173.5,-1072 167.5,-1066 167.5,-1060 167.5,-1060 167.5,-1048 167.5,-1048 167.5,-1042 173.5,-1036 179.5,-1036 179.5,-1036 235.5,-1036 235.5,-1036 241.5,-1036 247.5,-1042 247.5,-1048 247.5,-1048 247.5,-1060 247.5,-1060 247.5,-1066 241.5,-1072 235.5,-1072"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1051.5" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:nextcloud-db -->
|
||||||
|
<g id="edge16" class="edge">
|
||||||
|
<title>host:docker->svc:nextcloud-db</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M76,-1004.22C76,-1024.37 76,-1054 76,-1054 76,-1054 157.33,-1054 157.33,-1054"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="157.33,-1057.5 167.33,-1054 157.33,-1050.5 157.33,-1057.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-redis -->
|
||||||
|
<g id="node18" class="node">
|
||||||
|
<title>svc:nextcloud-redis</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M241.5,-1140C241.5,-1140 173.5,-1140 173.5,-1140 167.5,-1140 161.5,-1134 161.5,-1128 161.5,-1128 161.5,-1116 161.5,-1116 161.5,-1110 167.5,-1104 173.5,-1104 173.5,-1104 241.5,-1104 241.5,-1104 247.5,-1104 253.5,-1110 253.5,-1116 253.5,-1116 253.5,-1128 253.5,-1128 253.5,-1134 247.5,-1140 241.5,-1140"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1119.5" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:nextcloud-redis -->
|
||||||
|
<g id="edge17" class="edge">
|
||||||
|
<title>host:docker->svc:nextcloud-redis</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M72,-1004.06C72,-1041.05 72,-1122 72,-1122 72,-1122 151.25,-1122 151.25,-1122"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="151.25,-1125.5 161.25,-1122 151.25,-1118.5 151.25,-1125.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-webapp -->
|
||||||
|
<g id="node19" class="node">
|
||||||
|
<title>svc:nextcloud-webapp</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M249,-1208C249,-1208 166,-1208 166,-1208 160,-1208 154,-1202 154,-1196 154,-1196 154,-1184 154,-1184 154,-1178 160,-1172 166,-1172 166,-1172 249,-1172 249,-1172 255,-1172 261,-1178 261,-1184 261,-1184 261,-1196 261,-1196 261,-1202 255,-1208 249,-1208"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1187.5" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:nextcloud-webapp -->
|
||||||
|
<g id="edge18" class="edge">
|
||||||
|
<title>host:docker->svc:nextcloud-webapp</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79.04,-996.8C110.15,-996.8 157,-996.8 157,-996.8 157,-996.8 157,-1161.82 157,-1161.82"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="153.5,-1161.82 157,-1171.82 160.5,-1161.82 153.5,-1161.82"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-exporter -->
|
||||||
|
<g id="node20" class="node">
|
||||||
|
<title>svc:node-exporter</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M238.5,-1276C238.5,-1276 176.5,-1276 176.5,-1276 170.5,-1276 164.5,-1270 164.5,-1264 164.5,-1264 164.5,-1252 164.5,-1252 164.5,-1246 170.5,-1240 176.5,-1240 176.5,-1240 238.5,-1240 238.5,-1240 244.5,-1240 250.5,-1246 250.5,-1252 250.5,-1252 250.5,-1264 250.5,-1264 250.5,-1270 244.5,-1276 238.5,-1276"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1255.5" font-family="Helvetica,sans-Serif" font-size="10.00">node-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:node-exporter -->
|
||||||
|
<g id="edge19" class="edge">
|
||||||
|
<title>host:docker->svc:node-exporter</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M68,-1004.27C68,-1065.25 68,-1258 68,-1258 68,-1258 154.13,-1258 154.13,-1258"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="154.13,-1261.5 164.13,-1258 154.13,-1254.5 154.13,-1261.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red -->
|
||||||
|
<g id="node21" class="node">
|
||||||
|
<title>svc:node-red</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M225.5,-1344C225.5,-1344 189.5,-1344 189.5,-1344 183.5,-1344 177.5,-1338 177.5,-1332 177.5,-1332 177.5,-1320 177.5,-1320 177.5,-1314 183.5,-1308 189.5,-1308 189.5,-1308 225.5,-1308 225.5,-1308 231.5,-1308 237.5,-1314 237.5,-1320 237.5,-1320 237.5,-1332 237.5,-1332 237.5,-1338 231.5,-1344 225.5,-1344"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1323.5" font-family="Helvetica,sans-Serif" font-size="10.00">node-red</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:node-red -->
|
||||||
|
<g id="edge20" class="edge">
|
||||||
|
<title>host:docker->svc:node-red</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M64,-1004.28C64,-1074.9 64,-1326 64,-1326 64,-1326 167.42,-1326 167.42,-1326"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="167.42,-1329.5 177.42,-1326 167.42,-1322.5 167.42,-1329.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-db -->
|
||||||
|
<g id="node22" class="node">
|
||||||
|
<title>svc:passbolt-db</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232.5,-1412C232.5,-1412 182.5,-1412 182.5,-1412 176.5,-1412 170.5,-1406 170.5,-1400 170.5,-1400 170.5,-1388 170.5,-1388 170.5,-1382 176.5,-1376 182.5,-1376 182.5,-1376 232.5,-1376 232.5,-1376 238.5,-1376 244.5,-1382 244.5,-1388 244.5,-1388 244.5,-1400 244.5,-1400 244.5,-1406 238.5,-1412 232.5,-1412"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1391.5" font-family="Helvetica,sans-Serif" font-size="10.00">passbolt-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:passbolt-db -->
|
||||||
|
<g id="edge21" class="edge">
|
||||||
|
<title>host:docker->svc:passbolt-db</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M60,-1004.06C60,-1083.02 60,-1394 60,-1394 60,-1394 160.28,-1394 160.28,-1394"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.28,-1397.5 170.28,-1394 160.28,-1390.5 160.28,-1397.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-webapp -->
|
||||||
|
<g id="node23" class="node">
|
||||||
|
<title>svc:passbolt-webapp</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M245.5,-1480C245.5,-1480 169.5,-1480 169.5,-1480 163.5,-1480 157.5,-1474 157.5,-1468 157.5,-1468 157.5,-1456 157.5,-1456 157.5,-1450 163.5,-1444 169.5,-1444 169.5,-1444 245.5,-1444 245.5,-1444 251.5,-1444 257.5,-1450 257.5,-1456 257.5,-1456 257.5,-1468 257.5,-1468 257.5,-1474 251.5,-1480 245.5,-1480"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1459.5" font-family="Helvetica,sans-Serif" font-size="10.00">passbolt-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:passbolt-webapp -->
|
||||||
|
<g id="edge22" class="edge">
|
||||||
|
<title>host:docker->svc:passbolt-webapp</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M56,-1004.08C56,-1091.03 56,-1462 56,-1462 56,-1462 147.47,-1462 147.47,-1462"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="147.47,-1465.5 157.47,-1462 147.47,-1458.5 147.47,-1465.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:portainer -->
|
||||||
|
<g id="node24" class="node">
|
||||||
|
<title>svc:portainer</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M226,-1548C226,-1548 189,-1548 189,-1548 183,-1548 177,-1542 177,-1536 177,-1536 177,-1524 177,-1524 177,-1518 183,-1512 189,-1512 189,-1512 226,-1512 226,-1512 232,-1512 238,-1518 238,-1524 238,-1524 238,-1536 238,-1536 238,-1542 232,-1548 226,-1548"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1527.5" font-family="Helvetica,sans-Serif" font-size="10.00">portainer</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:portainer -->
|
||||||
|
<g id="edge23" class="edge">
|
||||||
|
<title>host:docker->svc:portainer</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M52,-1004.1C52,-1098.49 52,-1530 52,-1530 52,-1530 166.78,-1530 166.78,-1530"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="166.78,-1533.5 176.78,-1530 166.78,-1526.5 166.78,-1533.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus -->
|
||||||
|
<g id="node25" class="node">
|
||||||
|
<title>svc:prometheus</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M233,-1616C233,-1616 182,-1616 182,-1616 176,-1616 170,-1610 170,-1604 170,-1604 170,-1592 170,-1592 170,-1586 176,-1580 182,-1580 182,-1580 233,-1580 233,-1580 239,-1580 245,-1586 245,-1592 245,-1592 245,-1604 245,-1604 245,-1610 239,-1616 233,-1616"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1595.5" font-family="Helvetica,sans-Serif" font-size="10.00">prometheus</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:prometheus -->
|
||||||
|
<g id="edge24" class="edge">
|
||||||
|
<title>host:docker->svc:prometheus</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M49,-1004.32C49,-1106.15 49,-1598 49,-1598 49,-1598 159.94,-1598 159.94,-1598"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="159.94,-1601.5 169.94,-1598 159.94,-1594.5 159.94,-1601.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:searxng-webapp -->
|
||||||
|
<g id="node26" class="node">
|
||||||
|
<title>svc:searxng-webapp</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M244.5,-1684C244.5,-1684 170.5,-1684 170.5,-1684 164.5,-1684 158.5,-1678 158.5,-1672 158.5,-1672 158.5,-1660 158.5,-1660 158.5,-1654 164.5,-1648 170.5,-1648 170.5,-1648 244.5,-1648 244.5,-1648 250.5,-1648 256.5,-1654 256.5,-1660 256.5,-1660 256.5,-1672 256.5,-1672 256.5,-1678 250.5,-1684 244.5,-1684"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1663.5" font-family="Helvetica,sans-Serif" font-size="10.00">searxng-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:searxng-webapp -->
|
||||||
|
<g id="edge25" class="edge">
|
||||||
|
<title>host:docker->svc:searxng-webapp</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M45,-1004.19C45,-1112.33 45,-1666 45,-1666 45,-1666 148.3,-1666 148.3,-1666"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="148.3,-1669.5 158.3,-1666 148.3,-1662.5 148.3,-1669.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:shift-recorder-web -->
|
||||||
|
<g id="node27" class="node">
|
||||||
|
<title>svc:shift-recorder-web</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M248.5,-1752C248.5,-1752 166.5,-1752 166.5,-1752 160.5,-1752 154.5,-1746 154.5,-1740 154.5,-1740 154.5,-1728 154.5,-1728 154.5,-1722 160.5,-1716 166.5,-1716 166.5,-1716 248.5,-1716 248.5,-1716 254.5,-1716 260.5,-1722 260.5,-1728 260.5,-1728 260.5,-1740 260.5,-1740 260.5,-1746 254.5,-1752 248.5,-1752"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1731.5" font-family="Helvetica,sans-Serif" font-size="10.00">shift-recorder-web</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:shift-recorder-web -->
|
||||||
|
<g id="edge26" class="edge">
|
||||||
|
<title>host:docker->svc:shift-recorder-web</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M41,-1004.12C41,-1118.35 41,-1734 41,-1734 41,-1734 144.36,-1734 144.36,-1734"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="144.36,-1737.5 154.36,-1734 144.36,-1730.5 144.36,-1737.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:stockfill -->
|
||||||
|
<g id="node28" class="node">
|
||||||
|
<title>svc:stockfill</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223,-1820C223,-1820 192,-1820 192,-1820 186,-1820 180,-1814 180,-1808 180,-1808 180,-1796 180,-1796 180,-1790 186,-1784 192,-1784 192,-1784 223,-1784 223,-1784 229,-1784 235,-1790 235,-1796 235,-1796 235,-1808 235,-1808 235,-1814 229,-1820 223,-1820"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1799.5" font-family="Helvetica,sans-Serif" font-size="10.00">stockfill</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:stockfill -->
|
||||||
|
<g id="edge27" class="edge">
|
||||||
|
<title>host:docker->svc:stockfill</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M37,-1004.19C37,-1124.59 37,-1802 37,-1802 37,-1802 169.73,-1802 169.73,-1802"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.73,-1805.5 179.73,-1802 169.73,-1798.5 169.73,-1805.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:telegraf -->
|
||||||
|
<g id="node29" class="node">
|
||||||
|
<title>svc:telegraf</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223,-1888C223,-1888 192,-1888 192,-1888 186,-1888 180,-1882 180,-1876 180,-1876 180,-1864 180,-1864 180,-1858 186,-1852 192,-1852 192,-1852 223,-1852 223,-1852 229,-1852 235,-1858 235,-1864 235,-1864 235,-1876 235,-1876 235,-1882 229,-1888 223,-1888"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1867.5" font-family="Helvetica,sans-Serif" font-size="10.00">telegraf</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:telegraf -->
|
||||||
|
<g id="edge28" class="edge">
|
||||||
|
<title>host:docker->svc:telegraf</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M33,-1004.06C33,-1129.83 33,-1870 33,-1870 33,-1870 169.85,-1870 169.85,-1870"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.85,-1873.5 179.85,-1870 169.85,-1866.5 169.85,-1873.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:traefik -->
|
||||||
|
<g id="node30" class="node">
|
||||||
|
<title>svc:traefik</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-1956C222.5,-1956 192.5,-1956 192.5,-1956 186.5,-1956 180.5,-1950 180.5,-1944 180.5,-1944 180.5,-1932 180.5,-1932 180.5,-1926 186.5,-1920 192.5,-1920 192.5,-1920 222.5,-1920 222.5,-1920 228.5,-1920 234.5,-1926 234.5,-1932 234.5,-1932 234.5,-1944 234.5,-1944 234.5,-1950 228.5,-1956 222.5,-1956"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1935.5" font-family="Helvetica,sans-Serif" font-size="10.00">traefik</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:traefik -->
|
||||||
|
<g id="edge29" class="edge">
|
||||||
|
<title>host:docker->svc:traefik</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M29,-1004.17C29,-1135.78 29,-1938 29,-1938 29,-1938 170.39,-1938 170.39,-1938"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.39,-1941.5 180.39,-1938 170.39,-1934.5 170.39,-1941.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- host:raspberrypi -->
|
||||||
|
<g id="node31" class="node">
|
||||||
|
<title>host:raspberrypi</title>
|
||||||
|
<polygon fill="#d4e3ff" stroke="black" points="88,-2039 20,-2039 16,-2035 16,-2003 84,-2003 88,-2007 88,-2039"/>
|
||||||
|
<polyline fill="none" stroke="black" points="84,-2035 16,-2035 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="84,-2035 84,-2003 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="84,-2035 88,-2039 "/>
|
||||||
|
<text text-anchor="middle" x="52" y="-2018.5" font-family="Helvetica,sans-Serif" font-size="10.00">raspberrypi</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:pihole-exporter -->
|
||||||
|
<g id="node32" class="node">
|
||||||
|
<title>svc:pihole-exporter</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M241.5,-2039C241.5,-2039 173.5,-2039 173.5,-2039 167.5,-2039 161.5,-2033 161.5,-2027 161.5,-2027 161.5,-2015 161.5,-2015 161.5,-2009 167.5,-2003 173.5,-2003 173.5,-2003 241.5,-2003 241.5,-2003 247.5,-2003 253.5,-2009 253.5,-2015 253.5,-2015 253.5,-2027 253.5,-2027 253.5,-2033 247.5,-2039 241.5,-2039"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-2018.5" font-family="Helvetica,sans-Serif" font-size="10.00">pihole-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:raspberrypi->svc:pihole-exporter -->
|
||||||
|
<g id="edge30" class="edge">
|
||||||
|
<title>host:raspberrypi->svc:pihole-exporter</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M88.07,-2021C88.07,-2021 151.29,-2021 151.29,-2021"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="151.29,-2024.5 161.29,-2021 151.29,-2017.5 151.29,-2024.5"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
# Infrastructure diagrams
|
||||||
|
|
||||||
|
## Physical / virtual topology
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Docker, Traefik and Dynu routing
|
||||||
|
|
||||||
|

|
||||||
@@ -1 +1,463 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="640" height="80"><text x="10" y="40">Graphviz dot not found in environment.</text></svg>
|
<?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 2.43.0 (0)
|
||||||
|
-->
|
||||||
|
<!-- Title: Compose Pages: 1 -->
|
||||||
|
<svg width="334pt" height="1610pt"
|
||||||
|
viewBox="0.00 0.00 334.49 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)">
|
||||||
|
<title>Compose</title>
|
||||||
|
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1606 330.49,-1606 330.49,4 -4,4"/>
|
||||||
|
<!-- svc:authelia -->
|
||||||
|
<g id="node1" class="node">
|
||||||
|
<title>svc:authelia</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="126,-900 54,-900 54,-864 126,-864 126,-900"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-878.3" font-family="Helvetica,sans-Serif" font-size="14.00">authelia</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:traefik -->
|
||||||
|
<g id="node35" class="node">
|
||||||
|
<title>net:traefik</title>
|
||||||
|
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-828" rx="40.09" ry="18"/>
|
||||||
|
<text text-anchor="middle" x="271.25" y="-824.3" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:authelia->net:traefik -->
|
||||||
|
<g id="edge1" class="edge">
|
||||||
|
<title>svc:authelia->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M126.41,-871.33C155.5,-862.57 196.8,-850.13 227.69,-840.82"/>
|
||||||
|
<polygon fill="black" stroke="black" points="228.76,-844.15 237.32,-837.92 226.74,-837.45 228.76,-844.15"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:crowdsec -->
|
||||||
|
<g id="node2" class="node">
|
||||||
|
<title>svc:crowdsec</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="130.5,-846 49.5,-846 49.5,-810 130.5,-810 130.5,-846"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-824.3" font-family="Helvetica,sans-Serif" font-size="14.00">crowdsec</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:crowdsec->net:traefik -->
|
||||||
|
<g id="edge2" class="edge">
|
||||||
|
<title>svc:crowdsec->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M130.78,-828C157.33,-828 192.43,-828 220.78,-828"/>
|
||||||
|
<polygon fill="black" stroke="black" points="220.88,-831.5 230.88,-828 220.88,-824.5 220.88,-831.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy -->
|
||||||
|
<g id="node3" class="node">
|
||||||
|
<title>svc:docker-socket-proxy</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="167.5,-1116 12.5,-1116 12.5,-1080 167.5,-1080 167.5,-1116"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1094.3" font-family="Helvetica,sans-Serif" font-size="14.00">docker-socket-proxy</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:monitor -->
|
||||||
|
<g id="node32" class="node">
|
||||||
|
<title>net:monitor</title>
|
||||||
|
<ellipse fill="#f4f4f4" stroke="black" cx="271.25" cy="-1314" rx="46.29" ry="18"/>
|
||||||
|
<text text-anchor="middle" x="271.25" y="-1310.3" font-family="Helvetica,sans-Serif" font-size="14.00">monitor</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy->net:monitor -->
|
||||||
|
<g id="edge3" class="edge">
|
||||||
|
<title>svc:docker-socket-proxy->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M167.18,-1116.1C171.75,-1118.68 176.08,-1121.63 180,-1125 229.98,-1167.95 254.42,-1244.8 264.44,-1286.04"/>
|
||||||
|
<polygon fill="black" stroke="black" points="261.07,-1287 266.73,-1295.95 267.88,-1285.42 261.07,-1287"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy->net:traefik -->
|
||||||
|
<g id="edge4" class="edge">
|
||||||
|
<title>svc:docker-socket-proxy->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M167.53,-1080.29C172.02,-1077.62 176.24,-1074.54 180,-1071 242.3,-1012.4 261.83,-906.88 267.77,-856.4"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.27,-856.54 268.86,-846.22 264.31,-855.79 271.27,-856.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-update-exporter -->
|
||||||
|
<g id="node4" class="node">
|
||||||
|
<title>svc:docker-update-exporter</title>
|
||||||
|
<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-update-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-update-exporter->net:monitor -->
|
||||||
|
<g id="edge5" class="edge">
|
||||||
|
<title>svc:docker-update-exporter->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M165.31,-1457.9C170.5,-1455.32 175.46,-1452.37 180,-1449 218.01,-1420.82 244.97,-1371.56 259.03,-1340.98"/>
|
||||||
|
<polygon fill="black" stroke="black" points="262.27,-1342.31 263.14,-1331.76 255.87,-1339.46 262.27,-1342.31"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:error-pages -->
|
||||||
|
<g id="node5" class="node">
|
||||||
|
<title>svc:error-pages</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="137.5,-792 42.5,-792 42.5,-756 137.5,-756 137.5,-792"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-770.3" font-family="Helvetica,sans-Serif" font-size="14.00">error-pages</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:error-pages->net:traefik -->
|
||||||
|
<g id="edge6" class="edge">
|
||||||
|
<title>svc:error-pages->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M137.63,-788.05C165.53,-796.45 200.71,-807.05 227.83,-815.22"/>
|
||||||
|
<polygon fill="black" stroke="black" points="226.84,-818.58 237.43,-818.11 228.86,-811.88 226.84,-818.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea -->
|
||||||
|
<g id="node6" class="node">
|
||||||
|
<title>svc:gitea</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="117,-738 63,-738 63,-702 117,-702 117,-738"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-716.3" font-family="Helvetica,sans-Serif" font-size="14.00">gitea</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea->net:traefik -->
|
||||||
|
<g id="edge7" class="edge">
|
||||||
|
<title>svc:gitea->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M117.13,-724.77C135.53,-728.87 160.3,-735.91 180,-747 206.25,-761.78 231.35,-785.35 248.38,-803.26"/>
|
||||||
|
<polygon fill="black" stroke="black" points="246.24,-806.1 255.62,-811.03 251.37,-801.33 246.24,-806.1"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea-runner -->
|
||||||
|
<g id="node7" class="node">
|
||||||
|
<title>svc:gitea-runner</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="142,-684 38,-684 38,-648 142,-648 142,-684"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-662.3" font-family="Helvetica,sans-Serif" font-size="14.00">gitea-runner</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea-runner->net:traefik -->
|
||||||
|
<g id="edge8" class="edge">
|
||||||
|
<title>svc:gitea-runner->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M142.32,-675.1C155.46,-679.1 168.98,-684.83 180,-693 218.01,-721.18 244.97,-770.44 259.03,-801.02"/>
|
||||||
|
<polygon fill="black" stroke="black" points="255.87,-802.54 263.14,-810.24 262.27,-799.69 255.87,-802.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gotify -->
|
||||||
|
<g id="node8" class="node">
|
||||||
|
<title>svc:gotify</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="118,-630 62,-630 62,-594 118,-594 118,-630"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-608.3" font-family="Helvetica,sans-Serif" font-size="14.00">gotify</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gotify->net:traefik -->
|
||||||
|
<g id="edge9" class="edge">
|
||||||
|
<title>svc:gotify->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M118.29,-614.47C137.49,-617.48 162.73,-624.16 180,-639 229.98,-681.95 254.42,-758.8 264.44,-800.04"/>
|
||||||
|
<polygon fill="black" stroke="black" points="261.07,-801 266.73,-809.95 267.88,-799.42 261.07,-801"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana -->
|
||||||
|
<g id="node9" class="node">
|
||||||
|
<title>svc:grafana</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="125.5,-1062 54.5,-1062 54.5,-1026 125.5,-1026 125.5,-1062"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1040.3" font-family="Helvetica,sans-Serif" font-size="14.00">grafana</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana->net:monitor -->
|
||||||
|
<g id="edge10" class="edge">
|
||||||
|
<title>svc:grafana->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.52,-1047.11C143.74,-1050.41 165.3,-1057.17 180,-1071 242.3,-1129.6 261.83,-1235.12 267.77,-1285.6"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.31,-1286.21 268.86,-1295.78 271.27,-1285.46 264.31,-1286.21"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana->net:traefik -->
|
||||||
|
<g id="edge11" class="edge">
|
||||||
|
<title>svc:grafana->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.91,-1040.19C143.8,-1036.68 164.94,-1029.94 180,-1017 229.98,-974.05 254.42,-897.2 264.44,-855.96"/>
|
||||||
|
<polygon fill="black" stroke="black" points="267.88,-856.58 266.73,-846.05 261.07,-855 267.88,-856.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gramps-redis -->
|
||||||
|
<g id="node10" class="node">
|
||||||
|
<title>svc:gramps-redis</title>
|
||||||
|
<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-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:gramps -->
|
||||||
|
<g id="node31" class="node">
|
||||||
|
<title>net:gramps</title>
|
||||||
|
<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-redis->net:gramps -->
|
||||||
|
<g id="edge12" class="edge">
|
||||||
|
<title>svc:gramps-redis->net:gramps</title>
|
||||||
|
<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="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->net:gramps -->
|
||||||
|
<g id="edge13" class="edge">
|
||||||
|
<title>svc:grampsweb->net:gramps</title>
|
||||||
|
<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->net:traefik -->
|
||||||
|
<g id="edge14" class="edge">
|
||||||
|
<title>svc:grampsweb->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M139.02,-401.02C153.99,-404.86 169.35,-411.52 180,-423 231.57,-478.6 259.36,-716.7 267.6,-799.49"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.14,-800.06 268.59,-809.67 271.1,-799.38 264.14,-800.06"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grampsweb_celery -->
|
||||||
|
<g id="node12" class="node">
|
||||||
|
<title>svc:grampsweb_celery</title>
|
||||||
|
<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->net:gramps -->
|
||||||
|
<g id="edge15" class="edge">
|
||||||
|
<title>svc:grampsweb_celery->net:gramps</title>
|
||||||
|
<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="127,-1386 53,-1386 53,-1350 127,-1350 127,-1386"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1364.3" font-family="Helvetica,sans-Serif" font-size="14.00">influxdb</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:influxdb->net:monitor -->
|
||||||
|
<g id="edge16" class="edge">
|
||||||
|
<title>svc:influxdb->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M127.27,-1357.07C155.3,-1348.63 194.28,-1336.88 224.46,-1327.79"/>
|
||||||
|
<polygon fill="black" stroke="black" points="225.77,-1331.06 234.33,-1324.82 223.75,-1324.35 225.77,-1331.06"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:influxdb->net:traefik -->
|
||||||
|
<g id="edge17" class="edge">
|
||||||
|
<title>svc:influxdb->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M127.44,-1365.74C145.77,-1362.68 166.83,-1355.86 180,-1341 244.76,-1267.93 264.48,-953.16 269.06,-856.4"/>
|
||||||
|
<polygon fill="black" stroke="black" points="272.57,-856.36 269.53,-846.21 265.58,-856.04 272.57,-856.36"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma -->
|
||||||
|
<g id="node14" class="node">
|
||||||
|
<title>svc:monitor-kuma</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="146.5,-1332 33.5,-1332 33.5,-1296 146.5,-1296 146.5,-1332"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1310.3" font-family="Helvetica,sans-Serif" font-size="14.00">monitor-kuma</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma->net:monitor -->
|
||||||
|
<g id="edge18" class="edge">
|
||||||
|
<title>svc:monitor-kuma->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M146.73,-1314C168.47,-1314 193.32,-1314 215.01,-1314"/>
|
||||||
|
<polygon fill="black" stroke="black" points="215.05,-1317.5 225.05,-1314 215.05,-1310.5 215.05,-1317.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma->net:traefik -->
|
||||||
|
<g id="edge19" class="edge">
|
||||||
|
<title>svc:monitor-kuma->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M146.61,-1307C159.1,-1302.97 171.23,-1296.7 180,-1287 238.17,-1222.67 262.1,-946.17 268.43,-856.32"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.93,-856.3 269.13,-846.08 264.95,-855.82 271.93,-856.3"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge -->
|
||||||
|
<g id="node15" class="node">
|
||||||
|
<title>svc:mtls-bridge</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="138.5,-1278 41.5,-1278 41.5,-1242 138.5,-1242 138.5,-1278"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1256.3" font-family="Helvetica,sans-Serif" font-size="14.00">mtls-bridge</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge->net:monitor -->
|
||||||
|
<g id="edge20" class="edge">
|
||||||
|
<title>svc:mtls-bridge->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M138.56,-1274.33C165.14,-1282.34 198.1,-1292.27 224.4,-1300.19"/>
|
||||||
|
<polygon fill="black" stroke="black" points="223.54,-1303.58 234.12,-1303.12 225.56,-1296.88 223.54,-1303.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge->net:traefik -->
|
||||||
|
<g id="edge21" class="edge">
|
||||||
|
<title>svc:mtls-bridge->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M138.56,-1255.1C153.68,-1251.28 169.24,-1244.6 180,-1233 231.57,-1177.4 259.36,-939.3 267.6,-856.51"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.1,-856.62 268.59,-846.33 264.14,-855.94 271.1,-856.62"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-db -->
|
||||||
|
<g id="node16" class="node">
|
||||||
|
<title>svc:nextcloud-db</title>
|
||||||
|
<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-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:nextcloud -->
|
||||||
|
<g id="node33" class="node">
|
||||||
|
<title>net:nextcloud</title>
|
||||||
|
<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-db->net:nextcloud -->
|
||||||
|
<g id="edge22" class="edge">
|
||||||
|
<title>svc:nextcloud-db->net:nextcloud</title>
|
||||||
|
<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-redis -->
|
||||||
|
<g id="node17" class="node">
|
||||||
|
<title>svc:nextcloud-redis</title>
|
||||||
|
<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-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-redis->net:nextcloud -->
|
||||||
|
<g id="edge23" class="edge">
|
||||||
|
<title>svc:nextcloud-redis->net:nextcloud</title>
|
||||||
|
<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-webapp -->
|
||||||
|
<g id="node18" class="node">
|
||||||
|
<title>svc:nextcloud-webapp</title>
|
||||||
|
<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-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-webapp->net:nextcloud -->
|
||||||
|
<g id="edge24" class="edge">
|
||||||
|
<title>svc:nextcloud-webapp->net:nextcloud</title>
|
||||||
|
<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-webapp->net:traefik -->
|
||||||
|
<g id="edge25" class="edge">
|
||||||
|
<title>svc:nextcloud-webapp->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M162.56,-247.4C169.12,-250.94 175.12,-255.4 180,-261 215.98,-302.27 256.67,-690.32 267.49,-799.53"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.03,-800.16 268.49,-809.77 271,-799.47 264.03,-800.16"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-exporter -->
|
||||||
|
<g id="node19" class="node">
|
||||||
|
<title>svc:node-exporter</title>
|
||||||
|
<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-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-exporter->net:monitor -->
|
||||||
|
<g id="edge26" class="edge">
|
||||||
|
<title>svc:node-exporter->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M148.08,-1408.74C159.04,-1405.08 170.15,-1400.55 180,-1395 206.25,-1380.22 231.35,-1356.65 248.38,-1338.74"/>
|
||||||
|
<polygon fill="black" stroke="black" points="251.37,-1340.67 255.62,-1330.97 246.24,-1335.9 251.37,-1340.67"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red -->
|
||||||
|
<g id="node20" class="node">
|
||||||
|
<title>svc:node-red</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="129.5,-1224 50.5,-1224 50.5,-1188 129.5,-1188 129.5,-1224"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1202.3" font-family="Helvetica,sans-Serif" font-size="14.00">node-red</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red->net:monitor -->
|
||||||
|
<g id="edge27" class="edge">
|
||||||
|
<title>svc:node-red->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M129.72,-1213.82C145.92,-1218.07 164.52,-1224.28 180,-1233 206.25,-1247.78 231.35,-1271.35 248.38,-1289.26"/>
|
||||||
|
<polygon fill="black" stroke="black" points="246.24,-1292.1 255.62,-1297.03 251.37,-1287.33 246.24,-1292.1"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red->net:traefik -->
|
||||||
|
<g id="edge28" class="edge">
|
||||||
|
<title>svc:node-red->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M129.66,-1202.83C147.22,-1199.45 166.93,-1192.64 180,-1179 225.12,-1131.91 256.34,-930.92 266.59,-856.16"/>
|
||||||
|
<polygon fill="black" stroke="black" points="270.08,-856.45 267.95,-846.08 263.14,-855.52 270.08,-856.45"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-db -->
|
||||||
|
<g id="node21" class="node">
|
||||||
|
<title>svc:passbolt-db</title>
|
||||||
|
<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-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- net:passbolt -->
|
||||||
|
<g id="node34" class="node">
|
||||||
|
<title>net:passbolt</title>
|
||||||
|
<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-db->net:passbolt -->
|
||||||
|
<g id="edge29" class="edge">
|
||||||
|
<title>svc:passbolt-db->net:passbolt</title>
|
||||||
|
<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-webapp -->
|
||||||
|
<g id="node22" class="node">
|
||||||
|
<title>svc:passbolt-webapp</title>
|
||||||
|
<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-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-webapp->net:passbolt -->
|
||||||
|
<g id="edge30" class="edge">
|
||||||
|
<title>svc:passbolt-webapp->net:passbolt</title>
|
||||||
|
<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-webapp->net:traefik -->
|
||||||
|
<g id="edge31" class="edge">
|
||||||
|
<title>svc:passbolt-webapp->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M157.92,-136.87C166.32,-140.76 174.04,-145.99 180,-153 190.73,-165.62 251.89,-673.92 266.91,-799.95"/>
|
||||||
|
<polygon fill="black" stroke="black" points="263.45,-800.46 268.11,-809.97 270.4,-799.63 263.45,-800.46"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:pihole-exporter -->
|
||||||
|
<g id="node23" class="node">
|
||||||
|
<title>svc:pihole-exporter</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="151.5,-1602 28.5,-1602 28.5,-1566 151.5,-1566 151.5,-1602"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1580.3" font-family="Helvetica,sans-Serif" font-size="14.00">pihole-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:pihole-exporter->net:monitor -->
|
||||||
|
<g id="edge32" class="edge">
|
||||||
|
<title>svc:pihole-exporter->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M151.56,-1573.88C161.97,-1569.95 172,-1564.52 180,-1557 242.3,-1498.4 261.83,-1392.88 267.77,-1342.4"/>
|
||||||
|
<polygon fill="black" stroke="black" points="271.27,-1342.54 268.86,-1332.22 264.31,-1341.79 271.27,-1342.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:portainer -->
|
||||||
|
<g id="node24" class="node">
|
||||||
|
<title>svc:portainer</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="130,-576 50,-576 50,-540 130,-540 130,-576"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-554.3" font-family="Helvetica,sans-Serif" font-size="14.00">portainer</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:portainer->net:traefik -->
|
||||||
|
<g id="edge33" class="edge">
|
||||||
|
<title>svc:portainer->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M130.4,-562.06C147.48,-565.65 166.59,-572.39 180,-585 242.3,-643.6 261.83,-749.12 267.77,-799.6"/>
|
||||||
|
<polygon fill="black" stroke="black" points="264.31,-800.21 268.86,-809.78 271.27,-799.46 264.31,-800.21"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus -->
|
||||||
|
<g id="node25" class="node">
|
||||||
|
<title>svc:prometheus</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="140,-1170 40,-1170 40,-1134 140,-1134 140,-1170"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1148.3" font-family="Helvetica,sans-Serif" font-size="14.00">prometheus</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus->net:monitor -->
|
||||||
|
<g id="edge34" class="edge">
|
||||||
|
<title>svc:prometheus->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M140.01,-1160.42C153.86,-1164.44 168.33,-1170.34 180,-1179 218.01,-1207.18 244.97,-1256.44 259.03,-1287.02"/>
|
||||||
|
<polygon fill="black" stroke="black" points="255.87,-1288.54 263.14,-1296.24 262.27,-1285.69 255.87,-1288.54"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus->net:traefik -->
|
||||||
|
<g id="edge35" class="edge">
|
||||||
|
<title>svc:prometheus->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M140.38,-1146.01C154.73,-1142.08 169.38,-1135.62 180,-1125 254.99,-1050.04 268.02,-914.87 270.03,-856.31"/>
|
||||||
|
<polygon fill="black" stroke="black" points="273.53,-856.39 270.29,-846.31 266.53,-856.21 273.53,-856.39"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:searxng-webapp -->
|
||||||
|
<g id="node26" class="node">
|
||||||
|
<title>svc:searxng-webapp</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="156,-522 24,-522 24,-486 156,-486 156,-522"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-500.3" font-family="Helvetica,sans-Serif" font-size="14.00">searxng-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:searxng-webapp->net:traefik -->
|
||||||
|
<g id="edge36" class="edge">
|
||||||
|
<title>svc:searxng-webapp->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M156.03,-515.39C164.9,-519.2 173.26,-524.27 180,-531 254.99,-605.96 268.02,-741.13 270.03,-799.69"/>
|
||||||
|
<polygon fill="black" stroke="black" points="266.53,-799.79 270.29,-809.69 273.53,-799.61 266.53,-799.79"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:shift-recorder-web -->
|
||||||
|
<g id="node27" class="node">
|
||||||
|
<title>svc:shift-recorder-web</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="161,-468 19,-468 19,-432 161,-432 161,-468"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-446.3" font-family="Helvetica,sans-Serif" font-size="14.00">shift-recorder-web</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:shift-recorder-web->net:traefik -->
|
||||||
|
<g id="edge37" class="edge">
|
||||||
|
<title>svc:shift-recorder-web->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M161.17,-463.42C168.16,-466.96 174.64,-471.4 180,-477 225.12,-524.09 256.34,-725.08 266.59,-799.84"/>
|
||||||
|
<polygon fill="black" stroke="black" points="263.14,-800.48 267.95,-809.92 270.08,-799.55 263.14,-800.48"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:stockfill -->
|
||||||
|
<g id="node28" class="node">
|
||||||
|
<title>svc:stockfill</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="125,-1008 55,-1008 55,-972 125,-972 125,-1008"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-986.3" font-family="Helvetica,sans-Serif" font-size="14.00">stockfill</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:stockfill->net:traefik -->
|
||||||
|
<g id="edge38" class="edge">
|
||||||
|
<title>svc:stockfill->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.19,-985.29C142.88,-981.52 164.05,-974.83 180,-963 218.01,-934.82 244.97,-885.56 259.03,-854.98"/>
|
||||||
|
<polygon fill="black" stroke="black" points="262.27,-856.31 263.14,-845.76 255.87,-853.46 262.27,-856.31"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:telegraf -->
|
||||||
|
<g id="node29" class="node">
|
||||||
|
<title>svc:telegraf</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="125.5,-1548 54.5,-1548 54.5,-1512 125.5,-1512 125.5,-1548"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-1526.3" font-family="Helvetica,sans-Serif" font-size="14.00">telegraf</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:telegraf->net:monitor -->
|
||||||
|
<g id="edge39" class="edge">
|
||||||
|
<title>svc:telegraf->net:monitor</title>
|
||||||
|
<path fill="none" stroke="black" d="M125.91,-1526.19C143.8,-1522.68 164.94,-1515.94 180,-1503 229.98,-1460.05 254.42,-1383.2 264.44,-1341.96"/>
|
||||||
|
<polygon fill="black" stroke="black" points="267.88,-1342.58 266.73,-1332.05 261.07,-1341 267.88,-1342.58"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:traefik -->
|
||||||
|
<g id="node30" class="node">
|
||||||
|
<title>svc:traefik</title>
|
||||||
|
<polygon fill="#dfefff" stroke="black" points="121,-954 59,-954 59,-918 121,-918 121,-954"/>
|
||||||
|
<text text-anchor="middle" x="90" y="-932.3" font-family="Helvetica,sans-Serif" font-size="14.00">traefik</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:traefik->net:traefik -->
|
||||||
|
<g id="edge40" class="edge">
|
||||||
|
<title>svc:traefik->net:traefik</title>
|
||||||
|
<path fill="none" stroke="black" d="M121.17,-930.3C139.05,-926.1 161.71,-919.3 180,-909 206.25,-894.22 231.35,-870.65 248.38,-852.74"/>
|
||||||
|
<polygon fill="black" stroke="black" points="251.37,-854.67 255.62,-844.97 246.24,-849.9 251.37,-854.67"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 136 B After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 122 KiB |
@@ -1,12 +1,20 @@
|
|||||||
# Public Infrastructure Summary
|
# Public Infrastructure Summary
|
||||||
|
|
||||||
This folder contains sanitized documentation generated from the infrastructure repository.
|
This documentation is generated from the infrastructure repository. Sensitive values are redacted.
|
||||||
|
|
||||||
Sensitive values such as internal domain names, private IP addresses, tokens, passwords, and secrets are redacted.
|
## Infrastructure diagrams
|
||||||
|
|
||||||
|
### Physical / virtual topology
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Docker, Traefik and Dynu routing
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Documents
|
## Documents
|
||||||
|
|
||||||
|
- [Diagrams](diagrams.md)
|
||||||
- [Compose Inventory](compose-inventory.md)
|
- [Compose Inventory](compose-inventory.md)
|
||||||
- [Traefik Routes](traefik-routes.md)
|
- [Traefik Routes](traefik-routes.md)
|
||||||
- [Prometheus Rules](prometheus-rules.md)
|
- [Prometheus Rules](prometheus-rules.md)
|
||||||
- [Docker Compose Diagram](docker-compose.svg)
|
|
||||||
|
|||||||
@@ -0,0 +1,401 @@
|
|||||||
|
<?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 2.43.0 (0)
|
||||||
|
-->
|
||||||
|
<!-- Title: PhysicalTopology Pages: 1 -->
|
||||||
|
<svg width="297pt" height="2086pt"
|
||||||
|
viewBox="0.00 0.00 297.00 2086.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 2082)">
|
||||||
|
<title>PhysicalTopology</title>
|
||||||
|
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2082 293,-2082 293,4 -4,4"/>
|
||||||
|
<g id="clust1" class="cluster">
|
||||||
|
<title>cluster_docker</title>
|
||||||
|
<path fill="#eef3ff" stroke="#c7d6f5" d="M29,-8C29,-8 269,-8 269,-8 275,-8 281,-14 281,-20 281,-20 281,-1975 281,-1975 281,-1981 275,-1987 269,-1987 269,-1987 29,-1987 29,-1987 23,-1987 17,-1981 17,-1975 17,-1975 17,-20 17,-20 17,-14 23,-8 29,-8"/>
|
||||||
|
<text text-anchor="middle" x="149" y="-1971.8" font-family="Helvetica,sans-Serif" font-size="14.00">docker</text>
|
||||||
|
</g>
|
||||||
|
<g id="clust2" class="cluster">
|
||||||
|
<title>cluster_raspberrypi</title>
|
||||||
|
<path fill="#eef3ff" stroke="#c7d6f5" d="M20,-1995C20,-1995 249.5,-1995 249.5,-1995 255.5,-1995 261.5,-2001 261.5,-2007 261.5,-2007 261.5,-2058 261.5,-2058 261.5,-2064 255.5,-2070 249.5,-2070 249.5,-2070 20,-2070 20,-2070 14,-2070 8,-2064 8,-2058 8,-2058 8,-2007 8,-2007 8,-2001 14,-1995 20,-1995"/>
|
||||||
|
<text text-anchor="middle" x="134.75" y="-2054.8" font-family="Helvetica,sans-Serif" font-size="14.00">raspberrypi</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker -->
|
||||||
|
<g id="node1" class="node">
|
||||||
|
<title>host:docker</title>
|
||||||
|
<polygon fill="#d4e3ff" stroke="black" points="79,-1004 29,-1004 25,-1000 25,-968 75,-968 79,-972 79,-1004"/>
|
||||||
|
<polyline fill="none" stroke="black" points="75,-1000 25,-1000 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="75,-1000 75,-968 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="75,-1000 79,-1004 "/>
|
||||||
|
<text text-anchor="middle" x="52" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">docker</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:authelia -->
|
||||||
|
<g id="node2" class="node">
|
||||||
|
<title>svc:authelia</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223.5,-52C223.5,-52 191.5,-52 191.5,-52 185.5,-52 179.5,-46 179.5,-40 179.5,-40 179.5,-28 179.5,-28 179.5,-22 185.5,-16 191.5,-16 191.5,-16 223.5,-16 223.5,-16 229.5,-16 235.5,-22 235.5,-28 235.5,-28 235.5,-40 235.5,-40 235.5,-46 229.5,-52 223.5,-52"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00">authelia</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:authelia -->
|
||||||
|
<g id="edge1" class="edge">
|
||||||
|
<title>host:docker->svc:authelia</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M30,-967.83C30,-836.22 30,-34 30,-34 30,-34 169.37,-34 169.37,-34"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.37,-37.5 179.37,-34 169.37,-30.5 169.37,-37.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:crowdsec -->
|
||||||
|
<g id="node3" class="node">
|
||||||
|
<title>svc:crowdsec</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M226.5,-120C226.5,-120 188.5,-120 188.5,-120 182.5,-120 176.5,-114 176.5,-108 176.5,-108 176.5,-96 176.5,-96 176.5,-90 182.5,-84 188.5,-84 188.5,-84 226.5,-84 226.5,-84 232.5,-84 238.5,-90 238.5,-96 238.5,-96 238.5,-108 238.5,-108 238.5,-114 232.5,-120 226.5,-120"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">crowdsec</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:crowdsec -->
|
||||||
|
<g id="edge2" class="edge">
|
||||||
|
<title>host:docker->svc:crowdsec</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M34,-967.94C34,-842.17 34,-102 34,-102 34,-102 166.48,-102 166.48,-102"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="166.48,-105.5 176.48,-102 166.48,-98.5 166.48,-105.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-socket-proxy -->
|
||||||
|
<g id="node4" class="node">
|
||||||
|
<title>svc:docker-socket-proxy</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M253.5,-188C253.5,-188 161.5,-188 161.5,-188 155.5,-188 149.5,-182 149.5,-176 149.5,-176 149.5,-164 149.5,-164 149.5,-158 155.5,-152 161.5,-152 161.5,-152 253.5,-152 253.5,-152 259.5,-152 265.5,-158 265.5,-164 265.5,-164 265.5,-176 265.5,-176 265.5,-182 259.5,-188 253.5,-188"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">docker-socket-proxy</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:docker-socket-proxy -->
|
||||||
|
<g id="edge3" class="edge">
|
||||||
|
<title>host:docker->svc:docker-socket-proxy</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M38,-967.81C38,-847.41 38,-170 38,-170 38,-170 139.17,-170 139.17,-170"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="139.17,-173.5 149.17,-170 139.17,-166.5 139.17,-173.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:docker-update-exporter -->
|
||||||
|
<g id="node5" class="node">
|
||||||
|
<title>svc:docker-update-exporter</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M261,-256C261,-256 154,-256 154,-256 148,-256 142,-250 142,-244 142,-244 142,-232 142,-232 142,-226 148,-220 154,-220 154,-220 261,-220 261,-220 267,-220 273,-226 273,-232 273,-232 273,-244 273,-244 273,-250 267,-256 261,-256"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00">docker-update-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:docker-update-exporter -->
|
||||||
|
<g id="edge4" class="edge">
|
||||||
|
<title>host:docker->svc:docker-update-exporter</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79.25,-975.2C107.63,-975.2 148,-975.2 148,-975.2 148,-975.2 148,-266.22 148,-266.22"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="151.5,-266.22 148,-256.22 144.5,-266.22 151.5,-266.22"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:error-pages -->
|
||||||
|
<g id="node6" class="node">
|
||||||
|
<title>svc:error-pages</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232,-324C232,-324 183,-324 183,-324 177,-324 171,-318 171,-312 171,-312 171,-300 171,-300 171,-294 177,-288 183,-288 183,-288 232,-288 232,-288 238,-288 244,-294 244,-300 244,-300 244,-312 244,-312 244,-318 238,-324 232,-324"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">error-pages</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:error-pages -->
|
||||||
|
<g id="edge5" class="edge">
|
||||||
|
<title>host:docker->svc:error-pages</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M42,-967.81C42,-859.67 42,-306 42,-306 42,-306 160.77,-306 160.77,-306"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.77,-309.5 170.77,-306 160.77,-302.5 160.77,-309.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea -->
|
||||||
|
<g id="node7" class="node">
|
||||||
|
<title>svc:gitea</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-392C222.5,-392 192.5,-392 192.5,-392 186.5,-392 180.5,-386 180.5,-380 180.5,-380 180.5,-368 180.5,-368 180.5,-362 186.5,-356 192.5,-356 192.5,-356 222.5,-356 222.5,-356 228.5,-356 234.5,-362 234.5,-368 234.5,-368 234.5,-380 234.5,-380 234.5,-386 228.5,-392 222.5,-392"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">gitea</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gitea -->
|
||||||
|
<g id="edge6" class="edge">
|
||||||
|
<title>host:docker->svc:gitea</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M46,-967.68C46,-865.85 46,-374 46,-374 46,-374 170.47,-374 170.47,-374"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.47,-377.5 180.47,-374 170.47,-370.5 170.47,-377.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gitea-runner -->
|
||||||
|
<g id="node8" class="node">
|
||||||
|
<title>svc:gitea-runner</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M234,-460C234,-460 181,-460 181,-460 175,-460 169,-454 169,-448 169,-448 169,-436 169,-436 169,-430 175,-424 181,-424 181,-424 234,-424 234,-424 240,-424 246,-430 246,-436 246,-436 246,-448 246,-448 246,-454 240,-460 234,-460"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">gitea-runner</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gitea-runner -->
|
||||||
|
<g id="edge7" class="edge">
|
||||||
|
<title>host:docker->svc:gitea-runner</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M50,-967.9C50,-873.51 50,-442 50,-442 50,-442 158.97,-442 158.97,-442"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="158.97,-445.5 168.97,-442 158.97,-438.5 158.97,-445.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gotify -->
|
||||||
|
<g id="node9" class="node">
|
||||||
|
<title>svc:gotify</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-528C222.5,-528 192.5,-528 192.5,-528 186.5,-528 180.5,-522 180.5,-516 180.5,-516 180.5,-504 180.5,-504 180.5,-498 186.5,-492 192.5,-492 192.5,-492 222.5,-492 222.5,-492 228.5,-492 234.5,-498 234.5,-504 234.5,-504 234.5,-516 234.5,-516 234.5,-522 228.5,-528 222.5,-528"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">gotify</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gotify -->
|
||||||
|
<g id="edge8" class="edge">
|
||||||
|
<title>host:docker->svc:gotify</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M55,-967.92C55,-880.97 55,-510 55,-510 55,-510 170.24,-510 170.24,-510"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.24,-513.5 180.24,-510 170.24,-506.5 170.24,-513.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grafana -->
|
||||||
|
<g id="node10" class="node">
|
||||||
|
<title>svc:grafana</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-596C222.5,-596 192.5,-596 192.5,-596 186.5,-596 180.5,-590 180.5,-584 180.5,-584 180.5,-572 180.5,-572 180.5,-566 186.5,-560 192.5,-560 192.5,-560 222.5,-560 222.5,-560 228.5,-560 234.5,-566 234.5,-572 234.5,-572 234.5,-584 234.5,-584 234.5,-590 228.5,-596 222.5,-596"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00">grafana</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:grafana -->
|
||||||
|
<g id="edge9" class="edge">
|
||||||
|
<title>host:docker->svc:grafana</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M59,-967.94C59,-888.98 59,-578 59,-578 59,-578 170.26,-578 170.26,-578"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.26,-581.5 180.26,-578 170.26,-574.5 170.26,-581.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:gramps-redis -->
|
||||||
|
<g id="node11" class="node">
|
||||||
|
<title>svc:gramps-redis</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M236,-664C236,-664 179,-664 179,-664 173,-664 167,-658 167,-652 167,-652 167,-640 167,-640 167,-634 173,-628 179,-628 179,-628 236,-628 236,-628 242,-628 248,-634 248,-640 248,-640 248,-652 248,-652 248,-658 242,-664 236,-664"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00">gramps-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:gramps-redis -->
|
||||||
|
<g id="edge10" class="edge">
|
||||||
|
<title>host:docker->svc:gramps-redis</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M63,-967.72C63,-897.1 63,-646 63,-646 63,-646 156.86,-646 156.86,-646"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="156.86,-649.5 166.86,-646 156.86,-642.5 156.86,-649.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grampsweb -->
|
||||||
|
<g id="node12" class="node">
|
||||||
|
<title>svc:grampsweb</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232.5,-732C232.5,-732 182.5,-732 182.5,-732 176.5,-732 170.5,-726 170.5,-720 170.5,-720 170.5,-708 170.5,-708 170.5,-702 176.5,-696 182.5,-696 182.5,-696 232.5,-696 232.5,-696 238.5,-696 244.5,-702 244.5,-708 244.5,-708 244.5,-720 244.5,-720 244.5,-726 238.5,-732 232.5,-732"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">grampsweb</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:grampsweb -->
|
||||||
|
<g id="edge11" class="edge">
|
||||||
|
<title>host:docker->svc:grampsweb</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M67,-967.73C67,-906.75 67,-714 67,-714 67,-714 160.22,-714 160.22,-714"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.22,-717.5 170.22,-714 160.22,-710.5 160.22,-717.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:grampsweb_celery -->
|
||||||
|
<g id="node13" class="node">
|
||||||
|
<title>svc:grampsweb_celery</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M250,-800C250,-800 165,-800 165,-800 159,-800 153,-794 153,-788 153,-788 153,-776 153,-776 153,-770 159,-764 165,-764 165,-764 250,-764 250,-764 256,-764 262,-770 262,-776 262,-776 262,-788 262,-788 262,-794 256,-800 250,-800"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00">grampsweb_celery</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:grampsweb_celery -->
|
||||||
|
<g id="edge12" class="edge">
|
||||||
|
<title>host:docker->svc:grampsweb_celery</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79,-982.4C110.7,-982.4 159,-982.4 159,-982.4 159,-982.4 159,-810.14 159,-810.14"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="162.5,-810.14 159,-800.14 155.5,-810.14 162.5,-810.14"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:influxdb -->
|
||||||
|
<g id="node14" class="node">
|
||||||
|
<title>svc:influxdb</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223.5,-868C223.5,-868 191.5,-868 191.5,-868 185.5,-868 179.5,-862 179.5,-856 179.5,-856 179.5,-844 179.5,-844 179.5,-838 185.5,-832 191.5,-832 191.5,-832 223.5,-832 223.5,-832 229.5,-832 235.5,-838 235.5,-844 235.5,-844 235.5,-856 235.5,-856 235.5,-862 229.5,-868 223.5,-868"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">influxdb</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:influxdb -->
|
||||||
|
<g id="edge13" class="edge">
|
||||||
|
<title>host:docker->svc:influxdb</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M71,-967.94C71,-930.95 71,-850 71,-850 71,-850 169.22,-850 169.22,-850"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.22,-853.5 179.22,-850 169.22,-846.5 169.22,-853.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:monitor-kuma -->
|
||||||
|
<g id="node15" class="node">
|
||||||
|
<title>svc:monitor-kuma</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M238.5,-936C238.5,-936 176.5,-936 176.5,-936 170.5,-936 164.5,-930 164.5,-924 164.5,-924 164.5,-912 164.5,-912 164.5,-906 170.5,-900 176.5,-900 176.5,-900 238.5,-900 238.5,-900 244.5,-900 250.5,-906 250.5,-912 250.5,-912 250.5,-924 250.5,-924 250.5,-930 244.5,-936 238.5,-936"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-915.5" font-family="Helvetica,sans-Serif" font-size="10.00">monitor-kuma</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:monitor-kuma -->
|
||||||
|
<g id="edge14" class="edge">
|
||||||
|
<title>host:docker->svc:monitor-kuma</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M75,-967.78C75,-947.63 75,-918 75,-918 75,-918 154.48,-918 154.48,-918"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="154.48,-921.5 164.48,-918 154.48,-914.5 154.48,-921.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:mtls-bridge -->
|
||||||
|
<g id="node16" class="node">
|
||||||
|
<title>svc:mtls-bridge</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232,-1004C232,-1004 183,-1004 183,-1004 177,-1004 171,-998 171,-992 171,-992 171,-980 171,-980 171,-974 177,-968 183,-968 183,-968 232,-968 232,-968 238,-968 244,-974 244,-980 244,-980 244,-992 244,-992 244,-998 238,-1004 232,-1004"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">mtls-bridge</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:mtls-bridge -->
|
||||||
|
<g id="edge15" class="edge">
|
||||||
|
<title>host:docker->svc:mtls-bridge</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79.09,-989.6C79.09,-989.6 160.82,-989.6 160.82,-989.6"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.82,-993.1 170.82,-989.6 160.82,-986.1 160.82,-993.1"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-db -->
|
||||||
|
<g id="node17" class="node">
|
||||||
|
<title>svc:nextcloud-db</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M235.5,-1072C235.5,-1072 179.5,-1072 179.5,-1072 173.5,-1072 167.5,-1066 167.5,-1060 167.5,-1060 167.5,-1048 167.5,-1048 167.5,-1042 173.5,-1036 179.5,-1036 179.5,-1036 235.5,-1036 235.5,-1036 241.5,-1036 247.5,-1042 247.5,-1048 247.5,-1048 247.5,-1060 247.5,-1060 247.5,-1066 241.5,-1072 235.5,-1072"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1051.5" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:nextcloud-db -->
|
||||||
|
<g id="edge16" class="edge">
|
||||||
|
<title>host:docker->svc:nextcloud-db</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M76,-1004.22C76,-1024.37 76,-1054 76,-1054 76,-1054 157.33,-1054 157.33,-1054"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="157.33,-1057.5 167.33,-1054 157.33,-1050.5 157.33,-1057.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-redis -->
|
||||||
|
<g id="node18" class="node">
|
||||||
|
<title>svc:nextcloud-redis</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M241.5,-1140C241.5,-1140 173.5,-1140 173.5,-1140 167.5,-1140 161.5,-1134 161.5,-1128 161.5,-1128 161.5,-1116 161.5,-1116 161.5,-1110 167.5,-1104 173.5,-1104 173.5,-1104 241.5,-1104 241.5,-1104 247.5,-1104 253.5,-1110 253.5,-1116 253.5,-1116 253.5,-1128 253.5,-1128 253.5,-1134 247.5,-1140 241.5,-1140"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1119.5" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud-redis</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:nextcloud-redis -->
|
||||||
|
<g id="edge17" class="edge">
|
||||||
|
<title>host:docker->svc:nextcloud-redis</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M72,-1004.06C72,-1041.05 72,-1122 72,-1122 72,-1122 151.25,-1122 151.25,-1122"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="151.25,-1125.5 161.25,-1122 151.25,-1118.5 151.25,-1125.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:nextcloud-webapp -->
|
||||||
|
<g id="node19" class="node">
|
||||||
|
<title>svc:nextcloud-webapp</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M249,-1208C249,-1208 166,-1208 166,-1208 160,-1208 154,-1202 154,-1196 154,-1196 154,-1184 154,-1184 154,-1178 160,-1172 166,-1172 166,-1172 249,-1172 249,-1172 255,-1172 261,-1178 261,-1184 261,-1184 261,-1196 261,-1196 261,-1202 255,-1208 249,-1208"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1187.5" font-family="Helvetica,sans-Serif" font-size="10.00">nextcloud-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:nextcloud-webapp -->
|
||||||
|
<g id="edge18" class="edge">
|
||||||
|
<title>host:docker->svc:nextcloud-webapp</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M79.04,-996.8C110.15,-996.8 157,-996.8 157,-996.8 157,-996.8 157,-1161.82 157,-1161.82"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="153.5,-1161.82 157,-1171.82 160.5,-1161.82 153.5,-1161.82"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-exporter -->
|
||||||
|
<g id="node20" class="node">
|
||||||
|
<title>svc:node-exporter</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M238.5,-1276C238.5,-1276 176.5,-1276 176.5,-1276 170.5,-1276 164.5,-1270 164.5,-1264 164.5,-1264 164.5,-1252 164.5,-1252 164.5,-1246 170.5,-1240 176.5,-1240 176.5,-1240 238.5,-1240 238.5,-1240 244.5,-1240 250.5,-1246 250.5,-1252 250.5,-1252 250.5,-1264 250.5,-1264 250.5,-1270 244.5,-1276 238.5,-1276"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1255.5" font-family="Helvetica,sans-Serif" font-size="10.00">node-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:node-exporter -->
|
||||||
|
<g id="edge19" class="edge">
|
||||||
|
<title>host:docker->svc:node-exporter</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M68,-1004.27C68,-1065.25 68,-1258 68,-1258 68,-1258 154.13,-1258 154.13,-1258"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="154.13,-1261.5 164.13,-1258 154.13,-1254.5 154.13,-1261.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:node-red -->
|
||||||
|
<g id="node21" class="node">
|
||||||
|
<title>svc:node-red</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M225.5,-1344C225.5,-1344 189.5,-1344 189.5,-1344 183.5,-1344 177.5,-1338 177.5,-1332 177.5,-1332 177.5,-1320 177.5,-1320 177.5,-1314 183.5,-1308 189.5,-1308 189.5,-1308 225.5,-1308 225.5,-1308 231.5,-1308 237.5,-1314 237.5,-1320 237.5,-1320 237.5,-1332 237.5,-1332 237.5,-1338 231.5,-1344 225.5,-1344"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1323.5" font-family="Helvetica,sans-Serif" font-size="10.00">node-red</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:node-red -->
|
||||||
|
<g id="edge20" class="edge">
|
||||||
|
<title>host:docker->svc:node-red</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M64,-1004.28C64,-1074.9 64,-1326 64,-1326 64,-1326 167.42,-1326 167.42,-1326"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="167.42,-1329.5 177.42,-1326 167.42,-1322.5 167.42,-1329.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-db -->
|
||||||
|
<g id="node22" class="node">
|
||||||
|
<title>svc:passbolt-db</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M232.5,-1412C232.5,-1412 182.5,-1412 182.5,-1412 176.5,-1412 170.5,-1406 170.5,-1400 170.5,-1400 170.5,-1388 170.5,-1388 170.5,-1382 176.5,-1376 182.5,-1376 182.5,-1376 232.5,-1376 232.5,-1376 238.5,-1376 244.5,-1382 244.5,-1388 244.5,-1388 244.5,-1400 244.5,-1400 244.5,-1406 238.5,-1412 232.5,-1412"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1391.5" font-family="Helvetica,sans-Serif" font-size="10.00">passbolt-db</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:passbolt-db -->
|
||||||
|
<g id="edge21" class="edge">
|
||||||
|
<title>host:docker->svc:passbolt-db</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M60,-1004.06C60,-1083.02 60,-1394 60,-1394 60,-1394 160.28,-1394 160.28,-1394"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="160.28,-1397.5 170.28,-1394 160.28,-1390.5 160.28,-1397.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:passbolt-webapp -->
|
||||||
|
<g id="node23" class="node">
|
||||||
|
<title>svc:passbolt-webapp</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M245.5,-1480C245.5,-1480 169.5,-1480 169.5,-1480 163.5,-1480 157.5,-1474 157.5,-1468 157.5,-1468 157.5,-1456 157.5,-1456 157.5,-1450 163.5,-1444 169.5,-1444 169.5,-1444 245.5,-1444 245.5,-1444 251.5,-1444 257.5,-1450 257.5,-1456 257.5,-1456 257.5,-1468 257.5,-1468 257.5,-1474 251.5,-1480 245.5,-1480"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1459.5" font-family="Helvetica,sans-Serif" font-size="10.00">passbolt-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:passbolt-webapp -->
|
||||||
|
<g id="edge22" class="edge">
|
||||||
|
<title>host:docker->svc:passbolt-webapp</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M56,-1004.08C56,-1091.03 56,-1462 56,-1462 56,-1462 147.47,-1462 147.47,-1462"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="147.47,-1465.5 157.47,-1462 147.47,-1458.5 147.47,-1465.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:portainer -->
|
||||||
|
<g id="node24" class="node">
|
||||||
|
<title>svc:portainer</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M226,-1548C226,-1548 189,-1548 189,-1548 183,-1548 177,-1542 177,-1536 177,-1536 177,-1524 177,-1524 177,-1518 183,-1512 189,-1512 189,-1512 226,-1512 226,-1512 232,-1512 238,-1518 238,-1524 238,-1524 238,-1536 238,-1536 238,-1542 232,-1548 226,-1548"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1527.5" font-family="Helvetica,sans-Serif" font-size="10.00">portainer</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:portainer -->
|
||||||
|
<g id="edge23" class="edge">
|
||||||
|
<title>host:docker->svc:portainer</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M52,-1004.1C52,-1098.49 52,-1530 52,-1530 52,-1530 166.78,-1530 166.78,-1530"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="166.78,-1533.5 176.78,-1530 166.78,-1526.5 166.78,-1533.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:prometheus -->
|
||||||
|
<g id="node25" class="node">
|
||||||
|
<title>svc:prometheus</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M233,-1616C233,-1616 182,-1616 182,-1616 176,-1616 170,-1610 170,-1604 170,-1604 170,-1592 170,-1592 170,-1586 176,-1580 182,-1580 182,-1580 233,-1580 233,-1580 239,-1580 245,-1586 245,-1592 245,-1592 245,-1604 245,-1604 245,-1610 239,-1616 233,-1616"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1595.5" font-family="Helvetica,sans-Serif" font-size="10.00">prometheus</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:prometheus -->
|
||||||
|
<g id="edge24" class="edge">
|
||||||
|
<title>host:docker->svc:prometheus</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M49,-1004.32C49,-1106.15 49,-1598 49,-1598 49,-1598 159.94,-1598 159.94,-1598"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="159.94,-1601.5 169.94,-1598 159.94,-1594.5 159.94,-1601.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:searxng-webapp -->
|
||||||
|
<g id="node26" class="node">
|
||||||
|
<title>svc:searxng-webapp</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M244.5,-1684C244.5,-1684 170.5,-1684 170.5,-1684 164.5,-1684 158.5,-1678 158.5,-1672 158.5,-1672 158.5,-1660 158.5,-1660 158.5,-1654 164.5,-1648 170.5,-1648 170.5,-1648 244.5,-1648 244.5,-1648 250.5,-1648 256.5,-1654 256.5,-1660 256.5,-1660 256.5,-1672 256.5,-1672 256.5,-1678 250.5,-1684 244.5,-1684"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1663.5" font-family="Helvetica,sans-Serif" font-size="10.00">searxng-webapp</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:searxng-webapp -->
|
||||||
|
<g id="edge25" class="edge">
|
||||||
|
<title>host:docker->svc:searxng-webapp</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M45,-1004.19C45,-1112.33 45,-1666 45,-1666 45,-1666 148.3,-1666 148.3,-1666"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="148.3,-1669.5 158.3,-1666 148.3,-1662.5 148.3,-1669.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:shift-recorder-web -->
|
||||||
|
<g id="node27" class="node">
|
||||||
|
<title>svc:shift-recorder-web</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M248.5,-1752C248.5,-1752 166.5,-1752 166.5,-1752 160.5,-1752 154.5,-1746 154.5,-1740 154.5,-1740 154.5,-1728 154.5,-1728 154.5,-1722 160.5,-1716 166.5,-1716 166.5,-1716 248.5,-1716 248.5,-1716 254.5,-1716 260.5,-1722 260.5,-1728 260.5,-1728 260.5,-1740 260.5,-1740 260.5,-1746 254.5,-1752 248.5,-1752"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1731.5" font-family="Helvetica,sans-Serif" font-size="10.00">shift-recorder-web</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:shift-recorder-web -->
|
||||||
|
<g id="edge26" class="edge">
|
||||||
|
<title>host:docker->svc:shift-recorder-web</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M41,-1004.12C41,-1118.35 41,-1734 41,-1734 41,-1734 144.36,-1734 144.36,-1734"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="144.36,-1737.5 154.36,-1734 144.36,-1730.5 144.36,-1737.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:stockfill -->
|
||||||
|
<g id="node28" class="node">
|
||||||
|
<title>svc:stockfill</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223,-1820C223,-1820 192,-1820 192,-1820 186,-1820 180,-1814 180,-1808 180,-1808 180,-1796 180,-1796 180,-1790 186,-1784 192,-1784 192,-1784 223,-1784 223,-1784 229,-1784 235,-1790 235,-1796 235,-1796 235,-1808 235,-1808 235,-1814 229,-1820 223,-1820"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1799.5" font-family="Helvetica,sans-Serif" font-size="10.00">stockfill</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:stockfill -->
|
||||||
|
<g id="edge27" class="edge">
|
||||||
|
<title>host:docker->svc:stockfill</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M37,-1004.19C37,-1124.59 37,-1802 37,-1802 37,-1802 169.73,-1802 169.73,-1802"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.73,-1805.5 179.73,-1802 169.73,-1798.5 169.73,-1805.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:telegraf -->
|
||||||
|
<g id="node29" class="node">
|
||||||
|
<title>svc:telegraf</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M223,-1888C223,-1888 192,-1888 192,-1888 186,-1888 180,-1882 180,-1876 180,-1876 180,-1864 180,-1864 180,-1858 186,-1852 192,-1852 192,-1852 223,-1852 223,-1852 229,-1852 235,-1858 235,-1864 235,-1864 235,-1876 235,-1876 235,-1882 229,-1888 223,-1888"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1867.5" font-family="Helvetica,sans-Serif" font-size="10.00">telegraf</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:telegraf -->
|
||||||
|
<g id="edge28" class="edge">
|
||||||
|
<title>host:docker->svc:telegraf</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M33,-1004.06C33,-1129.83 33,-1870 33,-1870 33,-1870 169.85,-1870 169.85,-1870"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="169.85,-1873.5 179.85,-1870 169.85,-1866.5 169.85,-1873.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- svc:traefik -->
|
||||||
|
<g id="node30" class="node">
|
||||||
|
<title>svc:traefik</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M222.5,-1956C222.5,-1956 192.5,-1956 192.5,-1956 186.5,-1956 180.5,-1950 180.5,-1944 180.5,-1944 180.5,-1932 180.5,-1932 180.5,-1926 186.5,-1920 192.5,-1920 192.5,-1920 222.5,-1920 222.5,-1920 228.5,-1920 234.5,-1926 234.5,-1932 234.5,-1932 234.5,-1944 234.5,-1944 234.5,-1950 228.5,-1956 222.5,-1956"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-1935.5" font-family="Helvetica,sans-Serif" font-size="10.00">traefik</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:docker->svc:traefik -->
|
||||||
|
<g id="edge29" class="edge">
|
||||||
|
<title>host:docker->svc:traefik</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M29,-1004.17C29,-1135.78 29,-1938 29,-1938 29,-1938 170.39,-1938 170.39,-1938"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="170.39,-1941.5 180.39,-1938 170.39,-1934.5 170.39,-1941.5"/>
|
||||||
|
</g>
|
||||||
|
<!-- host:raspberrypi -->
|
||||||
|
<g id="node31" class="node">
|
||||||
|
<title>host:raspberrypi</title>
|
||||||
|
<polygon fill="#d4e3ff" stroke="black" points="88,-2039 20,-2039 16,-2035 16,-2003 84,-2003 88,-2007 88,-2039"/>
|
||||||
|
<polyline fill="none" stroke="black" points="84,-2035 16,-2035 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="84,-2035 84,-2003 "/>
|
||||||
|
<polyline fill="none" stroke="black" points="84,-2035 88,-2039 "/>
|
||||||
|
<text text-anchor="middle" x="52" y="-2018.5" font-family="Helvetica,sans-Serif" font-size="10.00">raspberrypi</text>
|
||||||
|
</g>
|
||||||
|
<!-- svc:pihole-exporter -->
|
||||||
|
<g id="node32" class="node">
|
||||||
|
<title>svc:pihole-exporter</title>
|
||||||
|
<path fill="#dff2e1" stroke="black" d="M241.5,-2039C241.5,-2039 173.5,-2039 173.5,-2039 167.5,-2039 161.5,-2033 161.5,-2027 161.5,-2027 161.5,-2015 161.5,-2015 161.5,-2009 167.5,-2003 173.5,-2003 173.5,-2003 241.5,-2003 241.5,-2003 247.5,-2003 253.5,-2009 253.5,-2015 253.5,-2015 253.5,-2027 253.5,-2027 253.5,-2033 247.5,-2039 241.5,-2039"/>
|
||||||
|
<text text-anchor="middle" x="207.5" y="-2018.5" font-family="Helvetica,sans-Serif" font-size="10.00">pihole-exporter</text>
|
||||||
|
</g>
|
||||||
|
<!-- host:raspberrypi->svc:pihole-exporter -->
|
||||||
|
<g id="edge30" class="edge">
|
||||||
|
<title>host:raspberrypi->svc:pihole-exporter</title>
|
||||||
|
<path fill="none" stroke="#6b7280" stroke-dasharray="5,2" d="M88.07,-2021C88.07,-2021 151.29,-2021 151.29,-2021"/>
|
||||||
|
<polygon fill="#6b7280" stroke="#6b7280" points="151.29,-2024.5 161.29,-2021 151.29,-2017.5 151.29,-2024.5"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 29 KiB |
@@ -7,6 +7,7 @@ site_dir: site-public
|
|||||||
|
|
||||||
nav:
|
nav:
|
||||||
- Home: index.md
|
- Home: index.md
|
||||||
|
- Diagrams: diagrams.md
|
||||||
- Compose Inventory: compose-inventory.md
|
- Compose Inventory: compose-inventory.md
|
||||||
- Traefik Routes: traefik-routes.md
|
- Traefik Routes: traefik-routes.md
|
||||||
- Prometheus Rules: prometheus-rules.md
|
- Prometheus Rules: prometheus-rules.md
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ python3 scripts/docs/generate-compose-inventory.py docs/generated/docker-compose
|
|||||||
python3 scripts/docs/generate-traefik-routes.py docs/generated/docker-compose.resolved.yml docs/generated/traefik-routes.md
|
python3 scripts/docs/generate-traefik-routes.py docs/generated/docker-compose.resolved.yml docs/generated/traefik-routes.md
|
||||||
python3 scripts/docs/generate-prometheus-rules.py docs/generated/prometheus-rules.md
|
python3 scripts/docs/generate-prometheus-rules.py docs/generated/prometheus-rules.md
|
||||||
python3 scripts/docs/generate-docs-index.py docs/generated/index.md
|
python3 scripts/docs/generate-docs-index.py docs/generated/index.md
|
||||||
python3 scripts/docs/generate-diagrams.py docs/generated/docker-compose.resolved.yml docs/diagrams/docker-compose.dot docs/diagrams/docker-compose.svg
|
python3 scripts/docs/generate-diagrams.py --compose docs/generated/docker-compose.resolved.yml --out-dir docs/diagrams
|
||||||
python3 scripts/docs/sanitize-public-docs.py docs/generated docs/diagrams docs/public
|
python3 scripts/docs/sanitize-public-docs.py docs/generated docs/diagrams docs/public
|
||||||
|
|||||||
@@ -1,18 +1,231 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import sys,yaml,subprocess,shutil
|
import argparse
|
||||||
inp,dotf,svgf=sys.argv[1],sys.argv[2],sys.argv[3]
|
import re
|
||||||
with open(inp) as f:c=yaml.safe_load(f) or {}
|
import subprocess
|
||||||
svcs=c.get('services') or {}
|
import shutil
|
||||||
lines=["digraph Compose {"," rankdir=LR;"," node [fontname=Helvetica];"]
|
from pathlib import Path
|
||||||
for s in svcs: lines.append(f' "svc:{s}" [label="{s}", shape=box, style=filled, fillcolor="#dfefff"];')
|
import yaml
|
||||||
for n in (c.get('networks') or {}).keys(): lines.append(f' "net:{n}" [label="{n}", shape=ellipse, style=filled, fillcolor="#f4f4f4"];')
|
|
||||||
for s,sv in svcs.items():
|
INTERNAL_DOMAIN_RE = re.compile(r"\b[a-zA-Z0-9.-]+\.lan\.ddnsgeek\.com\b")
|
||||||
ns=sv.get('networks') or []
|
HOST_MATCH_RE = re.compile(r"Host\(([^)]*)\)")
|
||||||
if isinstance(ns,dict): ns=ns.keys()
|
TICKED_HOST_RE = re.compile(r"`([^`]+)`")
|
||||||
for n in ns: lines.append(f' "svc:{s}" -> "net:{n}";')
|
|
||||||
lines.append("}")
|
|
||||||
open(dotf,'w').write('\n'.join(lines)+'\n')
|
def require_dot() -> None:
|
||||||
if shutil.which('dot'):
|
if not shutil.which("dot"):
|
||||||
subprocess.run(['dot','-Tsvg',dotf,'-o',svgf],check=True)
|
raise SystemExit(
|
||||||
else:
|
"Graphviz 'dot' not found in environment. Install graphviz before running docs generation."
|
||||||
open(svgf,'w').write('<svg xmlns="http://www.w3.org/2000/svg" width="640" height="80"><text x="10" y="40">Graphviz dot not found in environment.</text></svg>\n')
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def load_compose(path: Path) -> dict:
|
||||||
|
with path.open() as handle:
|
||||||
|
return yaml.safe_load(handle) or {}
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_domain(value: str, known: dict[str, str]) -> str:
|
||||||
|
if value in known:
|
||||||
|
return known[value]
|
||||||
|
if INTERNAL_DOMAIN_RE.search(value):
|
||||||
|
mapped = f"service-{len(known)+1}.<internal-domain>"
|
||||||
|
known[value] = mapped
|
||||||
|
return mapped
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def parse_labels(service: dict) -> dict[str, str]:
|
||||||
|
labels = service.get("labels") or {}
|
||||||
|
if isinstance(labels, list):
|
||||||
|
mapped = {}
|
||||||
|
for item in labels:
|
||||||
|
if "=" in str(item):
|
||||||
|
k, v = str(item).split("=", 1)
|
||||||
|
mapped[k] = v
|
||||||
|
return mapped
|
||||||
|
if isinstance(labels, dict):
|
||||||
|
return {str(k): str(v) for k, v in labels.items()}
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def extract_hosts(rule: str) -> list[str]:
|
||||||
|
hosts: list[str] = []
|
||||||
|
for m in HOST_MATCH_RE.findall(rule or ""):
|
||||||
|
for host in TICKED_HOST_RE.findall(m):
|
||||||
|
hosts.append(host.strip())
|
||||||
|
return hosts
|
||||||
|
|
||||||
|
|
||||||
|
def render_svg(dot_path: Path, svg_path: Path) -> None:
|
||||||
|
subprocess.run(["dot", "-Tsvg", str(dot_path), "-o", str(svg_path)], check=True)
|
||||||
|
|
||||||
|
|
||||||
|
def write_dot(path: Path, lines: list[str]) -> None:
|
||||||
|
path.write_text("\n".join(lines) + "\n")
|
||||||
|
|
||||||
|
|
||||||
|
def infer_host(service_name: str, service: dict) -> str:
|
||||||
|
labels = parse_labels(service)
|
||||||
|
for key in ("com.docker.compose.project", "infra.host", "host"):
|
||||||
|
value = labels.get(key)
|
||||||
|
if value:
|
||||||
|
return value.lower()
|
||||||
|
s = service_name.lower()
|
||||||
|
if "raspi" in s or "pi" in s:
|
||||||
|
return "raspberrypi"
|
||||||
|
if "proxmox" in s:
|
||||||
|
return "proxmox"
|
||||||
|
return "docker"
|
||||||
|
|
||||||
|
|
||||||
|
def generate_physical_topology(compose: dict, out_dot: Path, out_svg: Path) -> None:
|
||||||
|
services = compose.get("services") or {}
|
||||||
|
hosts: dict[str, list[str]] = {}
|
||||||
|
for name, svc in services.items():
|
||||||
|
hosts.setdefault(infer_host(name, svc), []).append(name)
|
||||||
|
|
||||||
|
lines = [
|
||||||
|
"digraph PhysicalTopology {",
|
||||||
|
" graph [rankdir=LR, compound=true, splines=ortho, nodesep=0.45, ranksep=0.75, fontname=\"Helvetica\"];",
|
||||||
|
" node [fontname=\"Helvetica\", fontsize=10, style=\"rounded,filled\", fillcolor=\"#ffffff\"];",
|
||||||
|
" edge [fontname=\"Helvetica\", fontsize=9];",
|
||||||
|
]
|
||||||
|
|
||||||
|
for host, host_services in sorted(hosts.items()):
|
||||||
|
lines.extend(
|
||||||
|
[
|
||||||
|
f' subgraph "cluster_{host}" {{',
|
||||||
|
f' label="{host}";',
|
||||||
|
' style="rounded,filled";',
|
||||||
|
' color="#c7d6f5";',
|
||||||
|
' fillcolor="#eef3ff";',
|
||||||
|
f' "host:{host}" [label="{host}", shape=box3d, fillcolor="#d4e3ff"];',
|
||||||
|
]
|
||||||
|
)
|
||||||
|
for service in sorted(host_services):
|
||||||
|
lines.append(
|
||||||
|
f' "svc:{service}" [label="{service}", shape=box, fillcolor="#dff2e1"];'
|
||||||
|
)
|
||||||
|
lines.append(f' "host:{host}" -> "svc:{service}" [style=dashed, color="#6b7280"];')
|
||||||
|
lines.append(" }")
|
||||||
|
|
||||||
|
lines.append("}")
|
||||||
|
write_dot(out_dot, lines)
|
||||||
|
render_svg(out_dot, out_svg)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_docker_traefik_dynu(compose: dict, out_dot: Path, out_svg: Path) -> None:
|
||||||
|
services = compose.get("services") or {}
|
||||||
|
networks = compose.get("networks") or {}
|
||||||
|
known_domains: dict[str, str] = {}
|
||||||
|
|
||||||
|
lines = [
|
||||||
|
"digraph DockerTraefikDynu {",
|
||||||
|
" graph [rankdir=LR, compound=true, splines=true, 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"];',
|
||||||
|
]
|
||||||
|
|
||||||
|
for net in sorted(networks.keys()):
|
||||||
|
lines.append(f' "net:{net}" [label="{net}", shape=ellipse, fillcolor="#f3f4f6"];')
|
||||||
|
|
||||||
|
for svc_name, svc in sorted(services.items()):
|
||||||
|
lines.append(f' "svc:{svc_name}" [label="{svc_name}", shape=box, fillcolor="#dcfce7"];')
|
||||||
|
svc_nets = svc.get("networks") or []
|
||||||
|
if isinstance(svc_nets, dict):
|
||||||
|
svc_nets = svc_nets.keys()
|
||||||
|
for net in svc_nets:
|
||||||
|
lines.append(f' "svc:{svc_name}" -> "net:{net}" [color="#6b7280"];')
|
||||||
|
|
||||||
|
labels = parse_labels(svc)
|
||||||
|
router_prefix = "traefik.http.routers."
|
||||||
|
service_prefix = "traefik.http.services."
|
||||||
|
|
||||||
|
routers = sorted({k[len(router_prefix):].split(".", 1)[0] for k in labels if k.startswith(router_prefix)})
|
||||||
|
for router in routers:
|
||||||
|
rule = labels.get(f"{router_prefix}{router}.rule", "")
|
||||||
|
router_service = labels.get(f"{router_prefix}{router}.service", svc_name)
|
||||||
|
middlewares = labels.get(f"{router_prefix}{router}.middlewares", "")
|
||||||
|
entrypoints = labels.get(f"{router_prefix}{router}.entrypoints", "")
|
||||||
|
tls = labels.get(f"{router_prefix}{router}.tls", "false")
|
||||||
|
lines.append(f' "router:{router}" [label="router:{router}\\nentry:{entrypoints} tls:{tls}", shape=diamond, fillcolor="#fbcfe8"];')
|
||||||
|
lines.append(f' "svc:traefik" -> "router:{router}";')
|
||||||
|
target_node = f"traefik-service:{router_service}"
|
||||||
|
lines.append(f' "{target_node}" [label="service:{router_service}", shape=component, fillcolor="#fecaca"];')
|
||||||
|
lines.append(f' "router:{router}" -> "{target_node}";')
|
||||||
|
|
||||||
|
for host in extract_hosts(rule):
|
||||||
|
clean = sanitize_domain(host, known_domains)
|
||||||
|
lines.append(f' "dns:{clean}" [label="{clean}", shape=note, fillcolor="#fde68a"];')
|
||||||
|
lines.append(f' "ext:dynu" -> "dns:{clean}";')
|
||||||
|
lines.append(f' "dns:{clean}" -> "router:{router}";')
|
||||||
|
|
||||||
|
for middleware in [m.strip() for m in middlewares.split(",") if m.strip()]:
|
||||||
|
lines.append(f' "mw:{middleware}" [label="{middleware}", shape=hexagon, fillcolor="#ddd6fe"];')
|
||||||
|
lines.append(f' "router:{router}" -> "mw:{middleware}" [style=dashed];')
|
||||||
|
|
||||||
|
lb_services = sorted({k[len(service_prefix):].split(".", 1)[0] for k in labels if k.startswith(service_prefix)})
|
||||||
|
for lb in lb_services:
|
||||||
|
port = labels.get(f"{service_prefix}{lb}.loadbalancer.server.port", "")
|
||||||
|
lines.append(f' "traefik-service:{lb}" [label="service:{lb}\\nport:{port}", shape=component, fillcolor="#fecaca"];')
|
||||||
|
lines.append(f' "traefik-service:{lb}" -> "svc:{svc_name}";')
|
||||||
|
|
||||||
|
lines.append("}")
|
||||||
|
write_dot(out_dot, lines)
|
||||||
|
render_svg(out_dot, out_svg)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_compose_topology(compose: dict, out_dot: Path, out_svg: Path) -> None:
|
||||||
|
services = compose.get("services") or {}
|
||||||
|
networks = compose.get("networks") or {}
|
||||||
|
lines = [
|
||||||
|
"digraph Compose {",
|
||||||
|
" rankdir=LR;",
|
||||||
|
' node [fontname="Helvetica"];',
|
||||||
|
]
|
||||||
|
for service in sorted(services):
|
||||||
|
lines.append(f' "svc:{service}" [label="{service}", shape=box, style=filled, fillcolor="#dfefff"];')
|
||||||
|
for net in sorted(networks):
|
||||||
|
lines.append(f' "net:{net}" [label="{net}", shape=ellipse, style=filled, fillcolor="#f4f4f4"];')
|
||||||
|
|
||||||
|
for service, svc in sorted(services.items()):
|
||||||
|
svc_nets = svc.get("networks") or []
|
||||||
|
if isinstance(svc_nets, dict):
|
||||||
|
svc_nets = svc_nets.keys()
|
||||||
|
for net in svc_nets:
|
||||||
|
lines.append(f' "svc:{service}" -> "net:{net}";')
|
||||||
|
|
||||||
|
lines.append("}")
|
||||||
|
write_dot(out_dot, lines)
|
||||||
|
render_svg(out_dot, out_svg)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("legacy", nargs="*")
|
||||||
|
parser.add_argument("--compose")
|
||||||
|
parser.add_argument("--out-dir")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
require_dot()
|
||||||
|
|
||||||
|
if args.compose and args.out_dir:
|
||||||
|
compose_path = Path(args.compose)
|
||||||
|
out_dir = Path(args.out_dir)
|
||||||
|
elif len(args.legacy) == 3:
|
||||||
|
compose_path = Path(args.legacy[0])
|
||||||
|
out_dir = Path(args.legacy[1]).parent
|
||||||
|
else:
|
||||||
|
raise SystemExit("Usage: generate-diagrams.py --compose <compose.yml> --out-dir <dir>")
|
||||||
|
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
compose = load_compose(compose_path)
|
||||||
|
|
||||||
|
generate_docker_traefik_dynu(compose, out_dir / "docker-traefik-dynu.dot", out_dir / "docker-traefik-dynu.svg")
|
||||||
|
generate_physical_topology(compose, out_dir / "physical-topology.dot", out_dir / "physical-topology.svg")
|
||||||
|
generate_compose_topology(compose, out_dir / "docker-compose.dot", out_dir / "docker-compose.svg")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|||||||
@@ -20,27 +20,50 @@ def sanitize_text(content: str) -> str:
|
|||||||
content = re.sub(r'(?m)^([A-Z0-9_]*(?:PASSWORD|TOKEN|API_KEY|SECRET)[A-Z0-9_]*)\s*[:=]\s*.*$', r'\1=<redacted>', content)
|
content = re.sub(r'(?m)^([A-Z0-9_]*(?:PASSWORD|TOKEN|API_KEY|SECRET)[A-Z0-9_]*)\s*[:=]\s*.*$', r'\1=<redacted>', content)
|
||||||
return content
|
return content
|
||||||
|
|
||||||
|
|
||||||
for name in ['compose-inventory.md', 'traefik-routes.md', 'prometheus-rules.md']:
|
for name in ['compose-inventory.md', 'traefik-routes.md', 'prometheus-rules.md']:
|
||||||
src = src_generated / name
|
src = src_generated / name
|
||||||
if src.exists():
|
if src.exists():
|
||||||
(out_dir / name).write_text(sanitize_text(src.read_text(errors='ignore')))
|
(out_dir / name).write_text(sanitize_text(src.read_text(errors='ignore')))
|
||||||
|
|
||||||
svg_src = src_diagrams / 'docker-compose.svg'
|
for svg_name in ['docker-compose.svg', 'physical-topology.svg', 'docker-traefik-dynu.svg']:
|
||||||
if svg_src.exists():
|
src = src_diagrams / svg_name
|
||||||
(out_dir / 'docker-compose.svg').write_text(sanitize_text(svg_src.read_text(errors='ignore')))
|
if src.exists():
|
||||||
|
(out_dir / svg_name).write_text(sanitize_text(src.read_text(errors='ignore')))
|
||||||
|
|
||||||
(out_dir / 'index.md').write_text(
|
(out_dir / 'index.md').write_text(
|
||||||
"""# Public Infrastructure Summary
|
"""# Public Infrastructure Summary
|
||||||
|
|
||||||
This folder contains sanitized documentation generated from the infrastructure repository.
|
This documentation is generated from the infrastructure repository. Sensitive values are redacted.
|
||||||
|
|
||||||
Sensitive values such as internal domain names, private IP addresses, tokens, passwords, and secrets are redacted.
|
## Infrastructure diagrams
|
||||||
|
|
||||||
|
### Physical / virtual topology
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Docker, Traefik and Dynu routing
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Documents
|
## Documents
|
||||||
|
|
||||||
|
- [Diagrams](diagrams.md)
|
||||||
- [Compose Inventory](compose-inventory.md)
|
- [Compose Inventory](compose-inventory.md)
|
||||||
- [Traefik Routes](traefik-routes.md)
|
- [Traefik Routes](traefik-routes.md)
|
||||||
- [Prometheus Rules](prometheus-rules.md)
|
- [Prometheus Rules](prometheus-rules.md)
|
||||||
- [Docker Compose Diagram](docker-compose.svg)
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
(out_dir / 'diagrams.md').write_text(
|
||||||
|
"""# Infrastructure diagrams
|
||||||
|
|
||||||
|
## Physical / virtual topology
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Docker, Traefik and Dynu routing
|
||||||
|
|
||||||
|

|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|||||||