# Homelab TODO ## Security (do ASAP) - [x] Regenerate Wings token on N.O.M.A.D. (was exposed in chat) — completed 2026-05-15 - [x] Regenerate N.O.M.A.D. Newt secret (was exposed in chat) — completed 2026-05-15 ## Infrastructure - [x] Deploy Pi-hole HA on PD + N.O.M.A.D. with VIP `10.5.30.53` — completed 2026-05-15; historical design later superseded by the Technitium trio. As of 2026-05-27 the PD primary runtime at `/mnt/docker-ssd/docker/compose/pihole` has been retired, while the legacy VIP still survives from NOMAD's leftover stack at `/opt/pihole-nomad`; see docs/planning/DEPLOY_PIHOLE.md - PD primary retired 2026-05-27 after local resolver cutover to Technitium (`10.5.30.8/.9/.10` + `9.9.9.9`) - NOMAD legacy survivor still live at `/opt/pihole-nomad` - RPi4 remains optional future BACKUP2 work if you want a third node later - [x] Deploy Kima-Hub — completed 2026-05-06; docs/planning/DEPLOY_KIMA_HUB.md now serves as deployment/repair reference - [ ] Set up off-site backup for vital data (appdata, databases, config repo, photos) - [x] Remove dead Unraid-Cloudflared-Tunnel container from Serenity — completed 2026-05-25 - [ ] Serenity malcolm pool capacity planning (heavily utilized) - [ ] Design post-Serenity backup DNS lane (target: Pi 4B backup resolver outside PD's failure domain) - [ ] Redesign Pangolin/Newt so Serenity resources no longer require Serenity-local Newt - [ ] Define PD storage cutover model for qBittorrent/ARR locality migration off Serenity - [x] Add Pangolin resource for `openwebui.paccoco.com` → OpenWebUI (port 8282) — completed 2026-05-15 - [x] Add Cloudflare DNS record for `openwebui.paccoco.com` — completed 2026-05-15 - [ ] Install fresh editor on PD - [ ] Add a stable Doris/Home Assistant route and convert the Services page card from manual to live-probed - [x] Set up private Gitea repo for .env file backups — 2026-05-14 ## AI Stack - [x] Pull `qwen2.5:14b` on PD ollama — completed 2026-05-15 - [x] Create OpenWebUI account and set system prompt from HOMELAB_AI_CONTEXT.md — completed 2026-05-15 - [x] Disable signups in OpenWebUI after creating account — completed 2026-05-15 - [x] Connect Rocinante Ollama to OpenWebUI (Admin → Settings → Connections) — completed 2026-05-15 - [x] Confirm `OLLAMA_HOST=0.0.0.0` set on Rocinante and Ollama service restarted — completed 2026-05-15 ## Healthchecks - [ ] Add healthcheck to ix-plex-plex-1 - [ ] Add healthcheck to ix-tailscale-tailscale-1 - [ ] Add healthcheck to ix-newt-newt-1 - [ ] Add healthcheck to ollama (no curl/wget — needs /proc/net/tcp6 or custom solution) - [ ] Document and add healthchecks for meshtastic stack ## Documentation - [ ] Document meshtastic stack fully (see docs/reference/MESHTASTIC.md) - [x] Document N.O.M.A.D. Docker/container audit (compose-managed, Project N.O.M.A.D.-managed, unmanaged, and Pelican/Wings-managed containers) — 2026-05-14 - [x] Decide which services should run on NOMAD, which should not, and whether each should live under raw compose, Project N.O.M.A.D.-managed state, systemd, or another more explicit deployment model — 2026-05-14 - Project N.O.M.A.D.-managed app containers are explicitly hands-off and stay exactly as-is. - `whisper` and `node-exporter` may be removed; exact runtime was documented in `docs/servers/NOMAD.md` for emergency rebuild. - Pelican/Wings-managed game containers stay and are documented as permanent game-server infrastructure on NOMAD. ## n8n Workflows - [x] Create Gotify apps and n8n credentials: Reminders, n8n Health, Uptime / Infra — completed 2026-05-15 - [x] Add remaining env vars to n8n docker-compose + .env: `PAPERLESS_API_TOKEN`, `PAPERLESS_TAG_TRANSCRIPTION`, `PAPERLESS_TAG_LECTURE_NOTES`, `N8N_API_KEY` — completed 2026-05-15 - [x] Set up `PD SSH` credential in n8n for workflow 16 — completed 2026-05-15 - [x] Add sudoers NOPASSWD rule for n8n watchdog — completed 2026-05-15 - [x] Import and activate upgraded workflows: 04, 08 (01 done — v1.4 active and tested) — completed 2026-05-15 - [x] Import and activate new workflows: 14, 15 (16 already active) — completed 2026-05-15 - [x] Configure class profiles + Paperless metadata mapping for current courses (ENGL-1010, HIST-2020, future classes) — completed 2026-05-15 - [x] Delete legacy duplicate Paperless notes for school docs 42–49 after approval / with proper token context — completed 2026-05-14; docs now each have one canonical note - [x] Set up DB and Docker backups to Serenity following homelab SOP — completed 2026-05-15 - Live `.env`, SSH trust, scheduler deployment, first run, and verification completed on PD ## Completed - [x] Deploy Gotify (Phase 1) — 2026-05-05 - [x] Deploy AI stack — LiteLLM, OpenWebUI, Qdrant, Whisper, SearXNG (Phase 2) — 2026-05-05 - [x] Deploy n8n (Phase 3) — 2026-05-05 - [x] Deploy Paperless-NGX (Phase 4) — 2026-05-05 - [x] Deploy Home Assistant + Kima Hub (Phase 5) — 2026-05-06 - [x] Deploy Grafana + Prometheus (Phase 6) — 2026-05-06 - [x] Move reranker from PD (8787) to Serenity (9787) — 2026-05-09 - [x] Fill in port/URL columns in SERVICES_DIRECTORY.md — 2026-05-09 - [x] Create ROCINANTE.md server doc — 2026-05-09 - [x] Update all docs to reflect deployed state — 2026-05-09 - [x] Write n8n workflow upgrade + new workflow plans (01, 04, 08, 14, 15, 16) — 2026-05-09 - [x] Write Pi-hole 3-node HA deployment plan — 2026-05-09 - [x] Write Kima-Hub deployment plan — 2026-05-09 - [x] Create Postgres dedup tables (grafana_alert_dedup, n8n_health_dedup) in n8n_rss DB on PD — 2026-05-09 - [x] Workflow 01 fully tested end-to-end (dedup, LiteLLM, Gotify) — v1.4 active — 2026-05-09 - [x] Add LITELLM_API_KEY + N8N_BLOCK_ENV_ACCESS_IN_NODE to n8n docker-compose — 2026-05-09 - [x] Build Telegram chat-driven school-work intake for Paperless using shared Postgres, deterministic `intake_id`, and class/version metadata — 2026-05-14 - [x] Build Doris-managed KitchenOwl recipe importer flow with native-scrape fallback, schema.org JSON-LD parsing, duplicate checks, and dry-run support — 2026-05-15