331 lines
14 KiB
Markdown
331 lines
14 KiB
Markdown
# 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.
|