Skip to main content

homelab diagram

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#37474f'#263238', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff'#ffffff', 'lineColor': '#b0bec5'#ffffff', 'tertiaryColor': '#fff', 'mainBkg': '#263238'#1e1e1e'}}}%%
flowchart TD
    %% ==========================================
    %% 1. ROBUSTHIGH STYLINGCONTRAST STYLES
    %% ==========================================
    classDef cloud fill:#0d47a1,stroke:#fff,#ffffff,stroke-width:2px,color:#fff
    classDef home fill:#1b5e20,stroke:#fff,#ffffff,stroke-width:2px,color:#fff
    classDef serverdevice fill:#37474f,stroke:#90a4ae,#ffffff,stroke-width:2px,color:#fff
    classDef stackservice fill:#263238,#212121,stroke:#b0bec5,#90a4ae,stroke-width:1px,stroke-dasharray: 5 5,color:#eceff1#fff

    %% ==========================================
    %% 2. TOP LAYER: CLOUDINTERNET & ORACLE
    %% ==========================================
    Internet((Internet))
    style Internet fill:#fff,stroke:#333,color:#000

    subgraph OracleCloud [Oracle Cloud]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]:::service
            D_MC[Minecraft Cluster]:::service
        end

        %% Phoenix (Right Side - The Gateway)
        subgraph PhoenixBox [Phoenix VM]- Gateway]
            class PhoenixBox serverdevice
            direction TB
            P_Traefik[Traefik Proxy]:::service
            P_Stack[<b>Infrastructure</b><br/>WireGuardWG Interface<br/>Fail2Ban<br/>Watchtower<br/>PortainerAgent]:::service
            Agent<br/>----<br/><b>Apps</b><br/>P_Apps[Uptime Kuma<br/>Traefik Dashboard]
            class P_Stack stack
        end

        %% Dobby
        subgraph DobbyBox [Dobby VM]
            class DobbyBox server
            D_Stack[<b>Game Node 2</b><br/>Pterodactyl Wing<br/>Portainer Agent<br/>----<br/><b>Minecraft Cluster</b><br/>PO3 / ATM10 / Bedrock]
            class D_Stack stackDash]:::service
        end
    end

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

        %% FIREBOLT--- Firebolt (TheCenter Heavyof Lifterthe Universe) - Now a Vertical List)--
        subgraph FireboltBox [Firebolt - Main Server]
            class FireboltBox serverdevice
            F_Net[direction TB
            
            F_Traefik[Traefik InternalInternal]:::service
            
            /%% WireGuard]Firebolt F_Infra[<b>Infrastructure</b><br/>AuthentikStacks IDP<br/>MySQL(Individual DB<br/>Homepage<br/>PortainerBoxes)
            Server<br/>Autoheal]
            classsubgraph F_Infra stack[Infrastructure]
                F_Admin[<b>Admindirection Tools</b><br/>Vaultwarden<br/>BookStackTB
                Wiki<br/>Duplicati<br/>FileBrowser<br/>phpMyAdmin]style classF_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 stack[Admin F_Media[<b>MediaTools]
                Stack</b><br/>Plexdirection MediaTB
                Server<br/>Overseerrstyle /F_Admin Tautulli<br/>Sonarrfill:#263238,stroke:#546e7a,stroke-dasharray: /5 Radarr5,color:#fff
                /F_Bitwarden[Vaultwarden]:::service
                Prowlarr<br/>qBittorrentF_Bookstack[BookStack]:::service
                /F_Duplicati[Duplicati]:::service
            Unpackerrend

            / Flare<br/>Doplarr]
            classsubgraph F_Media stack[Media F_Games[<b>GameStack]
                Stack</b><br/>Pterodactyldirection Panel<br/>PterodactylTB
                Wing<br/>Panelstyle DBF_Media &fill:#263238,stroke:#546e7a,stroke-dasharray: Redis]5 class5,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 stack[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--- Norbert (Below Firebolt) ---
        subgraph NorbertBox [Norbert Unraid]- Storage]
            class NorbertBox serverdevice
            N_Net[WireGuarddirection Interface]TB
            N_Stack[<b>Apps & Infra</b><br/>Home Assistant VM<br/>LLMCord AI<br/>PortainerAgent]:::service
            Agent<br/>----<br/><b>N_Games[Game Node 1</b><br/>PterodactylWing Wing<br/>/ Ark Discord/ Bot<br/>MinecraftMC Test]
            class N_Stack stack:::service
            N_Storage[Media Storage]:::service
        end

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

    %% ==========================================
    %% 4. ALIGNMENTTHE &VERTICAL LINKSSPINE (Force Alignment)
    %% ==========================================
    %% ForceThis Verticalinvisible Orderchain OracleCloudforces the nodes to sit directly on top of each other
    Internet ~~~ HomeNetP_Traefik FireboltBox~~~ F_Traefik ~~~ F_Infra ~~~ F_Admin ~~~ F_Media ~~~ F_Games ~~~ NorbertBox ~~~ PiHoleBox

    %% Force Firebolt Internal Order
    F_Net --> F_Infra --> F_Admin --> F_Media --> F_Games==========================================
    %% Traffic5. Internet((Internet))CONNECTIONS
    %% ==========================================
    
    %% Internet Flow
    Internet == HTTPS ==> P_Traefik
    style Internet fill:#fff,stroke:#333,color:#000-- P_TraefikPorts --> P_StackD_Wing
    Internet -- Ports --> Unifi

    %% Tunnel Flow
    P_Traefik ==>|Tunnel| F_NetF_Traefik
    
    F_Net%% Firebolt Distribution
    F_Traefik --> F_Infra & F_Admin & F_Media & F_Games
    F_NetF_Traefik -.-> N_Stack & PI_StackPI_SVC
    
    %% Split Route
    P_Stack -.-> N_Net
    N_Net -.-> N_StackN_Games

    %% PortsPort Internet -- Ports --> D_Stack
    Internet -- Ports --> UnifiForwarding
    Unifi -- Port Fwd -.-> F_Games
    Unifi -- Port Fwd -.-> N_StackN_Games
    Unifi -- Port Fwd -.-> PI_StackPI_VPN

    %% Management
    F_InfraF_Portainer -.->|Manage| P_Stack & D_StackD_Agent & N_Stack
    F_MediaF_Download -.->|NFS| N_Storage

    %% APPLY CLASSCLASSES
    class OracleCloud cloud
    class HomeNet home