Skip to main content

homelab diagram

%%{init: {'theme': 'dark'base', 'themeVariables': { 'darkMode': true, 'background': '#1e1e1e', 'primaryColor': '#263238', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#b0bec5', 'tertiaryColor': '#fff', 'mainBkg': '#1e1e1e'}}}%%
flowchart LR
    %% ==========================================
    %% 1. GLOBAL NODE STYLES (CustomThe Palette)Apps)
    %% ==========================================
    %% Locations (The Big Containers)
    classDef cloud fill:#0d47a1,stroke:#fff,stroke-width:3px,color:#fff
    classDef home fill:#1b5e20,stroke:#fff,stroke-width:3px,color:#fff
    
    %% Servers (Hardware/VMs) - Color Coded by Location
    classDef serverBlue fill:#1565c0,stroke:#fff,stroke-width:2px,color:#fff
    classDef serverGreen fill:#2e7d32,stroke:#fff,stroke-width:2px,color:#fff
    
    %% Stacks (Logical Groupings) - Grey
    classDef stack fill:#546e7a,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
    
    %% Apps (Individualwill Containers) -be Dark Charcoal with Light Grey borders
    classDef app fill:#263238,stroke:#90a4ae,stroke-width:1px,color:#fff
    
    %% Default Line StyleStyles
    linkStyle default stroke:#607d8b,stroke-width:1px;

    %% ==========================================
    %% 2. THE SOURCE
    %% ==========================================
    Internet((Internet))
    style Internet fill:#fff,stroke:#333,color:#000

    %% ==========================================
    %% 3. ORACLE CLOUD (TopOuter Lane)Box: Deep Blue)
    %% ==========================================
    subgraph OracleCloud [Oracle Cloud - Free Tier]
        direction TB
        style OracleCloud fill:#0d47a1,stroke:#fff,stroke-width:3px,color:#fff

        %% Phoenix--- &PHOENIX Dobby(Server: getMedium 'serverBlue'Blue) ---
        subgraph PhoenixBox [Phoenix - Gateway]
            direction TB
            classstyle PhoenixBox serverBluefill:#1565c0,stroke:#fff,stroke-width:2px,color:#fff
            
            P_Traefik[Traefik Proxy]:::app
            P_WG[WireGuard Interface]:::app
            
            %% Stack: Grey
            subgraph P_Infra [Infrastructure]
                classstyle P_Infra stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                P_Fail2Ban[Fail2Ban]:::app
                P_Agent[Portainer Agent]:::app
            end
        end

        %% --- DOBBY (Server: Medium Blue) ---
        subgraph DobbyBox [Dobby - Game Node]
            direction TB
            classstyle DobbyBox serverBluefill:#1565c0,stroke:#fff,stroke-width:2px,color:#fff
            
            %% Stack: Grey
            subgraph D_Games [Game Stack]
                classstyle D_Games stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                D_Wing[Pterodactyl Wing]:::app
                D_MC[Minecraft Cluster]:::app
            end
            
            D_Agent[Portainer Agent]:::app
        end
    end

    %% ==========================================
    %% 4. HOME NETWORK (BottomOuter Lane)Box: Deep Green)
    %% ==========================================
    subgraph HomeNet [Home Network - Deltona]
        direction TB
        %%style Unifi,HomeNet Firebolt, Norbert, PiHole get 'serverGreen'fill:#1b5e20,stroke:#fff,stroke-width:3px,color:#fff

        Unifi[Unifi Router]:::serverGreenapp
        %% Manually styling Unifi to look like a server since it's a standalone node
        style Unifi fill:#2e7d32,stroke:#fff,stroke-width:2px,color:#fff

        %% --- FIREBOLT (Server: Medium Green) ---
        subgraph FireboltBox [Firebolt - Main Server]
            direction TB
            classstyle FireboltBox serverGreenfill:#2e7d32,stroke:#fff,stroke-width:2px,color:#fff
            
            F_Traefik[Traefik Internal]:::app
            F_WG[WireGuard Interface]:::app

            %% StacksInvisible container for layout
            subgraph F_Stacks [Apps & Services]
                style F_Stacks fill:none,stroke:nonenone,color:#fff

                %% Stacks: Grey
                subgraph F_Infra [Infrastructure]
                    classstyle F_Infra stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                    F_Auth[Authentik]:::app
                    F_Portainer[Portainer]:::app
                    F_Homepage[Homepage]:::app
                end

                subgraph F_Media [Media Stack]
                    classstyle F_Media stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                    F_Plex[Plex]:::app
                    F_Arr[Sonarr/Radarr]:::app
                    F_Down[qBit/VPN]:::app
                end

                subgraph F_Admin [Admin Tools]
                    classstyle F_Admin stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                    F_Bit[Vaultwarden]:::app
                    F_Book[BookStack]:::app
                    F_Dup[Duplicati]:::app
                end

                subgraph F_GameStack [Game Stack]
                    classstyle F_GameStack stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                    F_Panel[Ptero Panel]:::app
                    F_Wing[Ptero Wing]:::app
                end
            end
        end

        %% --- NORBERT (Server: Medium Green) ---
        subgraph NorbertBox [Norbert - Storage]
            direction TB
            classstyle NorbertBox serverGreenfill:#2e7d32,stroke:#fff,stroke-width:2px,color:#fff
            
            N_WG[WireGuard]:::app
            N_Store[Media Storage]:::app

            subgraph N_Apps [App Stack]
                classstyle N_Apps stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                N_Hass[Home Assistant]:::app
                N_LLM[LLMCord AI]:::app
            end

            subgraph N_Games [Game Node 1]
                classstyle N_Games stackfill:#455a64,stroke:#cfd8dc,stroke-width:1px,stroke-dasharray: 5 5,color:#fff
                N_Wing[Ptero Wing]:::app
                N_Ark[Ark / MC Test]:::app
            end
        end

        %% --- PIHOLE (Server: Medium Green) ---
        subgraph PiHoleBox [Raspberry Pi]
            direction TB
            classstyle PiHoleBox serverGreenfill:#2e7d32,stroke:#fff,stroke-width:2px,color:#fff
            PI_SVC[DNS Sinkhole]:::app
            PI_VPN[PiVPN Ingress]:::app
        end
    end

    %% ==========================================
    %% 5. TRAFFIC WIRING (Explicit Colors)
    %% ==========================================

    %% 0,GREEN: 1,Internet 2: PUBLIC INTERNET (Green)Ingress
    Internet ==>|HTTPS| P_Traefik
    Internet ==>|Ports| D_Games
    Internet ==>|Ports| Unifi
    linkStyle 0,1,2 stroke:#00e676,stroke-width:3px;

    %% 3,ORANGE: 4:The TUNNEL (Orange)Tunnel
    P_Traefik --> P_WG
    P_WG ==>|WireGuard Tunnel| F_WG
    linkStyle 3,4 stroke:#ff9100,stroke-width:4px;

    %% 5,BLUE: 6, 7, 8, 9, 10, 11:Internal LAN TRAFFIC (Blue)
    F_WG --> F_Traefik
    F_Traefik --> F_Infra & F_Media & F_Admin & F_GameStack
    F_Traefik -.-> N_Apps & PI_SVC
    linkStyle 5,6,7,8,9,10,11 stroke:#2979ff,stroke-width:2px;

    %% 12:ORANGE: SPLITSplit TUNNEL (Orange)Route
    P_WG -.->|Direct Route| N_WG
    linkStyle 12 stroke:#ff9100,stroke-width:3px,stroke-dasharray: 5 5;

    %% 13:BLUE: Internal LAN TRAFFIC (Blue)
    N_WG -.-> N_Games
    linkStyle 13 stroke:#2979ff,stroke-width:2px;

    %% 14, 15, 16, 17: PORT FORWARDINGGREEN (GreenDotted): Dotted)Port Forwarding
    Unifi -.->|32400| F_Plex
    Unifi -.->|Game Ports| F_GameStack
    Unifi -.->|Game Ports| N_Games
    Unifi -.->|51820| PI_VPN
    linkStyle 14,15,16,17 stroke:#00e676,stroke-width:2px,stroke-dasharray: 5 5;

    %% 18+:GREY: MANAGEMENT (Grey Default)Management
    F_Portainer -.-> P_Agent & D_Agent
    F_Down -.->|NFS| N_Store
    F_Panel -.-> D_Wing & N_Wing & F_Wing

    %% Apply Classes
    class OracleCloud cloud
    class HomeNet home

Color Legend

  • Green Lines (Public Internet): Traffic entering from the outside world.
  • Orange Lines (The Tunnel): Encrypted WireGuard traffic.
  • Blue Lines (Internal LAN): Local traffic routed by Traefik.
  • Blue Boxes: Servers located in Oracle Cloud (Phoenix, Dobby).
  • Green Boxes: Servers located in Home Network (Firebolt, Norbert, Pi).