14 KiB
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
- KSMD disabled on both hosts (saved ~10W)
- Syncthing rescan intervals increased (saved ~60-80W from TrueNAS CPU)
- CPU governor optimization (saved ~60-120W)
- PVE:
powersave+balance_powerEPP (amd-pstate-epp) - PVE2:
schedutil(acpi-cpufreq)
- PVE:
- ksmtuned service disabled on both hosts (saved ~2-5W)
- 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.