diff --git a/PROJECT_INSTRUCTIONS.md b/PROJECT_INSTRUCTIONS.md index 1ef0967..a7df4cd 100644 --- a/PROJECT_INSTRUCTIONS.md +++ b/PROJECT_INSTRUCTIONS.md @@ -120,12 +120,24 @@ When Spendlik asks for a deployment guide or a multi-step process: When a project is completed, always do **all** of the following: 1. **`obsidian-vault/Tasks.md`** — move project tasks to "Recently Completed" with date and brief context -2. **`obsidian-vault/02 Projects/.md`** — if a dedicated project file exists, check if it needs to be updated or archived to `06 Archive/` +2. **`obsidian-vault/02 Projects/.md`** — if a dedicated project file exists, update status to ✅ Complete and move to `06 Archive/` 3. **`Claude_Homelab/00_index.md`** — update Active Projects table, mark done or remove 4. **`Claude_Homelab/.md`** — create or update the relevant deploy guide with what was actually done > Always check the `obsidian-vault/02 Projects/` directory for a project file when completing work. If one exists, update or archive it. +### New Subdomain Checklist + +**Every time a new `*.spendlik.sk` subdomain is set up**, always do **all** of the following: + +1. **WebSupport DNS** — add A record pointing to public IP `178.41.205.8` (both management pages) +2. **DDNS updater (CT 108)** — add the subdomain to the DDNS script so it stays updated when the public IP changes +3. **nginx (CT 101)** — add reverse proxy vhost config +4. **certbot** — obtain Let's Encrypt SSL certificate, then manually inspect the nginx config after issuance +5. **`00_index.md`** — add the subdomain to the container/VM inventory table + +> ⚠️ Forgetting the DDNS updater means the subdomain will stop resolving after the next IP change. Always add it. + --- ## Critical Technical Gotchas @@ -139,6 +151,7 @@ These are environment-specific — do not rely on general knowledge, always appl | **Gitea writes** | Always read current file content first. `gitea_write_file` replaces the entire file — no partial edits. | | **Proxmox kernel** | PINNED to `6.14.11-5-pve` via `proxmox-boot-tool kernel pin`. 6.17.x and 7.0.x break NVIDIA 550 DKMS — do not upgrade or unpin without verifying NVIDIA support first. | | **WebSupport DNS** | Two separate management pages exist. Missing the second caused a service outage. Always update both. Record IDs are numeric, not domain strings. DNS A record must exist before certbot can verify. | +| **DDNS updater** | Every new `*.spendlik.sk` subdomain must be added to the DDNS script in CT 108. Missing this means the subdomain stops resolving after the next IP change. | | **DDNS cache** | `/tmp/ddns_last_ip` persists during runtime but clears on reboot — this is fine and expected. | | **Hairpin NAT** | Slovak Telekom router does not support hairpin NAT. Never test public domain access from inside the LAN. Always test from mobile data or an external connection. | | **OpenRGB** | Uninstalled. ADATA XPG GAMMIX D35 RAM uses an ENE SMBus controller unsupported on Linux. SMBus probing poses hardware risk — do not reinstall. |