Initial commit: Homelab infrastructure documentation
- CLAUDE.md: Main homelab assistant context and instructions - IP-ASSIGNMENTS.md: Complete IP address assignments - NETWORK.md: Network bridges, VLANs, and configuration - EMC-ENCLOSURE.md: EMC storage enclosure documentation - SYNCTHING.md: Syncthing setup and device list - SHELL-ALIASES.md: ZSH aliases for Claude Code sessions - HOMEASSISTANT.md: Home Assistant API and automations - INFRASTRUCTURE.md: Server hardware and power management - configs/: Shared shell configurations - scripts/: Utility scripts - mcp-central/: MCP server configuration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
330
INFRASTRUCTURE.md
Normal file
330
INFRASTRUCTURE.md
Normal file
@@ -0,0 +1,330 @@
|
||||
# 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.123 | 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.
|
||||
Reference in New Issue
Block a user