homelab diagram
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#263238'#1e1e1e', 'primaryTextColor': '#fff', 'primaryBorderColor': '#ffffff'#fff', 'lineColor': '#ffffff'#fff', 'tertiaryColor': '#fff', 'mainBkg': '#1e1e1e', 'clusterBkg': '#1e1e1e', 'clusterBorder': '#fff'}}}%%
flowchart TD
%% ==========================================
%% 1. HIGHSTRICT CONTRASTCOLOR STYLESDEFINITIONS
%% ==========================================
%% Outer Regions (Cloud/Home) - Translucent or Dark
classDef cloudregion fill:#0d47a1,#121212,stroke:#ffffff,#fff,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
%% Servers (Firebolt, Phoenix) - MUST BE DARK GREY
classDef server fill:#263238,stroke:#fff,stroke-width:2px,color:#fff
classDef%% homeServices fill:#1b5e20,stroke:#ffffff,stroke-width:2px,color:#fff(The classDefApps) device- fill:#37474f,stroke:#ffffff,stroke-width:2px,color:#fffBlack/Darker Grey
classDef service fill:#212121,#000000,stroke:#90a4ae,stroke-width:1px,color:#fff
%% ==========================================
%% 2. TOPTHE LAYER:VERTICAL INTERNETSPINE &(Layout ORACLEAnchor)
%% ==========================================
Internet(%% These invisible nodes force the vertical tower structure
Start((Internet))
style Internet fill:#fff,stroke:#333,color:#000
subgraph OracleCloud [Oracle Cloud - Free Tier]
direction TB
%% Dobby (Left Side)
subgraph DobbyBox [Dobby - Game Node 2]
class DobbyBox device
direction TB
D_Wing[Pterodactyl Wing]:::service D_Agent[Portainer~~~ Agent]:CloudSpine:::service D_MC[Minecraft~~~ Cluster]:HomeSpine:::service end~~~ FireboltSpine:::service ~~~ NorbertSpine:::service ~~~ PiHoleSpine:::service
%% PhoenixHide the spine nodes (Rightmake Sidethem -tiny)
Thestyle Gateway)Start subgraphfill:#fff,color:#000
PhoenixBoxstyle [PhoenixCloudSpine -width:0px,height:0px
Gateway]style classHomeSpine PhoenixBoxwidth:0px,height:0px
devicestyle directionFireboltSpine TBwidth:0px,height:0px
P_Traefik[Traefikstyle Proxy]:::serviceNorbertSpine P_Stack[WGwidth:0px,height:0px
Interface<br/>Fail2Ban<br/>Watchtower<br/>Agent]:::servicestyle P_Apps[UptimePiHoleSpine Kuma<br/>Traefik Dash]:::service
end
endwidth:0px,height:0px
%% ==========================================
%% 3. BOTTOMORACLE LAYER:CLOUD HOME NETWORKREGION
%% ==========================================
subgraph HomeNetOracleCloud [HomeOracle NetworkCloud - Deltona]Region]
direction TB
Unifi[Unificlass Router]:::deviceOracleCloud region
%% --- Firebolt (Center of the Universe) ---PHOENIX
subgraph FireboltBoxPhoenixBox [FireboltPhoenix - Main Server]Gateway]
class FireboltBoxPhoenixBox deviceserver
direction TB
F_Traefik[P_Traefik[Traefik Internal]Proxy]:::service
%%P_Stack[INFRA: FireboltWireGuard, StacksFail2Ban, (Individual Boxes)
subgraph F_Infra [Infrastructure]
direction TB
style F_Infra fill:#263238,stroke:#546e7a,stroke-dasharray: 5 5,color:#fff
F_Auth[Authentik IDP]:::service
F_Portainer[Portainer Server]:::service
F_Homepage[Homepage]:::service
end
subgraph F_Admin [Admin Tools]
direction TB
style F_Admin fill:#263238,stroke:#546e7a,stroke-dasharray: 5 5,color:#fff
F_Bitwarden[Vaultwarden]:::service
F_Bookstack[BookStack]:::service
F_Duplicati[Duplicati]:::service
end
subgraph F_Media [Media Stack]
direction TB
style F_Media fill:#263238,stroke:#546e7a,stroke-dasharray: 5 5,color:#fff
F_Plex[Plex]:::service
F_Arr[Sonarr/Radarr/Prowlarr]:::service
F_Overseerr[Overseerr]:::service
F_Download[qBit/Unpackerr]:::service
end
subgraph F_Games [Game Stack]
direction TB
style F_Games fill:#263238,stroke:#546e7a,stroke-dasharray: 5 5,color:#fff
F_Panel[Ptero Panel]:::service
F_Wing[Ptero Wing]:::service
end
end
%% --- Norbert (Below Firebolt) ---
subgraph NorbertBox [Norbert - Storage]
class NorbertBox device
direction TB
N_Stack[Home AssistantWatchtower<br/>LLMCordAPPS: AI<br/>Agent]:::serviceUptime N_Games[GameKuma, NodeTraefik 1<br/>Wing / Ark / MC Test]:::service
N_Storage[Media Storage]Dash]:::service
end
%% --- PiHole (Bottom) ---DOBBY
subgraph PiHoleBoxDobbyBox [RaspberryDobby Pi]Node]
class PiHoleBoxDobbyBox deviceserver
direction TB
PI_SVC[DNSD_Stack[Wing, Sinkhole]:::serviceAgent, PI_VPN[PiVPNMinecraft Ingress]Cluster]:::service
end
end
%% ==========================================
%% 4. THEHOME VERTICALNETWORK SPINE (Force Alignment)REGION
%% ==========================================
subgraph HomeNet [Home Network Region]
direction TB
class HomeNet region
Unifi[Unifi Router]:::service
%% ThisFIREBOLT
invisiblesubgraph chainFireboltBox forces[Firebolt theMain nodesServer]
toclass sitFireboltBox directlyserver
ondirection topTB
ofF_Traefik[Traefik eachInternal]:::service
other%% InternetStacks
~~~F_Infra[INFRA: P_TraefikAuthentik, ~~~MySQL, F_TraefikHomepage, ~~~Portainer]:::service
F_InfraF_Admin[ADMIN: ~~~Vaultwarden, F_AdminBookStack, ~~~Duplicati]:::service
F_MediaF_Media[MEDIA: ~~~Plex, F_GamesArr ~~~Stack, Overseerr, Downloader]:::service
F_Games[GAMES: Ptero Panel, Ptero Wing]:::service
end
%% NORBERT
subgraph NorbertBox ~~~[Norbert Storage]
class NorbertBox server
direction TB
N_Stack[INFRA: Home Assistant, AI Bot, Agent]:::service
N_Games[GAMES: Wing, Ark Bot, MC Test]:::service
N_Storage[Media Storage Array]:::service
end
%% PIHOLE
subgraph PiHoleBox [Raspberry Pi]
class PiHoleBox server
direction TB
PI_Stack[DNS Sinkhole & PiVPN]:::service
end
end
%% ==========================================
%% 5. CONNECTIONS
%% ==========================================
%% Internet Flow-> InternetEntry
Start == HTTPS ==> P_Traefik
InternetStart -- Ports --> D_WingD_Stack
InternetStart -- Ports --> Unifi
%% The Tunnel Flow(Phoenix -> Firebolt)
P_Traefik ==>|Tunnel| F_Traefik
%% FireboltInternal DistributionRouting
F_Traefik --> F_Infra & F_Admin & F_Media & F_Games
F_Traefik -.-> N_Stack & PI_SVCPI_Stack
%% Split Route
P_Stack -.-> N_Games
%% Port Forwarding
Unifi -.-> F_Games
Unifi -.-> N_Games
Unifi -.-> PI_VPNPI_Stack
%% ManagementData F_Portainer& Mgmt
F_Infra -.-> P_Stack & D_AgentD_Stack & N_Stack
F_DownloadF_Media -.->|NFS| N_Storage
%% APPLY==========================================
CLASSES%% class6. OracleCloudFORCE cloudALIGNMENT class(The HomeNetGlue)
home%% ==========================================
%% This links the real boxes to the invisible spine
CloudSpine ~~~ PhoenixBox
HomeSpine ~~~ Unifi
FireboltSpine ~~~ FireboltBox
NorbertSpine ~~~ NorbertBox
PiHoleSpine ~~~ PiHoleBox