From 2d1247fda28ef84d4bdc43815a326621390110c0 Mon Sep 17 00:00:00 2001 From: Spendlik Date: Tue, 11 Aug 2026 08:54:26 +0000 Subject: [PATCH] Add CT 114 (koillection) to live inventory as in-progress; document CNAME DNS architecture; add template-version gotcha; reference new Pre-Flight Verification protocol; note CT 113 discrepancy as active investigation item --- 00_index.md | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/00_index.md b/00_index.md index 9edc36f..8b49209 100644 --- a/00_index.md +++ b/00_index.md @@ -1,5 +1,5 @@ # 00 — Master Index -> Last updated: 2026-08-10 +> Last updated: 2026-08-11 > Quick-reference card for Claude. Read this first, then load specific files only as needed. --- @@ -36,17 +36,19 @@ | 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 | stirling-pdf | 192.168.1.113 | pdf.spendlik.sk | PDF toolkit — preprocessing for Paperless pipeline | +| 114 | koillection | 192.168.1.114 | collections.spendlik.sk | Collection manager — CT created 2026-08-11, **app deployment in progress** (Docker/Koillection/nginx/SSL/DNS still pending, see `114_koillection_deployment.md`) | | 115 | vaultwarden | 192.168.1.115 | vault.spendlik.sk | Password manager (Vaultwarden, Docker, Bitwarden-compatible) | -> ⚠️ CT 114 (Koillection) and CT 117 (Radicale) have deployment guides written but are **NOT yet deployed** — do not treat as live infrastructure. They will be added to this table once physically provisioned. -> Next available CT ID: **116** (Bookmark Manager, undecided tool) · CT 114 and 117 reserved for Koillection / Radicale respectively. +> ⚠️ CT 117 (Radicale) has a deployment guide written but is **NOT yet deployed** — do not treat as live infrastructure. It will be added to this table once physically provisioned. +> ⚠️ CT 113 (stirling-pdf) is documented elsewhere in this repo but does **not** appear in live `proxmox_list_containers` output as of 2026-08-11 — flagged for investigation, do not assume it's running without checking live state first. +> Next available CT ID: **116** (Bookmark Manager, undecided tool) · CT 117 reserved for Radicale. --- ## 🌐 WebSupport DNS Record IDs Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map: `secrets-index.md`. +> Since 2026-08-10: all subdomains are **CNAME → spendlik.sk**; only the root record holds an IP and is updated by the DDNS script. See `homelab-overview.md` DNS architecture section. | Subdomain | Record ID | |---|---| @@ -63,10 +65,10 @@ Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map | paperless.spendlik.sk | 328109687 | | vault.spendlik.sk | 330343277 | | pdf.spendlik.sk | *(add after DNS record created in WebSupport)* | -| collections.spendlik.sk | *(add after DNS record created in WebSupport — Koillection not yet deployed)* | +| collections.spendlik.sk | *(add after CNAME record created in WebSupport — Koillection app deployment in progress)* | | cal.spendlik.sk | *(add after DNS record created in WebSupport — Radicale not yet deployed)* | -> ⚠️ 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. +> ⚠️ When adding a new subdomain: (1) create **CNAME** record → `spendlik.sk` in WebSupport admin (never a per-subdomain A record), (2) add nginx vhost in CT 101, (3) run certbot, (4) inspect nginx config after certbot. No DDNS script edit needed — see above. --- @@ -85,13 +87,13 @@ Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map | File | Covers | |---|---| -| `homelab-overview.md` | Hardware specs, full container/VM table, NAS mounts, network diagram | +| `homelab-overview.md` | Hardware specs, full container/VM table, NAS mounts, network diagram, **DNS architecture (CNAME-based, updated 2026-08-10)** | | `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 | +| `PROJECT_INSTRUCTIONS.md` | Canonical behavioural/methodology reference — decision defaults, checklists, gotchas, **Pre-Flight Verification protocol (added 2026-08-11)** | | `113_stirling_pdf_deployment.md` | CT 113 — Stirling PDF Docker deploy, nginx, SSL, n8n API integration | -| `114_koillection_deployment.md` | CT 114 — Koillection Docker deploy, NAS uploads mount, collection setup — **guide only, not yet deployed** | +| `114_koillection_deployment.md` | CT 114 — Koillection Docker deploy, NAS uploads mount, collection setup — **IN PROGRESS: CT created 2026-08-11, app install pending** | | `115_vaultwarden_deployment.md` | CT 115 — Vaultwarden Docker deploy, nginx, SSL | | `117_radicale_deployment.md` | CT 117 — Radicale CalDAV/CardDAV deploy, nginx, SSL, Thunderbird/DAVx⁵ clients — **guide only, not yet deployed** | @@ -99,6 +101,7 @@ Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map > 💡 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. > 💡 For "is CT X running/deployed right now" questions, don't read docs — call `proxmox_list_containers` directly (single cheap live call, always accurate). +> 💡 Before running Phase 1 of any not-yet-executed deploy guide, verify volatile values (LXC template version, DNS record type) against `homelab-overview.md` and `obsidian-vault/05 Resources/Proxmox LXC Templates.md` — guides can go stale. See `PROJECT_INSTRUCTIONS.md` → Pre-Flight Verification. --- @@ -108,13 +111,14 @@ Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map |---|---| | **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. | -| **WebSupport DNS — duplicate A values** | WebSupport rejects (422) writing an A record whose IP value already exists on *any other record* in the zone, regardless of hostname. You cannot have two A records pointing at the same IP anywhere in the zone. Fix: all subdomains use CNAME → `spendlik.sk`; only the root A record ever holds an IP. | +| **DDNS script** | `/tmp/ddns_last_ip` cache persists at runtime; cleared on reboot. Since 2026-08-10 only updates the root A record — no per-subdomain edits needed. | +| **WebSupport DNS** | Two separate management pages — missing the second caused an outage. DNS record must exist before certbot can verify. Always update both pages. | +| **WebSupport DNS — subdomains are CNAME-only** | Since 2026-08-10: all `*.spendlik.sk` subdomains are CNAME → `spendlik.sk`. Only the root A record ever holds an IP — WebSupport rejects (422) writing an A record whose IP value already exists on *any other record* in the zone. | | **WebSupport API — PUT silently resets `name`** | A `PUT` to `/v2/service/{id}/dns/record/{recordId}` that omits the `name` field does NOT preserve the existing name — it silently renames the record to the bare zone apex. Always include `name` explicitly in PUT payloads, or avoid partial-field updates. | | **WebSupport API — POST `name` is relative** | Creating a record via POST: `name` is relative to the zone, not a full FQDN. Passing `"email.spendlik.sk"` creates `email.spendlik.sk.spendlik.sk`. Use the bare subdomain only (`"email"`, `"*"`, `"git"`). | | **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 | +| **LXC template versions** | Verify exact template filename in `obsidian-vault/05 Resources/Proxmox LXC Templates.md` (or live `pveam list local`) before every `pct create` — versions bump periodically and guides can reference stale strings. Once a container is created, template version is irrelevant — `apt upgrade` keeps it current, no need to recreate existing containers on a newer template. | | **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` | @@ -130,19 +134,20 @@ Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map --- -## 🔄 Active Projects (as of 2026-07-28) +## 🔄 Active Projects (as of 2026-08-11) | Project | Next Action | Reference | |---|---|---| +| Koillection | CT 114 created 2026-08-11 — continue with Phase 2 (Docker install) onward | CT 114 | | 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 | | Bookmark manager | Decide tool → deploy CT 116 | CT 116 (free) | | Authelia enforcement | Extend 2FA to Jellyfin, Audiobookshelf, Gitea | CT 102/101 | -| Koillection | Guide written (`114_koillection_deployment.md`) — not yet deployed | CT 114 | | Radicale (CalDAV) | Guide written (`117_radicale_deployment.md`) — not yet deployed | CT 117 | | Investigate pveproxy/NFS crash | Check dmesg/NFS logs around 2026-07-28 16:45–17:40 UTC to confirm root cause | Proxmox host | +| Investigate CT 113 discrepancy | Documented as deployed but absent from live `proxmox_list_containers` — confirm actual state | CT 113 | > Full task list: `obsidian-vault/Tasks.md` @@ -170,7 +175,7 @@ Script location: `/usr/local/bin/ddns-update.sh` in CT 108. Full credentials map | `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 | +| `05 Resources/Proxmox LXC Templates.md` | LXC template reference — **verify before every `pct create`** | | `03 Areas/Personal Admin.md` | Personal admin tasks | | `03 Areas/Homelab.md` | Homelab recurring tasks | | `03 Areas/Main PC.md` | CachyOS main PC tasks |