// the network https://graphviz.org/docs/attrs/href/ digraph saffron { compound = true; rankdir = LR; rank = same; nodesep = 0.2; ranksep = 1.5; node [fontname = "helvetica"; shape = box; style = filled; width = "2"; fillcolor = white; target = "saffron";]; edge [fontname = "Arial";]; ratio = "0.8"; size = "100%"; subgraph cluster_x { label = "The Internet "; fontsize = "30"; 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";]; a3 [label = "git";href = "https://git.quodatum.duckdns.org";tooltip = "Forgejo";]; a4 [label = "vscode";href = "https://vscode.quodatum.duckdns.org";tooltip = "VScode";]; } 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";]; href = "https://tvheadend.orlop.duckdns.org"; b4 [label = "emby";href = "https://emby.orlop.duckdns.org";tooltip = "Emby";]; b5 [label = "jellyfin";href = "https://jellyfin.orlop.duckdns.org";tooltip = "Jellyfin";]; } vpn [shape = circle;width = "0.75";]; } subgraph cluster_s { label = "Server Boxes"; fontsize = "30"; subgraph cluster_c { label = "xu4"; 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";]; } subgraph cluster_d { label = "fins"; bgcolor = "#FFDEAD"; d2 [label = "olama:11434";href = "http://fins.local:11434/";tooltip = "Ollama (AI)";]; d4 [label = "openwebui:3001";href = "http://fins.local:3001/";tooltip = "Open WebUI";]; d6 [label = "shotcut::3100";href = "http://fins.local:3100/";tooltip = "Vidio editor";]; } 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";]; } subgraph cluster_f { label = "odroid-n2"; bgcolor = "#FFDEAD"; f1 [label = "kodi:8080";href = "http://odroid-n2:8080";tooltip = "kodi";]; subgraph cluster_x { label="Manage"; labeljust=l; fontsize=14; rankdir = LR; rank="max"; ranksep=0.3; bgcolor=yellow ; x1 [label = "p";shape = "oval";href = "https://odroid-n2:9443";tooltip = "portainer";]; x2 [label = "n";shape = "oval";href = "http://odroid-n2:19999";tooltip = "netdata";]; x1->x2 } } subgraph cluster_g { label = "n2-plus"; bgcolor = "#FFDEAD"; g1 [label = "tvheadend:9981";href = "http://n2-plus:9981";tooltip = "tvheadend";]; g2 [label = "portainer:9443";href = "https://n2-plus:9443";tooltip = "portainer";]; g3 [label = "netdata:19999";href = "http://n2-plus:19999";tooltip = "netdata";]; } } a2 -> c0; b1 -> c0; a1 -> c2; a3 -> e1; b2 -> f1; b3 -> g1; b4 -> e3; b5 -> e2; vpn -> c4; c0 -> d2 [ltail = "cluster_c"; lhead = "cluster_d"; style = "dotted";]; c0 -> f1 [ltail = "cluster_c"; lhead = "cluster_f"; style = "dotted";]; c0 -> e1 [ltail = "cluster_c"; lhead = "cluster_e"; style = "dotted";]; c0 -> g1 [ltail = "cluster_c"; lhead = "cluster_g"; style = "dotted";]; }