Claude_Homelab/00_index.md

9.2 KiB

00 — Master Index

Last updated: 2026-06-18 Quick-reference card for Claude. Read this first, then load specific files only as needed.


🏠 Infrastructure Constants

Key Value
Proxmox host 192.168.1.48:8006
Gateway 192.168.1.1
NAS 192.168.1.12 (Synology, spendlikstation.local)
Domain spendlik.sk
WebSupport service ID 15056760
Gitea owner spendlik
MCP server mcp.spendlik.sk (CT 112, port 3500)
Proxmox kernel 6.14.11-5-pve PINNED — 6.17.x and 7.0.x installed but won't boot

🖥️ Container & VM Inventory

ID Hostname IP Domain Purpose
100 n8n 192.168.1.29 automation.spendlik.sk Workflow automation (Authelia protected)
101 reverse-proxy 192.168.1.10 nginx reverse proxy for all services
102 authelia 192.168.1.50 auth.spendlik.sk SSO / 2FA gateway
103 matrix-synapse 192.168.1.60 matrix.spendlik.sk Self-hosted messaging
104 snappymail 192.168.1.55 email.spendlik.sk Webmail (Authelia protected)
105 audiobookshelf 192.168.1.70 books.spendlik.sk Ebooks / audiobooks (NAS bind mount)
106 jellyfin 192.168.1.75 jellyfin.spendlik.sk Media server (NAS NFS mount)
107 wireguard 192.168.1.80 VPN (UDP 51820)
108 ddns 192.168.1.95 DDNS updater (WebSupport API v2)
109 gitea 192.168.1.90 git.spendlik.sk Self-hosted Git (v1.22.6, code indexer enabled)
110 windows11 (VM) 192.168.1.227 RTX 4060 passthrough, Rhino 7 + Sunshine/Moonlight
111 paperless 192.168.1.111 paperless.spendlik.sk Document management (6-lang OCR, media+data on NAS)
112 mcp-server 192.168.1.100 mcp.spendlik.sk MCP bridge — Proxmox + Gitea tools for Claude
113 (planned) 192.168.1.113 bambuddy.spendlik.sk Planned: BAMbuddy (Bambu A1 management)
114 (planned) 192.168.1.114 office.spendlik.sk Planned: Euro-Office (Docker)
115 vaultwarden 192.168.1.115 vault.spendlik.sk Password manager (Vaultwarden, Docker, Bitwarden-compatible)

Next available CT ID: 116 · Next available IP: 192.168.1.116 CT 113 removed (AppFlowy) — slot reused for BAMbuddy


🌐 WebSupport DNS Record IDs

Script location: /usr/local/bin/ddns-update.sh in CT 108. Full credentials map: secrets-index.md.

Subdomain Record ID
spendlik.sk 12631197
*.spendlik.sk 12631200
automation.spendlik.sk 306256338
matrix.spendlik.sk 307776273
email.spendlik.sk 308845857
auth.spendlik.sk 308994393
books.spendlik.sk 311013228
jellyfin.spendlik.sk 311384664
git.spendlik.sk 323271195
mcp.spendlik.sk 327475181
paperless.spendlik.sk 328109687
vault.spendlik.sk 330343277

⚠️ When adding a new subdomain: (1) create A record in WebSupport admin, (2) add to DDNS script with record ID, (3) add nginx vhost in CT 101, (4) run certbot, (5) inspect nginx config after certbot.


💻 Devices

Device OS Key Detail
Main PC CachyOS (Arch), KDE Plasma 6 / Wayland i7-13700K, RTX 4060 Ti, 32GB DDR5
Galaxy S25 Android WireGuard VPN client; MGit for Obsidian sync; Bitwarden
Galaxy Tab S9 Android MGit for Obsidian sync; Bitwarden
Bambu A1 + AMS Lite LAN Only Mode, OrcaSlicer

📁 Documentation Map

File Covers
homelab-overview.md Hardware specs, full container/VM table, NAS mounts, network diagram
cachy-overview.md CachyOS main PC — hardware, software, kernel, services, keyboard customisation
services.json Structured inventory of all containers/VMs — IPs, ports, stacks, compose paths
secrets-index.md Map of service credentials and WHERE they are stored (no actual secrets)
111_paperless_deployment.md CT 111 — Paperless-ngx Docker deploy, NAS migration, OCR, troubleshooting
115_vaultwarden_deployment.md CT 115 — Vaultwarden Docker deploy, nginx, SSL
12_euro_office_deployment.md CT 114 — Euro-Office Docker deploy (planned)

💡 Load only the file(s) relevant to the current task. Do not load all files by default. 💡 Use gitea_search_content to find relevant files by keyword instead of guessing filenames. 💡 Files 01_ through 11_ referenced previously do not exist — they were placeholders never written.


