homelab diagram
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#263238'#cfd8dc', 'primaryTextColor': '#fff'#eceff1', 'primaryBorderColor': '#fff'#cfd8dc', 'lineColor': '#b0bec5', 'tertiaryColor': '#fff'transparent', 'edgeLabelBackground': 'transparent', 'mainBkg': '#1e1e1e'#121212'}}}%%
flowchart LR
%% ==========================================
%% 1. GLOBALDEFINITIONS STYLES& CLASSES
%% ==========================================
%% App Nodes (Dark Boxes)
classDef app fill:#263238,stroke:#90a4ae,#546e7a,stroke-width:1px,2px,color:#fff#eceff1,rx:5,ry:5
%% The "Internet" Circle
classDef internet fill:#fff,stroke:#333,color:#000,stroke-width:2px
linkStyle default stroke:#607d8b,stroke-width:1px;1px,fill:none;
%% ==========================================
%% 2. THE DARK CANVAS (WRAPPER)
%% ==========================================
subgraph DarkCanvas [ ]
direction LR
style DarkCanvas fill:#1e1e1e,#121212,stroke:#1e1e1e,#121212,color:#1e1e1e#121212
%% --- THE SOURCE ---
Internet((Internet))
style Internet fill:#fff,stroke:#333,color:#000:::internet
%% ---==========================================
%% 3. BLUE ZONE: ORACLE CLOUD
---%% ==========================================
subgraph OracleCloud [Oracle Cloud - Free Tier]
direction TB
%% Blue Fill with Bright Blue Border
style OracleCloud fill:#0d47a1,stroke:#fff,#448aff,stroke-width:3px,4px,color:#fff#fff,rx:10,ry:10
%% --- SERVER: PHOENIX ---
subgraph PhoenixBox [Phoenix - Gateway]
direction TB
%% Charcoal Box
style PhoenixBox fill:#37474f,#212121,stroke:#fff,#607d8b,stroke-width:2px,color:#fff#fff,rx:5,ry:5
P_Traefik[Traefik Proxy]:::app
P_WG[WireGuard Interface]:::app
%% Grey Box: Stack
subgraph P_Infra [Infrastructure]
style P_Infra fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
P_Fail2Ban[Fail2Ban]:::app
P_Agent[Portainer Agent]:::app
P_Kuma[Uptime Kuma]:::app
end
end
%% --- SERVER: DOBBY ---
subgraph DobbyBox [Dobby - Game Node]
direction TB
style DobbyBox fill:#37474f,#212121,stroke:#fff,#607d8b,stroke-width:2px,color:#fff#fff,rx:5,ry:5
%% Grey Box: Stack
subgraph D_Games [Game Stack]
style D_Games fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
D_Wing[Pterodactyl Wing]:::app
D_MC[Minecraft Cluster]:::app
end
D_Agent[Portainer Agent]:::app
end
end
%% ---==========================================
%% 4. GREEN ZONE: HOME NETWORK
---%% ==========================================
subgraph HomeNet [Home Network - Deltona]
direction TB
%% Green Fill with Bright Green Border
style HomeNet fill:#1b5e20,stroke:#fff,#00e676,stroke-width:3px,4px,color:#fff#fff,rx:10,ry:10
Unifi[Unifi Router]:::app
style Unifi fill:#37474f,#000,stroke:#fff,#00e676,stroke-width:2px,color:#fff
%% --- SERVER: FIREBOLT ---
subgraph FireboltBox [Firebolt - Main Server]
direction TB
style FireboltBox fill:#37474f,#212121,stroke:#fff,#607d8b,stroke-width:2px,color:#fff#fff,rx:5,ry:5
F_Traefik[Traefik Internal]:::app
F_WG[WireGuard Interface]:::app
subgraph F_Stacks [Apps & Services]
style F_Stacks fill:none,stroke:none,color:#fff
%% Grey Box: Stack
subgraph F_Infra [Infrastructure]
style F_Infra fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
F_Auth[Authentik]:::app
F_Portainer[Portainer]:::app
F_Homepage[Homepage]:::app
F_Tug[Tugtainer]:::app
F_Dozzle[Dozzle]:::app
end
%% Grey Box: Stack
subgraph F_Media [Media Stack]
style F_Media fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
F_Plex[Plex Media Server]:::app
F_Req[Overseerr / Tautulli]:::app
F_Arr[Sonarr / Radarr / Prowlarr]Prowlarr<br/>Huntarr / Doplarr]:::app
F_Down[qBit / Unpackerr / Flare]:::app
end
%% Grey Box: Stack
subgraph F_Admin [Admin Tools]
style F_Admin fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
F_Bit[Vaultwarden]:::app
F_Book[BookStack]:::app
F_Dup[Duplicati]:::app
F_File[FileBrowser]:::app
F_PMA[PhpMyAdmin]:::app
end
%% Grey Box: Stack
subgraph F_GameStack [Game Stack]
style F_GameStack fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
F_Panel[Ptero Panel]:::app
F_Wing[Ptero Wing]:::app
F_DB[Panel DB & Redis]:::app
F_Ark[Ark Survival Evolved]:::app
end
end
end
%% --- SERVER: NORBERT ---
subgraph NorbertBox [Norbert - Storage]
direction TB
style NorbertBox fill:#37474f,#212121,stroke:#fff,#607d8b,stroke-width:2px,color:#fff#fff,rx:5,ry:5
N_WG[WireGuard]:::app
N_Store[Media Storage]:::app
%% Grey Box: Stack
subgraph N_Apps [App Stack]
style N_Apps fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
N_Hass[Home Assistant]:::app
N_LLM[LLMCord AI]:::app
end
%% Grey Box: Stack
subgraph N_Games [Game Node 1]
style N_Games fill:#546e7a,#424242,stroke:#cfd8dc,#757575,stroke-width:1px,stroke-dasharray: 5 5,color:#fff#eee,rx:5,ry:5
N_Wing[Ptero Wing]:::app
N_MC[MC Test]:::app
end
end
%% --- HARDWARE: RASPBERRY PI ---
subgraph PiHoleBox [Raspberry Pi]
direction TB
style PiHoleBox fill:#37474f,#212121,stroke:#fff,#607d8b,stroke-width:2px,color:#fff#fff,rx:5,ry:5
PI_SVC[DNS Sinkhole]:::app
PI_VPN[PiVPN Ingress]:::app
end
end
end
%% ==========================================
%% 5. TRAFFIC WIRING
%% ==========================================
%% 0, 1, 2: Internet Ingress (GREEN - PUBLIC)
Internet ==>|HTTPS| P_Traefik
Internet ==>|MC Ports| D_Games
Internet ==>|32400 / 51820 / Games| Unifi
linkStyle 0,1,2 stroke:#00e676,stroke-width:3px;
%% 3,Tunnel 4:(ORANGE Tunnel- WIREGUARD)
P_Traefik --> P_WG
P_WG ==>|WireGuard Tunnel| F_WG
linkStyle 3,4 stroke:#ff9100,stroke-width:4px;
%% 5: LAN (FireboltBLUE Internal)- INTERNAL)
F_WG --> F_Traefik
linkStyle 5 stroke:#2979ff,stroke-width:2px;
%% 6, 7, 8, 9: LAN Distribution (Traefik Distribution)BLUE)
F_Traefik --> F_Infra & F_Media & F_Admin & F_GameStack
linkStyle 6,7,8,9 stroke:#2979ff,stroke-width:2px;
%% 10, 11: LAN Remote (Traefik Remote)BLUE)
F_Traefik -.-> N_Apps & PI_SVC
linkStyle 10,11 stroke:#2979ff,stroke-width:2px;
%% 12: Split Route (ORANGE - TUNNEL)
P_WG -.->|Direct Route| N_WG
linkStyle 12 stroke:#ff9100,stroke-width:3px,stroke-dasharray: 5 5;
%% 13: LAN Internal (Norbert Internal)BLUE)
N_WG -.-> N_Games
linkStyle 13 stroke:#2979ff,stroke-width:2px;
%% 14, 15, 16, 17: PORT FORWARDING (GREEN DASHED - PUBLIC MAPPED)
Unifi -.->|32400| F_Plex
Unifi -.->|Game Ports| F_GameStack
Unifi -.->|Game Ports| N_Games
Unifi -.->|UDP 51820| PI_VPN
linkStyle 14,15,16,17 stroke:#00e676,stroke-width:2px,stroke-dasharray: 5 5;
%% 18+:Management Management(GREY/NEUTRAL)
F_Portainer -.-> P_Agent & D_Agent
F_Down -.->|NFS| N_Store
F_Panel -.-> D_Wing & N_Wing & F_Wing
Color Legend
- ■ Green Lines: Public Internet Traffic (HTTPS, 32400, Game Ports)
- ■ Orange Lines: WireGuard Tunnel Traffic
- ■ Blue Lines: Internal LAN Traffic
- ■ Blue Zone: Oracle Cloud Infrastructure
- ■ Green Zone: Home Network Infrastructure
- ■ Charcoal Boxes: Servers & Hardware (Phoenix, Firebolt, etc.)
- ■ Grey Boxes: Logical Stacks (Media, Infra, Admin)
- ■ Dark Boxes: Individual Applications