Files
homelab-docs/INFRASTRUCTURE.md
2026-01-16 16:12:19 -05:00

14 KiB

Homelab Infrastructure Documentation

Network Topology

                                    ┌─────────────────┐
                                    │    Internet     │
                                    └────────┬────────┘
                                             │
                                    ┌────────▼────────┐
                                    │  Router/Firewall │
                                    │   10.10.10.1     │
                                    └────────┬────────┘
                                             │
                    ┌────────────────────────┼────────────────────────┐
                    │                        │                        │
           ┌────────▼────────┐      ┌────────▼────────┐      ┌────────▼────────┐
           │   Main Switch   │      │  Storage VLAN   │      │   Tailscale     │
           │   vmbr0/vmbr2   │      │     vmbr3       │      │  100.x.x.x/8    │
           │  10.10.10.0/24  │      │   (Jumbo 9000)  │      │                 │
           └────────┬────────┘      └────────┬────────┘      └─────────────────┘
                    │                        │
        ┌───────────┼───────────┐            │
        │           │           │            │
   ┌────▼───┐  ┌────▼───┐  ┌────▼───┐       │
   │  PVE   │  │  PVE2  │  │ Other  │       │
   │  .120  │  │  .102  │  │ Devices│       │
   └────┬───┘  └────┬───┘  └────────┘       │
        │           │                        │
        └───────────┴────────────────────────┘
                    │
            ┌───────▼───────┐
            │   TrueNAS     │
            │ (Storage via  │
            │  HBA/NVMe)    │
            └───────────────┘

IP Address Assignments

Management Network (10.10.10.0/24)

IP Address Hostname Description
10.10.10.1 router Gateway/Firewall
10.10.10.102 pve2 Proxmox Server 2
10.10.10.120 pve Proxmox Server 1 (Primary)
10.10.10.125 mac-mini Mac Mini (Syncthing node)
10.10.10.150 windows-pc Windows PC (Syncthing node)
10.10.10.147 macbook MacBook Pro (Syncthing node)
10.10.10.200 truenas TrueNAS (Storage/Syncthing hub)
10.10.10.220 gitea-vm Git Server
10.10.10.221 trading-vm AI Trading Platform

Tailscale Network (100.x.x.x)

IP Address Hostname Description
100.88.161.110 macbook MacBook
100.106.175.37 phone Mobile Device
100.108.89.58 mac-mini Mac Mini

Server Hardware

PVE (10.10.10.120) - Primary Virtualization Host

Component Specification
CPU AMD Ryzen Threadripper PRO 3975WX (32C/64T, 280W TDP)
RAM 128 GB DDR4 ECC
Boot Samsung 870 QVO 4TB (mirrored)
NVMe Pool 1 2x Sabrent Rocket Q NVMe (nvme-mirror1, 3.6TB)
NVMe Pool 2 2x Kingston SFYRD 2TB (nvme-mirror2, 1.8TB)
GPU 1 NVIDIA Quadro P2000 (75W) - Plex transcoding
GPU 2 NVIDIA TITAN RTX (280W) - AI workloads
HBA LSI SAS2308 - Passed to TrueNAS
NVMe Controller Samsung PM9A1 - Passed to TrueNAS

PVE2 (10.10.10.102) - Secondary Virtualization Host

Component Specification
CPU AMD Ryzen Threadripper PRO 3975WX (32C/64T, 280W TDP)
RAM 128 GB DDR4 ECC
NVMe Pool 2x NVMe (nvme-mirror3)
HDD Pool 2x WD Red 6TB (local-zfs2, mirrored)
GPU NVIDIA RTX A6000 (300W) - AI Trading

Virtual Machines

PVE (10.10.10.120)

VMID Name vCPUs RAM Storage Purpose Passthrough
100 truenas 8 32GB rpool NAS/Storage LSI SAS2308 HBA, Samsung NVMe
101 saltbox 16 16GB rpool/nvme-mirror1/2 Media automation TITAN RTX
105 fs-dev 10 8GB nvme-mirror1 Development -
110 homeassistant 2 2GB nvme-mirror2 Home automation -
111 lmdev1 8 32GB nvme-mirror1 AI/LLM development TITAN RTX
201 copyparty 2 2GB nvme-mirror1 File sharing -
206 docker-host 2 4GB rpool Docker services -

PVE2 (10.10.10.102)

VMID Name vCPUs RAM Storage Purpose Passthrough
300 gitea-vm 2 4GB nvme-mirror3 Git server -
301 trading-vm 16 32GB nvme-mirror3 AI trading platform RTX A6000

LXC Containers

PVE (10.10.10.120)

VMID Name Purpose Status
200 pihole DNS/Ad blocking Running
202 traefik Reverse proxy Running
205 findshyt Custom application Running
500 dev1 Development Stopped

Storage Architecture

PVE (10.10.10.120)
├── rpool (Samsung 870 QVO 4TB mirror)
│   ├── Proxmox system
│   ├── VM 100 (truenas) boot
│   ├── VM 101 (saltbox) boot
│   └── VM 206 (docker-host)
│
├── nvme-mirror1 (Sabrent Rocket Q mirror, 3.6TB)
│   ├── VM 101 (saltbox) data
│   ├── VM 105 (fs-dev)
│   ├── VM 111 (lmdev1)
│   └── VM 201 (copyparty)
│
└── nvme-mirror2 (Kingston SFYRD mirror, 1.8TB)
    ├── VM 101 (saltbox) data
    └── VM 110 (homeassistant)

