// the network https://graphviz.org/docs/attrs/href/ digraph saffron { compound = true; rankdir = LR; fontname="Arial"; bgcolor=lightgrey; node [fontname = "Arial"; shape = box; style = filled; width = "2"; fillcolor = white; target = "saffron";]; edge [fontname = "Arial";]; ratio = "0.6"; size = "100"; subgraph cluster_x { label = "The Internet "; fontsize = "40"; node[fontsize=36;] bgcolor=white; subgraph cluster_a { label = "quodatum.duckdns.org"; bgcolor = "#BDFFA4"; a1 [label = "wiki";href = "https://wiki.quodatum.duckdns.org";tooltip = "Tiddly wiki";]; a2 [label = "about";href = "https://about.quodatum.duckdns.org";tooltip = "about";]; a5 [label = "oi";href = "https://oi.quodatum.duckdns.org";tooltip = "openwebUI";]; a3 [label = "git";href = "https://git.quodatum.duckdns.org";tooltip = "Forgejo";]; } subgraph cluster_b { bgcolor = "#BDFFA4"; label = "orlop.duckdns.org"; b1 [label = "about";href = "https://about.orlop.duckdns.org";tooltip = "about";]; b2 [label = "kodi";href = "https://kodi.orlop.duckdns.org";tooltip = "Kodi";]; b3 [label = "tvheadend";href = "https://tvheadend.orlop.duckdns.org";tooltip = "TV headend";]; b4 [label = "emby";href = "https://emby.orlop.duckdns.org";tooltip = "Emby";]; b5 [label = "jellyfin";href = "https://jellyfin.orlop.duckdns.org";tooltip = "Jellyfin";]; b6 [label = "Immich";href = "https://immich.orlop.duckdns.org";tooltip = "Immich";]; } vpn [shape = circle;width = "0.75";fillcolor="lightblue"]; } subgraph cluster_s { label = "Saffron @ 80.229.26.80"; fontsize = "30"; bgcolor=white; subgraph cluster_c { label = "xu4"; href="http://fins.local:8090/system/xu4"; tooltip="XU4 on beszel"; bgcolor = "#FFDEAD"; c0 [label = "caddy";]; c1 [label = "basex-test:9090";href = "http://odroid.local:9090";tooltip = "Basex 10.7";]; c2 [label = "tiddy-wiki:8088";href = "http://odroid.local:8088";tooltip = "Tiddly wiki";]; c5 [label = "wireshark:4000";href = "http://odroid.local:4000";tooltip = "Wire shark";]; c4 [label = "wireguard:51820";tooltip = "VPN service";]; c6 [label = "redis-test:6379";tooltip = "Redis API";]; c7 [label = "pihole";href = "http://192.168.1.59";tooltip = "PiHole Ad blocker";]; {rank=max; xu4_1 [label = "p";shape = "doubleoctagon"; width=1; href = "https://xu4.local:9443";tooltip = "portainer"; fillcolor=yellow ;]; xu4_2 [label = "b";shape = "doubleoctagon"; width=1; href = "http://fins.local:8090/system/xu4";tooltip = "beszel"; fillcolor=yellow ;]; } xu4_1 -> c1[style=invis]; xu4_2 -> c1[style=invis]; } subgraph cluster_d { label = "fins"; bgcolor = "#FFDEAD"; d1 [label = "ollama:11434";href = "http://fins.local:11434/";tooltip = "Ollama (AI)";]; d2 [label = "openwebui:3001";href = "http://fins.local:3001/";tooltip = "Open WebUI";]; d3 [label = "basex:8888";href = "http://fins.local:8888/";tooltip = "BaseX 10.7";]; d4 [label = "basex:8884";href = "http://fins.local:8884/";tooltip = "BaseX 11.3 Fusion auth";]; d5 [label = "beszel::8090";href = "http://fins.local:8090/";tooltip = "beszel (main)";]; d6 [label = "shotcut::3100";href = "http://fins.local:3100/";tooltip = "Video editor";]; d7 [label = "fusionauth:9011";href = "http://fins.local:9011/";tooltip = "Fusion auth";]; {rank=max; fins_1 [label = "p";shape = "doubleoctagon"; width=1; href = "https://fins.local:9443";tooltip = "portainer"; fillcolor=yellow ;]; fins_2 [label = "b";shape = "doubleoctagon"; width=1; href = "http://fins.local:8090/system/fins";tooltip = "beszel"; fillcolor=yellow ;]; } fins_1 -> d1[style=invis]; fins_2 -> d1[style=invis]; } subgraph cluster_e { label = "omv"; bgcolor = "#FFDEAD"; e1 [label = "forgejo:8300";href = "http://omv.local:8300";tooltip = "tvheadend";]; e2 [label = "jellyfin:8096";href = "http://omv.local:8096";tooltip = "jellyfin";]; e3 [label = "emby:8097";href = "http://omv.local:8097";tooltip = "Emby";]; e4 [label = "omv:81";href = "http://omv.local:81";tooltip = "Open media vault";]; e5 [label = "vikunja:3456";href = "http://omv.local:3456/";tooltip = "Vikunja";]; e6 [label = "dockge:5001";href = "http://omv.local:5001/";tooltip = "dockge";]; e7 [label = "immich:2283";href = "http://omv.local:2283/";tooltip = "Photos";]; {rank=max; omv_1 [label = "p";shape = "doubleoctagon"; width=1; href = "https://omv.local:9443";tooltip = "portainer"; fillcolor=yellow ;]; omv_2 [label = "b";shape = "doubleoctagon"; width=1; href = "http://fins.local:8090/system/omv";tooltip = "beszel"; fillcolor=yellow ;]; } omv_1 -> e1[style=invis]; omv_2 -> e1[style=invis]; } subgraph cluster_f { label = "odroid-n2"; rankdir="TB" bgcolor = "#FFDEAD"; f1 [label = "kodi:8080";href = "http://odroid-n2:8080";tooltip = "kodi";]; f2 [label = "beszel-agent";href = "http://fins.local:8090/system/fins";tooltip = "Beszel agent";]; {rank=max; odroid_n2_1 [label = "p";shape = "doubleoctagon"; width=1; href = "https://odroid-n2:9443";tooltip = "portainer"; fillcolor=yellow ;]; odroid_n2_2 [label = "b";shape = "doubleoctagon"; width=1; href = "http://fins.local:8090/system/kodi";tooltip = "beszel"; fillcolor=yellow ;]; } odroid_n2_1 -> f1[style=invis]; odroid_n2_2 -> f1[style=invis]; }; subgraph cluster_g { label = "n2-plus"; bgcolor = "#FFDEAD"; g1 [label = "tvheadend:9981";href = "http://n2-plus.local:9981";tooltip = "tvheadend";]; g2 [label = "glance:3050";href = "http://n2-plus.local:3050";tooltip = "glance";]; g3 [label = "spare";href = "http://n2-plus.local:19999";tooltip = "netdata";]; g4 [label = "ntopng:3000";href = "http://n2-plus.local:3000";tooltip = "ntop ng";]; {rank=max; n2_plus_1 [label = "p";shape = "doubleoctagon"; width=1; href = "https://n2-plus.local:9443";tooltip = "portainer"; fillcolor=yellow ;]; n2_plus_2 [label = "b";shape = "doubleoctagon"; width=1; href = "http://fins.local:8090/system/n2-plus";tooltip = "beszel"; fillcolor=yellow ;]; } n2_plus_1 -> g1[style=invis]; n2_plus_2 -> g1[style=invis]; } } a2 -> c0; b1 -> c0; a1 -> c2; a3 -> e1; a5 -> d2; b2 -> f1; b3 -> g1; b4 -> e3; b5 -> e2; b6 -> e7; vpn -> c4; c0 -> d2 [style=invis;]; c0 -> f1 [style=invis;]; c0 -> e1 [style=invis;]; c0 -> g1 [style=invis;]; f2 -> d5; }