From 4cd8caa27e263a3e7afdb87c8eedf6cf0a356176 Mon Sep 17 00:00:00 2001 From: XTRM-Unraid Date: Thu, 22 Jan 2026 14:28:26 +0200 Subject: [PATCH] Update infrastructure diagram with Mermaid diagrams --- docs/INFRASTRUCTURE-DIAGRAM.md | 547 +++++++++++++++++---------------- 1 file changed, 290 insertions(+), 257 deletions(-) diff --git a/docs/INFRASTRUCTURE-DIAGRAM.md b/docs/INFRASTRUCTURE-DIAGRAM.md index 1f1937c..c3d3aa7 100644 --- a/docs/INFRASTRUCTURE-DIAGRAM.md +++ b/docs/INFRASTRUCTURE-DIAGRAM.md @@ -8,245 +8,295 @@ ## Network Topology Overview -``` -┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -│ INTERNET │ -│ WAN: 62.73.120.142 │ -└────────────────────────────────────────────────┬────────────────────────────────────────────────────────────┘ - │ - ┌──────────────────────┴──────────────────────┐ - │ MikroTik hAP ax³ Router │ - │ 192.168.31.1 │ - │ RouterOS 7.20.6 │ - │ │ - │ ┌────────────────────────────────────────┐ │ - │ │ Docker Containers (172.17.0.x) │ │ - │ │ ┌─────────────┐ ┌─────────────────┐ │ │ - │ │ │ AdGuard Home│ │ Tailscale │ │ │ - │ │ │ 172.17.0.5 │ │ 172.17.0.4 │ │ │ - │ │ │ DNS/DoH/DoT │ │ VPN Client │ │ │ - │ │ └─────────────┘ └─────────────────┘ │ │ - │ └────────────────────────────────────────┘ │ - │ │ - │ Interfaces: │ - │ • ether1 (WAN) - 62.73.120.142/23 │ - │ • bridge (LAN) - 192.168.31.1/24 │ - │ • docker-bridge - 172.17.0.1/24 │ - │ • back-to-home-vpn - 192.168.216.1/24 │ - └──────────────────────────┬───────────────────┘ - │ - ┌─────────────────────────────────────┼─────────────────────────────────────┐ - │ │ │ - ▼ ▼ ▼ -┌──────────────────────────┐ ┌──────────────────────────────────────────────────────────────────┐ -│ MikroTik CSS326 Switch │ │ Unraid Server │ -│ 192.168.31.9 │ │ 192.168.31.2 │ -│ 24x Gigabit + 2x SFP │ │ Tailscale: 100.100.208.70 │ -│ SwOS │ │ SSH Port: 422 │ -└──────────────────────────┘ └──────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────┐ -│ MikroTik cAP ac │ -│ 192.168.31.6 │ -│ CAPsMAN Access Point │ -│ RouterOS 7.20.1 │ -└──────────────────────────┘ +```mermaid +graph TB + subgraph Internet + WAN[/"🌐 Internet
WAN: 62.73.120.142"/] + end + + subgraph Router["MikroTik hAP ax³ (192.168.31.1)"] + direction TB + subgraph RouterContainers["Docker Containers"] + AGH["🛡️ AdGuard Home
172.17.0.5
DNS/DoH/DoT/DoQ"] + TS["🔗 Tailscale
172.17.0.4"] + end + end + + subgraph LAN["LAN Network (192.168.31.0/24)"] + Switch["🔌 CSS326 Switch
192.168.31.9"] + AP["📶 cAP ac
192.168.31.6"] + Unraid["🖥️ Unraid Server
192.168.31.2"] + end + + WAN --> Router + Router --> Switch + Switch --> AP + Switch --> Unraid ``` --- -## Port Forwarding / NAT Rules (WAN → LAN) +## Port Forwarding / NAT Rules -``` -┌─────────────────────────────────────────────────────────────────────────────────────────┐ -│ INTERNET (62.73.120.142) │ -└────────┬──────────┬──────────┬──────────┬──────────┬──────────┬──────────┬─────────────┘ - │ │ │ │ │ │ │ - │:80 │:443 │:853 │:8853 │:32400 │:51413 │:21115-21119 - │ │ │ │ │ │ │ - ▼ ▼ ▼ ▼ ▼ ▼ ▼ -┌─────────────┐ ┌─────────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────┐ -│ Traefik │ │ Traefik │ │ AdGuard Home │ │ AdGuard Home │ │ Plex │ -│192.168.31.2 │ │192.168.31.2 │ │ 172.17.0.5 │ │ 172.17.0.5 │ │192.168.31.2 │ -│ :8001 │ │ :44301 │ │ :853 │ │ :8853 │ │ :32400 │ -│ (HTTP) │ │ (HTTPS) │ │ (DoT) │ │ (DoQ) │ │ (Media) │ -└─────────────┘ └─────────────┘ └───────────────┘ └───────────────┘ └─────────────┘ +```mermaid +flowchart LR + subgraph WAN["Internet (62.73.120.142)"] + P80[":80"] + P443[":443"] + P853[":853"] + P8853[":8853"] + P32400[":32400"] + P51413[":51413"] + P21115[":21115-21119"] + end -┌─────────────────────────────────────────────────────────────────────────────────────────┐ -│ Transmission │ RustDesk Server │ DNS Redirect (LAN) │ -│ 192.168.31.2 │ 192.168.31.2 │ 53 → 172.17.0.5:5355 │ -│ :51413 │ :21115-21119 │ (Force to AdGuard) │ -│ (BitTorrent) │ (Remote Desktop) │ │ -└─────────────────────────────────────────────────────────────────────────────────────────┘ + subgraph Destinations + Traefik80["Traefik
192.168.31.2:8001"] + Traefik443["Traefik
192.168.31.2:44301"] + DoT["AdGuard DoT
172.17.0.5:853"] + DoQ["AdGuard DoQ
172.17.0.5:8853"] + Plex["Plex
192.168.31.2:32400"] + Transmission["Transmission
192.168.31.2:51413"] + RustDesk["RustDesk
192.168.31.2"] + end + + P80 --> Traefik80 + P443 --> Traefik443 + P853 --> DoT + P8853 --> DoQ + P32400 --> Plex + P51413 --> Transmission + P21115 --> RustDesk ``` --- -## Unraid Docker Services Map +## Unraid Docker Services +### Core Infrastructure & Security + +```mermaid +flowchart TB + subgraph Core["Core Infrastructure"] + dockersocket["🔌 dockersocket
172.18.0.2:2375"] + traefik["🔀 traefik
172.18.0.3
:8001→80, :44301→443"] + homarr["🏠 homarr
172.18.0.4
xtrm-lab.org"] + end + + subgraph Security["Security & Identity"] + authentik["🔐 authentik
172.18.0.11
auth.xtrm-lab.org"] + authentik_worker["⚙️ authentik-worker
172.18.0.12"] + vaultwarden["🔑 vaultwarden
172.18.0.15
vault.xtrm-lab.org"] + end + + subgraph Databases["Databases"] + postgresql["🐘 postgresql17
172.18.0.13:5432"] + redis["📦 Redis
172.18.0.14:6379"] + end + + traefik --> dockersocket + authentik --> postgresql + authentik --> redis + authentik_worker --> authentik ``` -┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -│ UNRAID SERVER (192.168.31.2) │ -├─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ -│ │ -│ ┌─── dockerproxy Network (172.18.0.0/16) ──────────────────────────────────────────────────────────────┐ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ CORE INFRASTRUCTURE │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ dockersocket │ │ traefik │ │ homarr │ │ │ │ -│ │ │ │ 172.18.0.2 │ │ 172.18.0.3 │ │ 172.18.0.4 │ │ │ │ -│ │ │ │ :2375 │ │ :8001→80 │ │ :10004→7575 │ │ │ │ -│ │ │ │ Socket Proxy │ │ :44301→443 │ │ Dashboard │ │ │ │ -│ │ │ │ │ │ :8183→8080 │ │ xtrm-lab.org │ │ │ │ -│ │ │ │ │ │ traefik.xtrm- │ │ │ │ │ │ -│ │ │ │ │ │ lab.org │ │ │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ SECURITY │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ authentik │ │ authentik-worker│ │ vaultwarden │ │ │ │ -│ │ │ │ 172.18.0.11 │ │ 172.18.0.12 │ │ 172.18.0.15 │ │ │ │ -│ │ │ │ :9000, :9443 │ │ (Worker) │ │ :4743→80 │ │ │ │ -│ │ │ │ auth.xtrm- │ │ │ │ vault.xtrm- │ │ │ │ -│ │ │ │ lab.org │ │ │ │ lab.org │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ DATABASES │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ postgresql17 │ │ Redis │ │ │ │ -│ │ │ │ 172.18.0.13 │ │ 172.18.0.14 │ │ │ │ -│ │ │ │ :5432 │ │ :6379→6379 │ │ │ │ -│ │ │ │ PostgreSQL │ │ Key-Value │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ DEVOPS │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ gitea │ │woodpecker-server│ │ woodpecker-agent│ │ │ │ -│ │ │ │ 172.18.0.31 │ │ 172.18.0.32 │ │ 172.18.0.33 │ │ │ │ -│ │ │ │ :2222→22 │ │ :80, :443 │ │ :3000 │ │ │ │ -│ │ │ │ :3005→3000 │ │ :8000, :9000 │ │ CI/CD Agent │ │ │ │ -│ │ │ │ git.xtrm-lab.org│ │ ci.xtrm-lab.org │ │ │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ MONITORING │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ UptimeKuma │ │ Uptime-Kuma-API│ │ AutoKuma │ │speedtest-tracker│ │ │ │ -│ │ │ │ 172.18.0.20 │ │ 172.18.0.18 │ │ 172.18.0.19 │ │ 172.18.0.21 │ │ │ │ -│ │ │ │ :3001→3001 │ │ :8000→8000 │ │ (Auto Mgmt) │ │ :1180→80 │ │ │ │ -│ │ │ │ uptime.xtrm- │ │ │ │ │ │ speedtest.xtrm- │ │ │ │ -│ │ │ │ lab.org │ │ │ │ │ │ lab.org │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ PRODUCTIVITY │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ actual-budget │ │ n8n │ │ karakeep │ │ Nextcloud │ │ │ │ -│ │ │ │ 172.18.0.16 │ │ 172.18.0.17 │ │ 172.18.0.25 │ │ 172.18.0.24 │ │ │ │ -│ │ │ │ :5006→5006 │ │ :5678 │ │ :3000 │ │ :8666→80 │ │ │ │ -│ │ │ │ actual.xtrm- │ │ n8n.xtrm- │ │ karakeep.xtrm- │ │ nextcloud.xtrm- │ │ │ │ -│ │ │ │ lab.org │ │ lab.org │ │ lab.org │ │ lab.org │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ -│ │ │ NETWORK MANAGEMENT │ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ netdisco-web │ │ netdisco-backend│ │ pangolin │ │ │ │ -│ │ │ │ 172.18.0.41 │ │ 172.18.0.42 │ │ 172.18.0.51 │ │ │ │ -│ │ │ │ :5000 │ │ (Backend) │ │ :3003→3001 │ │ │ │ -│ │ │ │ netdisco.xtrm- │ │ │ │ :3004→3002 │ │ │ │ -│ │ │ │ lab.org │ │ │ │ Tunnel Mgmt │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ │ │ │ -│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ -│ │ -│ ┌─── netbox Network (172.24.0.0/16) ───────────────────────────────────────────────────────────────────┐ │ -│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │ │ -│ │ │ netbox │ │ netbox-worker │ │ netbox-postgres │ │ netbox-redis │ │netbox-redis-│ │ │ -│ │ │ 172.24.0.5 │ │ 172.24.0.6 │ │ 172.24.0.4 │ │ 172.24.0.2 │ │ cache │ │ │ -│ │ │ :8090→8080 │ │ (Worker) │ │ :5432 │ │ :6379 │ │ 172.24.0.3 │ │ │ -│ │ │ netbox.xtrm- │ │ │ │ PostgreSQL │ │ Redis │ │ :6379 │ │ │ -│ │ │ lab.org │ │ │ │ │ │ │ │ │ │ │ -│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────┘ │ │ -│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ -│ │ -│ ┌─── slurpit Network ──────────────────────────────────────────────────────────────────────────────────┐ │ -│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ -│ │ │ slurpit-portal │ │ slurpit-scanner │ │ slurpit-scraper │ │slurpit-warehouse│ │ │ -│ │ │ (dockerproxy) │ │ │ │ │ │ │ │ │ -│ │ │ :80, :3306 │ │ (Discovery) │ │ (Scraping) │ │ (Storage) │ │ │ -│ │ │ slurpit.xtrm- │ │ │ │ │ │ │ │ │ -│ │ │ lab.org │ │ │ │ │ │ │ │ │ -│ │ ├─────────────────┴──┴─────────────────┴──┴─────────────────┴──┴─────────────────┤ │ │ -│ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ -│ │ │ │ slurpit-mariadb │ │ slurpit-mongodb │ │ │ │ -│ │ │ │ :3306 │ │ :27017 │ │ │ │ -│ │ │ │ MariaDB │ │ MongoDB │ │ │ │ -│ │ │ └─────────────────┘ └─────────────────┘ │ │ │ -│ │ └────────────────────────────────────────────────────────────────────────────────┘ │ │ -│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ -│ │ -│ ┌─── br0 macvlan Network (192.168.31.0/24) ────────────────────────────────────────────────────────────┐ │ -│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ -│ │ │binhex-pihole │ │ unbound │ │ TimeMachine │ │ │ -│ │ │ 192.168.31.4 │ │ 192.168.31.5 │ │ 192.168.31.12 │ │ │ -│ │ │ Secondary DNS │ │ Recursive DNS │ │ SMB/AFP │ │ │ -│ │ │ ph1.xtrm-lab.org│ │ │ │ Time Machine │ │ │ -│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ -│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ -│ │ -│ ┌─── Host Network ─────────────────────────────────────────────────────────────────────────────────────┐ │ -│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ -│ │ │ plex │ │ NetAlertX │ │ unimus │ │HomeAssistant │ │ │ -│ │ │ :32400 (Media) │ │ (Network Mon) │ │ unimus.xtrm- │ │ha.xtrm-lab.org │ │ │ -│ │ │ plex.xtrm- │ │ netalert.xtrm- │ │ lab.org │ │ │ │ │ -│ │ │ lab.org │ │ lab.org │ │ Config Backup │ │ Home Automation │ │ │ -│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ -│ │ ┌─────────────────┐ │ │ -│ │ │ UrBackup │ │ │ -│ │ │ urbackup.xtrm- │ │ │ -│ │ │ lab.org │ │ │ -│ │ │ Server Backup │ │ │ -│ │ └─────────────────┘ │ │ -│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ -│ │ -│ ┌─── Bridge Network ───────────────────────────────────────────────────────────────────────────────────┐ │ -│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ -│ │ │ rustdesk-hbbs │ │ rustdesk-hbbr │ │ portainer │ │ transmission │ │ │ -│ │ │ :21115-21119 │ │ (Relay) │ │ :9002 │ │ :9091→9091 │ │ │ -│ │ │ rustdesk.xtrm- │ │ │ │ Container │ │ :51413→51413 │ │ │ -│ │ │ lab.org │ │ │ │ Management │ │ BitTorrent │ │ │ -│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ -│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ -│ │ │ Libation │ │ stunnel-dot │ │ DoH-Server │ │ │ -│ │ │ 172.18.0.23 │ │ │ │ 172.18.0.22 │ │ │ -│ │ │ Audiobooks │ │ DoT Stunnel │ │ doh.xtrm-lab.org│ │ │ -│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ -│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ -│ │ -└──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ + +### DevOps & CI/CD + +```mermaid +flowchart TB + subgraph DevOps["DevOps Stack"] + gitea["📚 gitea
172.18.0.31
git.xtrm-lab.org
:2222→22, :3005→3000"] + woodpecker_server["🪵 woodpecker-server
172.18.0.32
ci.xtrm-lab.org"] + woodpecker_agent["🤖 woodpecker-agent
172.18.0.33"] + end + + gitea --> woodpecker_server + woodpecker_server --> woodpecker_agent +``` + +### DNS Infrastructure + +```mermaid +flowchart TB + subgraph RouterDNS["MikroTik Router DNS"] + adguard["🛡️ AdGuard Home
172.17.0.5
PRIMARY
DoH/DoT/DoQ"] + end + + subgraph UnraidDNS["Unraid DNS (Secondary)"] + pihole["🕳️ Pi-hole
192.168.31.4
ph1.xtrm-lab.org"] + unbound["🔄 Unbound
192.168.31.5
Recursive DNS"] + doh_server["🌐 DoH-Server
172.18.0.22"] + end + + adguard -->|Fallback| pihole + pihole --> unbound +``` + +### Network Management + +```mermaid +flowchart TB + subgraph NetMgmt["Network Management"] + netbox["📋 NetBox
172.24.0.5
netbox.xtrm-lab.org"] + netdisco["🔍 NetDisco
172.18.0.41
netdisco.xtrm-lab.org"] + unimus["💾 Unimus
unimus.xtrm-lab.org
Config Backup"] + slurpit["🔎 Slurp'it
slurpit.xtrm-lab.org
Network Discovery"] + end + + subgraph NetBoxStack["NetBox Stack"] + nb_postgres["🐘 netbox-postgres
172.24.0.4"] + nb_redis["📦 netbox-redis
172.24.0.2"] + nb_worker["⚙️ netbox-worker
172.24.0.6"] + end + + netbox --> nb_postgres + netbox --> nb_redis + nb_worker --> netbox +``` + +### Monitoring + +```mermaid +flowchart TB + subgraph Monitoring["Monitoring Stack"] + uptime["📊 Uptime Kuma
172.18.0.20
uptime.xtrm-lab.org"] + uptime_api["🔌 Uptime-Kuma-API
172.18.0.18"] + autokuma["🤖 AutoKuma
172.18.0.19"] + netalert["🚨 NetAlertX
netalert.xtrm-lab.org"] + speedtest["📈 Speedtest
172.18.0.21
speedtest.xtrm-lab.org"] + end + + autokuma --> uptime + uptime_api --> uptime +``` + +### Media & Storage + +```mermaid +flowchart TB + subgraph Media["Media & Storage"] + plex["🎬 Plex
:32400
plex.xtrm-lab.org"] + nextcloud["☁️ Nextcloud
172.18.0.24
nextcloud.xtrm-lab.org"] + transmission["📥 Transmission
:9091, :51413"] + timemachine["🕐 TimeMachine
192.168.31.12"] + libation["📚 Libation
172.18.0.23
Audiobooks"] + end +``` + +### Productivity + +```mermaid +flowchart TB + subgraph Productivity["Productivity Apps"] + actual["💰 Actual Budget
172.18.0.16
actual.xtrm-lab.org"] + n8n["⚡ n8n
172.18.0.17
n8n.xtrm-lab.org"] + karakeep["📝 Karakeep
172.18.0.25
karakeep.xtrm-lab.org"] + end +``` + +### Remote Access & Home Automation + +```mermaid +flowchart TB + subgraph Remote["Remote Access"] + rustdesk_hbbs["🖥️ RustDesk ID
:21115-21119
rustdesk.xtrm-lab.org"] + rustdesk_hbbr["📡 RustDesk Relay"] + end + + subgraph Home["Home Automation"] + ha["🏡 Home Assistant
ha.xtrm-lab.org"] + urbackup["💾 UrBackup
urbackup.xtrm-lab.org"] + end + + rustdesk_hbbs --> rustdesk_hbbr ``` --- -## Service Summary by Role +## Complete Service Flow + +```mermaid +flowchart TB + subgraph Internet["🌐 Internet"] + User["👤 User"] + end + + subgraph MikroTik["MikroTik Router"] + NAT["NAT/Firewall"] + AGH["AdGuard Home
DNS/DoH/DoT"] + end + + subgraph Unraid["Unraid Server"] + Traefik["Traefik
Reverse Proxy"] + + subgraph Services["Services"] + Auth["Authentik"] + Git["Gitea"] + CI["Woodpecker"] + NB["NetBox"] + UK["Uptime Kuma"] + PX["Plex"] + NC["Nextcloud"] + HA["Home Assistant"] + end + end + + User -->|HTTPS :443| NAT + User -->|DoH/DoT| AGH + NAT -->|:44301| Traefik + Traefik --> Auth + Traefik --> Git + Traefik --> CI + Traefik --> NB + Traefik --> UK + Traefik --> NC + NAT -->|:32400| PX + Traefik --> HA +``` + +--- + +## Docker Networks + +```mermaid +flowchart TB + subgraph dockerproxy["dockerproxy (172.18.0.0/16)"] + dp_traefik["traefik"] + dp_authentik["authentik"] + dp_gitea["gitea"] + dp_homarr["homarr"] + dp_uptime["UptimeKuma"] + dp_more["...40+ services"] + end + + subgraph netbox_net["netbox (172.24.0.0/16)"] + nb_main["netbox"] + nb_pg["netbox-postgres"] + nb_redis["netbox-redis"] + end + + subgraph br0["br0 macvlan (192.168.31.0/24)"] + br_pihole["Pi-hole
192.168.31.4"] + br_unbound["Unbound
192.168.31.5"] + br_tm["TimeMachine
192.168.31.12"] + end + + subgraph host_net["host network"] + h_plex["plex"] + h_netalert["NetAlertX"] + h_unimus["unimus"] + h_ha["HomeAssistant"] + end +``` + +--- + +## Service Summary Tables ### Core Infrastructure | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| -| Reverse Proxy | traefik | 172.18.0.3 | 8001→80, 44301→443, 8183→8080 | traefik.xtrm-lab.org | +| Reverse Proxy | traefik | 172.18.0.3 | 8001→80, 44301→443 | traefik.xtrm-lab.org | | Docker Socket | dockersocket | 172.18.0.2 | 2375 | - | | Dashboard | homarr | 172.18.0.4 | 10004→7575 | xtrm-lab.org | @@ -254,23 +304,20 @@ | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| | Identity Provider | authentik | 172.18.0.11 | 9000, 9443 | auth.xtrm-lab.org | -| Authentik Worker | authentik-worker | 172.18.0.12 | - | - | | Password Manager | vaultwarden | 172.18.0.15 | 4743→80 | vault.xtrm-lab.org | ### DNS Infrastructure | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| -| AdGuard Home (Primary) | adguardhome | 172.17.0.5 (Router) | 5355, 443, 853, 8853 | dns.xtrm-lab.org | -| Pi-hole (Secondary) | binhex-official-pihole | 192.168.31.4 | 53, 80 | ph1.xtrm-lab.org | +| AdGuard Home | adguardhome | 172.17.0.5 | 5355, 443, 853, 8853 | dns.xtrm-lab.org | +| Pi-hole | binhex-official-pihole | 192.168.31.4 | 53, 80 | ph1.xtrm-lab.org | | Unbound | unbound | 192.168.31.5 | 53 | - | -| DoH Server | DoH-Server | 172.18.0.22 | - | doh.xtrm-lab.org | ### DevOps & CI/CD | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| | Git Server | gitea | 172.18.0.31 | 2222→22, 3005→3000 | git.xtrm-lab.org | -| CI/CD Server | woodpecker-server | 172.18.0.32 | 80, 443, 8000, 9000 | ci.xtrm-lab.org | -| CI/CD Agent | woodpecker-agent | 172.18.0.33 | 3000 | - | +| CI/CD Server | woodpecker-server | 172.18.0.32 | 80, 443, 8000 | ci.xtrm-lab.org | ### Network Management | Service | Container | IP | Ports | URL | @@ -278,12 +325,12 @@ | NetBox | netbox | 172.24.0.5 | 8090→8080 | netbox.xtrm-lab.org | | NetDisco | netdisco-web | 172.18.0.41 | 5000 | netdisco.xtrm-lab.org | | Unimus | unimus | host | - | unimus.xtrm-lab.org | -| Slurpit | slurpit-portal | dockerproxy | 80, 3306 | slurpit.xtrm-lab.org | +| Slurpit | slurpit-portal | dockerproxy | 80 | slurpit.xtrm-lab.org | ### Monitoring | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| -| Uptime Kuma | UptimeKuma | 172.18.0.20 | 3001→3001 | uptime.xtrm-lab.org | +| Uptime Kuma | UptimeKuma | 172.18.0.20 | 3001 | uptime.xtrm-lab.org | | NetAlertX | NetAlertX | host | - | netalert.xtrm-lab.org | | Speedtest | speedtest-tracker | 172.18.0.21 | 1180→80 | speedtest.xtrm-lab.org | @@ -293,27 +340,20 @@ | Plex | plex | host | 32400 | plex.xtrm-lab.org | | Nextcloud | Nextcloud | 172.18.0.24 | 8666→80 | nextcloud.xtrm-lab.org | | Transmission | transmission | bridge | 9091, 51413 | - | -| Time Machine | TimeMachine | 192.168.31.12 | SMB/AFP | - | ### Productivity | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| -| Actual Budget | actual-budget | 172.18.0.16 | 5006→5006 | actual.xtrm-lab.org | +| Actual Budget | actual-budget | 172.18.0.16 | 5006 | actual.xtrm-lab.org | | n8n | n8n | 172.18.0.17 | 5678 | n8n.xtrm-lab.org | | Karakeep | karakeep | 172.18.0.25 | 3000 | karakeep.xtrm-lab.org | -### Remote Access -| Service | Container | IP | Ports | URL | -|---------|-----------|-----|-------|-----| -| RustDesk ID | rustdesk-hbbs | bridge | 21115-21119 | rustdesk.xtrm-lab.org | -| RustDesk Relay | rustdesk-hbbr | bridge | - | - | - -### Home Automation & Backup +### Remote Access & Backup | Service | Container | IP | Ports | URL | |---------|-----------|-----|-------|-----| +| RustDesk | rustdesk-hbbs | bridge | 21115-21119 | rustdesk.xtrm-lab.org | | Home Assistant | HomeAssistant_inabox | host | - | ha.xtrm-lab.org | | UrBackup | UrBackup | host | - | urbackup.xtrm-lab.org | -| Portainer | portainer | bridge | 9002 | 192.168.31.2:9002 | --- @@ -324,31 +364,24 @@ | DoH | https://dns.xtrm-lab.org/dns-query | 443 | | DoT | tls://dns.xtrm-lab.org | 853 | | DoQ | quic://dns.xtrm-lab.org | 8853 | -| Plain DNS | 192.168.31.1 (LAN only) | 53 | - ---- - -## Docker Networks Summary - -| Network | Subnet | Purpose | -|---------|--------|---------| -| dockerproxy | 172.18.0.0/16 | Traefik-accessible services | -| netbox | 172.24.0.0/16 | NetBox stack isolation | -| slurpit_slurpit-network | Auto | Slurpit discovery stack | -| br0 | 192.168.31.0/24 | LAN macvlan (direct LAN IPs) | -| bridge | 172.17.0.0/16 | Default Docker bridge | -| host | - | Host network stack | --- ## Quick Reference **SSH Access:** -- Unraid: `ssh -i ~/.ssh/id_ed25519_unraid root@192.168.31.2 -p 422` -- MikroTik: `ssh -i /root/.ssh/mikrotik_key -p 2222 unraid@192.168.31.1` +```bash +# Unraid +ssh -i ~/.ssh/id_ed25519_unraid root@192.168.31.2 -p 422 + +# MikroTik +ssh -i /root/.ssh/mikrotik_key -p 2222 unraid@192.168.31.1 +``` **Key URLs:** -- Dashboard: https://xtrm-lab.org -- Auth: https://auth.xtrm-lab.org -- Git: https://git.xtrm-lab.org -- CI/CD: https://ci.xtrm-lab.org +- 🏠 Dashboard: https://xtrm-lab.org +- 🔐 Auth: https://auth.xtrm-lab.org +- 📚 Git: https://git.xtrm-lab.org +- 🪵 CI/CD: https://ci.xtrm-lab.org +- 📋 NetBox: https://netbox.xtrm-lab.org +- 📊 Uptime: https://uptime.xtrm-lab.org