PVE2 (10.10.10.102)
├── nvme-mirror3 (NVMe mirror)
│   ├── VM 300 (gitea-vm)
│   └── VM 301 (trading-vm)
│
└── local-zfs2 (WD Red 6TB mirror)
    └── Backup/archive storage

TrueNAS (VM 100 on PVE)
├── HBA Passthrough (LSI SAS2308)
│   └── [Physical drives managed by TrueNAS]
│
└── NVMe Passthrough (Samsung PM9A1)
    └── [NVMe drives managed by TrueNAS]

Services Map

┌─────────────────────────────────────────────────────────────────┐
│                         EXTERNAL ACCESS                          │
├─────────────────────────────────────────────────────────────────┤
│  Tailscale VPN ──► All services accessible via 100.x.x.x        │
│  Traefik (CT 202) ──► Reverse proxy for web services            │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                          CORE SERVICES                           │
├─────────────────────────────────────────────────────────────────┤
│  PiHole (CT 200) ──► DNS + Ad blocking                          │
│  TrueNAS (VM 100) ──► NAS, Syncthing, Storage                   │
│  Gitea (VM 300) ──► Git repository hosting                      │
│  Home Assistant (VM 110) ──► Home automation                    │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                         MEDIA SERVICES                           │
├─────────────────────────────────────────────────────────────────┤
│  Saltbox (VM 101) ──► Plex, *arr stack, media automation        │
│  CopyParty (VM 201) ──► File sharing                            │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                       DEVELOPMENT/AI                             │
├─────────────────────────────────────────────────────────────────┤
│  Trading VM (VM 301) ──► AI trading platform (RTX A6000)        │
│  LMDev1 (VM 111) ──► LLM development (TITAN RTX)                │
│  FS-Dev (VM 105) ──► General development                        │
│  Docker Host (VM 206) ──► Containerized services                │
└─────────────────────────────────────────────────────────────────┘

Syncthing Topology

                    ┌─────────────────┐
                    │    TrueNAS      │
                    │  (Hub/Server)   │
                    │  Port 20910     │
                    └────────┬────────┘
                             │
         ┌───────────────────┼───────────────────┐
         │                   │                   │
    ┌────▼────┐        ┌────▼────┐        ┌────▼────┐
    │ MacBook │        │ Mac Mini│        │ Windows │
    │ .147    │        │ .123    │        │ PC .150 │
    └─────────┘        └─────────┘        └─────────┘

Synced Folders:
├── antigravity (310MB)
├── bin (23KB)
├── claude-code (257MB)
├── claude-desktop (784MB)
├── config (436KB)
├── cursor (459MB)
├── desktop (7.2GB)
├── documents (11GB)
├── dotconfig (212MB)
├── downloads (38GB)
├── movies (334MB)
├── music (606KB)
├── notes (73KB)
├── pictures (259MB)
└── projects (3.1GB)

Power Consumption

Estimated Power Draw

Component Idle Load Notes
PVE CPU 50W 280W TR PRO 3975WX
PVE2 CPU 50W 280W TR PRO 3975WX
TITAN RTX 20W 280W Passthrough to saltbox/lmdev1
RTX A6000 25W 300W Passthrough to trading-vm
Quadro P2000 10W 75W Plex transcoding
Storage (per server) 30W 50W NVMe + SSD mirrors
Base system (each) 50W 60W Motherboard, RAM, fans

Total Estimates

  • Idle: ~400-500W combined
  • Moderate load: ~700-900W combined
  • Full load: ~1200-1400W combined

Power Optimizations Applied

  1. KSMD disabled on both hosts (saved ~10W)
  2. Syncthing rescan intervals increased (saved ~60-80W from TrueNAS CPU)
  3. CPU governor optimization (saved ~60-120W)
    • PVE: powersave + balance_power EPP (amd-pstate-epp)
    • PVE2: schedutil (acpi-cpufreq)
  4. ksmtuned service disabled on both hosts (saved ~2-5W)
  5. HDD spindown on PVE2 - 30 min timeout (saved ~10-16W)
    • local-zfs2 pool (2x WD Red 6TB) essentially empty

Total estimated savings: ~142-231W


SSH Access

Credentials

Host IP Address Username Password Notes
Hutson-PC 10.10.10.150 claude GrilledCh33s3# Windows PC
MacBook 10.10.10.147 hutson GrilledCh33s3# MacBook Pro
TrueNAS 10.10.10.200 truenas_admin GrilledCh33s3# SSH key configured

SSH Keys

The Mac Mini has an SSH key configured at ~/.ssh/id_ed25519 for passwordless authentication to Proxmox hosts and other infrastructure.

For Proxmox servers (PVE and PVE2), SSH access is configured in ~/.ssh/config:

Host pve
    HostName 10.10.10.120
    User root
    IdentityFile ~/.ssh/ai_trading_ed25519

Host pve2
    HostName 10.10.10.102
    User root
    IdentityFile ~/.ssh/ai_trading_ed25519

Credentials Management

Sensitive credentials are stored in /Users/hutson/Projects/homelab/.env for use with infrastructure management scripts and automation.

This file contains:

  • Service passwords
  • API keys
  • Database credentials
  • Other sensitive configuration values

Note: The .env file is git-ignored and should never be committed to version control.


Configuration Backups

Configuration files are backed up in /Users/hutson/Projects/homelab/configs/ directory.

Current Backups

File Description
ghostty.conf Ghostty terminal emulator configuration

This directory serves as a centralized location for storing configuration backups from various systems and applications in the homelab environment.