Skip to main content

homelab diagram

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1e1e1e'#263238', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#fff'#b0bec5', 'tertiaryColor': '#fff', 'mainBkg': '#1e1e1e', 'clusterBkg': '#1e1e1e', 'clusterBorder': '#fff'}}}%%
flowchart TD
    %% ==========================================
    %% 1. STRICTGLOBAL COLORSTYLES DEFINITIONS(The Fix)
    %% ==========================================
    %% OuterThese Regionsdirect (Cloud/Home)styles -will Translucentoverride orBookStack Darkdefaults
    classDeflinkStyle regiondefault fill:#121212,stroke:#fff,#b0bec5,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
    
    %% Services (The Apps) - Black/Darker Grey
    classDef service fill:#000000,stroke:#90a4ae,stroke-width:1px,color:#fff2px;

    %% ==========================================
    %% 2. THE VERTICAL SPINE (Layout Anchor)
    %% ==========================================
    %% These invisible nodes force the vertical tower structure
    Start((Internet)):::service ~~~ CloudSpine:::service ~~~ HomeSpine:::service ~~~ FireboltSpine:::service ~~~ NorbertSpine:::service ~~~ PiHoleSpine:::service
    
    %% Hide the spine nodes (make them tiny)
    style Start fill:#fff,color:#000
    style CloudSpine width:0px,height:0px
    style HomeSpine width:0px,height:0px
    style FireboltSpine width:0px,height:0px
    style NorbertSpine width:0px,height:0px
    style PiHoleSpine width:0px,height:0px

    %% ==========================================
    %% 3. ORACLE CLOUD REGION(TOP)
    %% ==========================================
    subgraph OracleCloud [Oracle Cloud Region]- Free Tier]
        direction TB
        classstyle OracleCloud regionfill:#0d47a1,stroke:#fff,stroke-width:3px,color:#fff
        
        %% PHOENIXDobby
        subgraph DobbyBox [Dobby - Game Node 2]
            direction TB
            style DobbyBox fill:#37474f,stroke:#fff,stroke-width:2px,color:#fff
            
            D_Wing[Pterodactyl Wing]:::service
            D_Agent[Portainer Agent]:::service
            D_MC[Minecraft Cluster]:::service
        end

        %% Phoenix
        subgraph PhoenixBox [Phoenix - Gateway]
            class PhoenixBox server
            direction TB
            style PhoenixBox fill:#37474f,stroke:#fff,stroke-width:2px,color:#fff
            
            P_Traefik[Traefik Proxy]:::service
            P_Stack[INFRA:WG WireGuard, Fail2Ban, WatchtowerInterface<br/>APPS:Fail2Ban<br/>Watchtower]:::service
            P_Apps[Uptime Kuma, Kuma<br/>Traefik Dash]:::service
        end
    end

    %% DOBBY==========================================
    %% 3. HOME NETWORK (BOTTOM)
    %% ==========================================
    subgraph DobbyBoxHomeNet [DobbyHome Node]Network class- DobbyBox serverDeltona]
        direction TB
        D_Stack[Wing,style Agent,HomeNet Minecraftfill:#1b5e20,stroke:#fff,stroke-width:3px,color:#fff

        Cluster]Unifi[Unifi Router]:::device

        %% FIREBOLT (The Main Tower)
        subgraph FireboltBox [Firebolt - Main Server]
            direction TB
            %% FORCE DARK GREY BACKGROUND
            style FireboltBox fill:#37474f,stroke:#fff,stroke-width:2px,color:#fff
            
            F_Traefik[Traefik Internal]:::service

            %% Internal Stacks (Darker Grey)
            subgraph F_Infra [Infrastructure]
                direction TB
                style F_Infra fill:#263238,stroke:#90a4ae,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:#90a4ae,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:#90a4ae,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:#90a4ae,stroke-dasharray: 5 5,color:#fff
                F_Panel[Ptero Panel]:::service
                F_Wing[Ptero Wing]:::service
            end
        end

        %% NORBERT
        subgraph NorbertBox [Norbert - Storage]
            direction TB
            style NorbertBox fill:#37474f,stroke:#fff,stroke-width:2px,color:#fff
            
            N_Stack[Home Assistant<br/>LLMCord AI]:::service
            N_Games[Game Node 1<br/>Wing / Ark / MC Test]:::service
            N_Storage[Media Storage]:::service
        end

        %% PIHOLE
        subgraph PiHoleBox [Raspberry Pi]
            direction TB
            style PiHoleBox fill:#37474f,stroke:#fff,stroke-width:2px,color:#fff
            
            PI_SVC[DNS Sinkhole]:::service
            PI_VPN[PiVPN Ingress]:::service
        end
    end

    %% ==========================================
    %% 4. HOMEINVISIBLE NETWORKANCHORS REGION(The Spine)
    %% ==========================================
    subgraph%% This strictly forces the boxes to sit on top of each other
    OracleCloud ~~~ HomeNet
    [HomePhoenixBox Network~~~ Region]FireboltBox
    directionFireboltBox TB~~~ classNorbertBox
    HomeNetNorbertBox region~~~ Unifi[Unifi Router]:::servicePiHoleBox

    %% FIREBOLTForce subgraphinternal FireboltBox [Firebolt Mainorder
    Server]F_Traefik class~~~ FireboltBoxF_Infra server~~~ directionF_Admin TB~~~ F_Traefik[TraefikF_Media Internal]:::service~~~ %% Stacks
            F_Infra[INFRA: Authentik, MySQL, Homepage, Portainer]:::service
            F_Admin[ADMIN: Vaultwarden, BookStack, Duplicati]:::service
            F_Media[MEDIA: Plex, Arr 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
    endF_Games

    %% ==========================================
    %% 5. CONNECTIONSDATA FLOWS
    %% ==========================================
    %%Internet((Internet))
    style Internet ->fill:#fff,stroke:#333,color:#000

    Entry
    StartInternet == HTTPS ==> P_Traefik
    Start -- Ports --> D_Stack
    Start -- Ports --> Unifi

    %% The Tunnel (Phoenix -> Firebolt)
    P_Traefik ==>|Tunnel| F_Traefik
    
    %% Internal RoutingLinks
    F_Traefik --> F_Infra & F_Admin & F_Media & F_Games
    F_Traefik -.-> N_Stack & PI_StackPI_SVC
    
    %% Management Links
    F_Portainer -.-> P_Stack & D_Agent & N_Stack
    F_Download -.->|NFS| N_Storage

    %% Split RouteRoutes
    P_Stack -.-> N_Games

    %% Port ForwardingForwards
    Unifi -.-> D_MC
    Unifi -.-> F_Games
    Unifi -.-> N_Games
    Unifi -.-> PI_StackPI_VPN

    %% DataCLASS & Mgmt
    F_Infra -.-> P_Stack & D_Stack & N_Stack
    F_Media -.->|NFS| N_Storage

    %% ==========================================
    %% 6. FORCE ALIGNMENTDEFINITIONS (TheFallback)
    Glue)classDef %%device ==========================================fill:#37474f,stroke:#fff,stroke-width:2px,color:#fff
    %%classDef Thisservice links the real boxes to the invisible spine
    CloudSpine ~~~ PhoenixBox
    HomeSpine ~~~ Unifi
    FireboltSpine ~~~ FireboltBox
    NorbertSpine ~~~ NorbertBox
    PiHoleSpine ~~~ PiHoleBoxfill:#212121,stroke:#90a4ae,stroke-width:1px,color:#fff