Skip to main content

homelab diagram

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#263238'#37474f', 'primaryTextColor': '#fff', 'primaryBorderColor': '#78909c'#fff', 'lineColor': '#b0bec5', 'tertiaryColor': '#fff', 'mainBkg': '#263238'}}}%%
flowchart TD
    %% ==========================================
    %% 1. HARDCODEDROBUST STYLING (The Fix)
    %% ==========================================
    %% Cloud: Deep Blue background, Bright Blue Border, White Text
    classDef cloud fill:#0d47a1,stroke:#64b5f6,#fff,stroke-width:3px,2px,color:#fff
    
    %% Home: Deep Green background, Bright Green Border, White Text
    classDef home fill:#1b5e20,stroke:#66bb6a,stroke-width:3px,color:#fff
    
    %% Device: Dark Grey, White Border, White Text
    classDef device fill:#37474f,stroke:#ffffff,#fff,stroke-width:2px,color:#fff
    %%classDef Stack:server Black/Grey background, Dashed Border, White Textfill:#37474f,stroke:#90a4ae,stroke-width:2px,color:#fff
    classDef stack fill:#212121,#263238,stroke:#90a4ae,#b0bec5,stroke-width:1px,stroke-dasharray: 5 5,color:#eceff1

    %% ==========================================
    %% 2. TOP LAYER: ORACLE CLOUD
    %% ==========================================
    subgraph OracleCloud [Oracle Cloud - Free Tier]Cloud]
        direction TB
        
        %% Phoenix
        Box
        subgraph PhoenixBox [Phoenix - Intel VM]
            class PhoenixBox device
            direction TBserver
            P_Traefik[Traefik Proxy]
            
            subgraphP_Stack[<b>Infrastructure</b><br/>WireGuard PhoenixInfra [Infrastructure]
                class PhoenixInfra stack
                direction TB
                P_WG[WG Interface]
                P_Fail2Ban[Fail2Ban]
                P_Watchtower[Watchtower]
                P_Agent[Interface<br/>Fail2Ban<br/>Watchtower<br/>Portainer Agent]
            end
            
            subgraph PhoenixApps [Local Apps]
               class PhoenixApps stack
               direction TB
               P_Kuma[Agent<br/>----<br/><b>Apps</b><br/>Uptime Kuma]
               P_Dash[Kuma<br/>Traefik Dashboard]
            endclass P_Stack stack
        end

        %% Dobby
        Box
        subgraph DobbyBox [Dobby - ARM VM]
            class DobbyBox deviceserver
            directionD_Stack[<b>Game TBNode subgraph2</b><br/>Pterodactyl DobbySvcsWing<br/>Portainer [Services]Agent<br/>----<br/><b>Minecraft Cluster</b><br/>PO3 / ATM10 / Bedrock]
            class DobbySvcsD_Stack stack
                direction TB
                D_Wing[Pterodactyl Wing]
                D_Agent[Portainer Agent]
                D_MC[Minecraft Cluster]
            end
        end
    end

    %% ==========================================
    %% 3. BOTTOM LAYER: HOME
    NETWORK
    %% ==========================================
    subgraph HomeNet [Home Network - Deltona]Network]
        direction TB
        Unifi[Unifi Router]
        class Unifi deviceserver

        %% --FIREBOLT (The Heavy Lifter - FireboltNow (Forceda Vertical Column) ---List)
        subgraph FireboltBox [Firebolt - Ubuntu Server]
            class FireboltBox deviceserver
            
            direction TB
            
            F_Traefik[F_Net[Traefik Internal]Internal F_WG[WG/ Interface]WireGuard]
            
            %%F_Infra[<b>Infrastructure</b><br/>Authentik ThisIDP<br/>MySQL "MasterDB<br/>Homepage<br/>Portainer Stack" box forces everything inside to be a vertical column
            subgraph FireboltColumn [ ]
                direction TB
                style FireboltColumn fill:none,stroke:none

                subgraph FireboltInfra [Infrastructure]Server<br/>Autoheal]
            class FireboltInfraF_Infra stack
            
            direction TB
                   F_Auth[Authentik IDP]
                   F_MySQL[MySQL DB]
                   F_Homepage[Homepage]
                   F_Portainer[Portainer Server]
                   F_Autoheal[Autoheal]
                end

                subgraph FireboltAdmin [F_Admin[<b>Admin Tools]Tools</b><br/>Vaultwarden<br/>BookStack Wiki<br/>Duplicati<br/>FileBrowser<br/>phpMyAdmin]
            class FireboltAdminF_Admin stack
            
            direction TB
                   F_Bitwarden[Vaultwarden]
                   F_Bookstack[BookStack Wiki]
                   F_Duplicati[Duplicati]
                   F_FileBrowser[FileBrowser]
                   F_PMA[phpMyAdmin]
                end

                subgraph FireboltMedia [F_Media[<b>Media Stack]
                   class FireboltMedia stack
                   direction TB
                   F_Plex[Stack</b><br/>Plex Media Server]Server<br/>Overseerr F_Overseerr[Overseerr]/ F_Sonarr[Sonarr]Tautulli<br/>Sonarr F_Radarr[Radarr]/ F_Prowlarr[Prowlarr]Radarr F_Tautulli[Tautulli]/ F_Unpackerr[Unpackerr]
                   F_Qbit[Prowlarr<br/>qBittorrent -/ VPN]Unpackerr F_Flaresolverr[FlareSolverr]/ F_Doplarr[Flare<br/>Doplarr]
                end

                subgraph FireboltGames [Games Stack]
            class FireboltGamesF_Media stack
            
            directionF_Games[<b>Game TB
                   F_PteroPanel[Stack</b><br/>Pterodactyl Panel]
                   F_PteroWing[Panel<br/>Pterodactyl Wing]
                   F_PteroDB[Wing<br/>Panel DB & Redis]
            endclass endF_Games stack
        end

        %% --- Norbert ---NORBERT
        subgraph NorbertBox [Norbert - Unraid]
            class NorbertBox deviceserver
            direction TB
            
            N_WG[WGN_Net[WireGuard Interface]
            
            subgraph NorbertInfra [InfraN_Stack[<b>Apps & Apps]
                class NorbertInfra stack
                direction TB
                N_Agent[Portainer Agent]
                N_Hass[Infra</b><br/>Home Assistant VM]
                N_LLM[VM<br/>LLMCord AI]AI<br/>Portainer end

            subgraph NorbertGames [Agent<br/>----<br/><b>Game Node]Node class NorbertGames stack
                direction TB
                N_Wing[1</b><br/>Pterodactyl Wing]
                N_ArkBot[Wing<br/>Ark Discord Bot]
                N_MCTest[Bot<br/>Minecraft Test]
            endclass N_Stack stack
            
            N_Storage[Media Storage]
        end

        %% --- PiHole ---PIHOLE
        subgraph PiHoleBox [Raspberry Pi]
            class PiHoleBox deviceserver
            direction TB
            PI_SVC[PI_Stack[<b>Services</b><br/>DNS Sinkhole]
            PI_VPN[Sinkhole<br/>PiVPN Ingress]
            class PI_Stack stack
        end
    end

    %% ==========================================
    %% 4. INVISIBLEALIGNMENT & LINKS (Force Alignment)
    %% ==========================================
    
    %% OracleForce onVertical TOP of HomeOrder
    OracleCloud ~~~ HomeNet
    
    %% Firebolt on TOP of Norbert on TOP of PiHole
    FireboltBox ~~~ NorbertBox ~~~ PiHoleBox
    
    %% Stacks insideForce Firebolt (ForceInternal Order)Order
    FireboltInfraF_Net ~~~--> FireboltAdminF_Infra ~~~--> FireboltMediaF_Admin ~~~--> FireboltGamesF_Media --> F_Games

    %% ==========================================Traffic
    %% 5. VISIBLE CONNECTIONS
    %% ==========================================
    
    %% Internet Entry
    InternetInternet((Internet)) == HTTPS ==> P_Traefik
    style Internet fill:#fff,stroke:#333,color:#000

    P_Traefik --> P_Stack
    P_Traefik ==>|Tunnel| F_Net
    
    F_Net --> F_Infra & F_Admin & F_Media & F_Games
    F_Net -.-> N_Stack & PI_Stack
    
    %% Split Route
    P_Stack -.-> N_Net
    N_Net -.-> N_Stack

    %% Ports
    Internet -- Ports --> DobbySvcsD_Stack
    Internet -- Ports --> Unifi
    %%Unifi Tunnel-- P_TraefikPort Fwd --> P_WG
    P_WG ==>|Tunnel| F_WG
    F_WG --> F_Traefik
    
    %% Internal Routing (Arrows to Stacks to keep diagram clean)
    F_Traefik --> FireboltInfra & FireboltAdmin & FireboltMedia & FireboltGames
    F_Traefik -.->|LAN Proxy| N_Hass & PI_SVC
    
    %% Split Routing
    P_WG -.->|Direct| N_WG
    N_WG -.-> NorbertGames

    %% Port ForwardingF_Games
    Unifi -- Port Fwd --> FireboltGamesN_Stack
    Unifi -- Port Fwd --> NorbertGames
    Unifi -- Port Fwd --> PI_VPNPI_Stack

    %% Management
    F_PortainerF_Infra -.->|Manage| P_AgentP_Stack & D_AgentD_Stack & N_AgentN_Stack
    FireboltMediaF_Media -.->|NFS| N_Storage

    %% APPLY CLASSESCLASS
    class OracleCloud cloud
    class HomeNet home