# 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 Trusted-VLAN design, later superseded after NOMAD moved to Servers (`10.5.30.7`) and its Trusted-side Keepalived role was disabled pending a same-subnet HA redesign; see docs/planning/DEPLOY_PIHOLE.md
  - PD primary live at `/mnt/docker-ssd/docker/compose/pihole`
  - NOMAD backup 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)
- [ ] Remove dead Unraid-Cloudflared-Tunnel container from Serenity
- [ ] Serenity malcolm pool capacity planning (heavily utilized)
- [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