🔑 Key Gotchas

Area Warning
nginx / certbot Certbot corrupts configs — always inspect after issuance; check for duplicate server_name and missing closing braces
NFS mounts Use soft,timeo=30,retrans=3 — hard NFS can freeze Proxmox host
DDNS script /tmp/ddns_last_ip cache persists at runtime; cleared on reboot
WebSupport DNS Two separate management pages — missing the second caused an outage. DNS A record must exist before certbot can verify. Always update both pages.
Gitea writes Always read file content before writing — writes replace entire file
Proxmox kernel PINNED to 6.14.11-5-pve. Do NOT unpin or upgrade without verifying NVIDIA 550 DKMS support first
OpenRGB Uninstalled — SMBus interaction with ADATA XPG GAMMIX D35 poses hardware risk. Do not reinstall.
Hairpin NAT Slovak Telekom router blocks hairpin — test external domains from mobile data, not LAN
WebSupport API auth HMAC-SHA1 signed requests; X-Date header in YYYYMMDDTHHmmSSZ format; service ID is numeric 15056760
kocka-novinky.sk Wordfence blocks login — keep disabled. wp-config.php WP_SITEURL/WP_HOME hardcoded. Zen browser Content-Encoding issue — use Firefox/Chrome.
Paperless consume File watcher only detects new files — use document_consumer --oneshot for bulk imports
LXC Docker Requires --unprivileged 0 --features nesting=1 for Docker to work inside container

🔄 Active Projects (as of 2026-06-18)

Project Next Action Reference
kocka-novinky.sk automation Build n8n POC: Brickset → Claude API → WordPress lego-set + post CT 100
Paperless-ngx ~730 docs processing; next: Gemini post-processing setup CT 111
Gemini post-processing Get Gemini API key → install Python package in CT 111 CT 111
WireGuard DDNS Add vpn.spendlik.sk DNS record + update CT 108 script CT 107/108
Euro-Office Deploy CT 114 (office.spendlik.sk) CT 114 (planned)
BAMbuddy Check Bambu A1 Developer Mode → deploy CT 113 CT 113 (planned)
Bookmark manager Decide tool → deploy CT 116 CT 116 (planned)
Authelia enforcement Extend 2FA to Jellyfin, Audiobookshelf, Gitea CT 102/101

Full task list: obsidian-vault/Tasks.md


🧠 Life OS — Obsidian Vault Structure

Folder Purpose
00 Inbox Capture everything first
01 Goals Long-term goals
02 Projects Active projects (each has its own .md)
03 Areas Ongoing responsibilities (Homelab, Main PC, Personal Admin)
04 Daily Notes Daily log
05 Resources Reference material
06 Archive Completed projects
Tasks.md Master task dashboard (hand-curated)

Sync: Obsidian Git plugin on PC → Gitea spendlik/obsidian-vault; MGit on Android

📋 Vault Quick Reference — Known File Paths

File Purpose
Tasks.md Live task dashboard
05 Resources/Possible Purchases.md Purchase wishlist
05 Resources/3D Print Queue.md 3D print job queue
05 Resources/Proxmox LXC Templates.md LXC template reference
03 Areas/Personal Admin.md Personal admin tasks
03 Areas/Homelab.md Homelab recurring tasks
03 Areas/Main PC.md CachyOS main PC tasks

🛠️ Automation & Tools Stack

Layer Tool Location
Scheduling / plumbing n8n CT 100 / automation.spendlik.sk
AI content generation Claude API (claude-sonnet-4-20250514) via n8n HTTP node
Agentic coding assistant Claude Code 2.1.173 CachyOS / VSCodium extension
MCP tools Proxmox + Gitea + search CT 112 / mcp.spendlik.sk
Notifications Matrix CT 103 / matrix.spendlik.sk
DNS management WebSupport REST API v2 CT 108
Password manager Vaultwarden CT 115 / vault.spendlik.sk
Affiliate site WordPress on WebSupport kocka-novinky.sk

MCP Tools Available

Tool Description
proxmox_list_containers List all LXC/VMs with status
proxmox_get_resources Node CPU/RAM/disk usage
proxmox_get_container_status Status of specific CT by vmid
proxmox_start_container Start a stopped CT
proxmox_stop_container Stop a running CT
gitea_list_repos List repos for a user
gitea_read_file Read file from any repo
gitea_write_file Write/update file in any repo
gitea_list_files List files in a repo directory
gitea_search_content Full-text search across all .md files in a repo

🗃️ Gitea Repositories

Repo Visibility Purpose
Claude_Homelab Public Infrastructure docs, deploy guides, this index
obsidian-vault Private Life OS / second brain / task dashboard