- Documents recent infrastructure cleanup (8 CTs destroyed, 35 DNS records removed, Headscale cleanup) - Adds 24 new runbooks covering Authentik, PeerTube, Meshtastic, RECON, Proxmox, Mailcow, Internet Archive, GPU routing - Adds project documentation for headscale, vaultwarden, peertube, matrix, mmud, advbbs, arr stack - Updates services.md, environment.md, caddy.md, authentik.md to match live infrastructure - Removes 4 deprecated runbook duplicates (canonical versions live in projects/) - Adds .gitignore for binary archives and editor temp files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 KiB
.ref/ Directory Audit — 2026-02-21
Auditor: Claude Code (cortex)
Hostname: cortex
Scope: Every file in /home/zvx/projects/.ref/ cross-referenced against live infrastructure state.
1. Dead Services to Remove
Wiki.js / docs.echo6.co — CONFIRMED DEAD
- Evidence: No Docker container running on Contabo.
docker ps -ashows no wiki-related containers. - Stale artifacts:
credentialslines 20-23:WIKIJS_ADMIN_EMAIL,WIKIJS_ADMIN_PASSWORD,WIKIJS_URLcredentialsline 35:WIKIJS_API_TOKEN(JWT, expires 2026-11-07)- GoDaddy DNS:
docs.echo6.costill resolves to199.6.36.163 - dnsmasq:
docs.echo6.costill has an entry pointing to100.64.0.1 docs/software/caddy.md: Still referenced under Contabo Caddy (not present in actual Caddyfile)docs/software/dns.md: Still listsdocs.echo6.counder home services
- Action: Remove credentials, delete DNS record, remove dnsmasq entry, remove from caddy.md and dns.md.
Echo6 Portal — CONFIRMED DEAD
- Evidence: Nothing listening on port 3002 on utility (192.168.1.241). No container found.
- Stale artifacts:
credentialslines 60-69:ECHO6_PORTAL_*credentials (admin user, OIDC client ID/secret, issuer URL)credentialsline 61: References deployment at192.168.1.241:3002
- Action: Remove credentials. Verify Authentik provider
echo6-portaldoesn't still exist (clean up if so).
Stalwart Mail — Already Decommissioned (Partially Cleaned)
- Status: Credentials correctly commented out in credentials file (lines 71-75).
- credentials line 72: Comment says "Authentik provider PK 53 may still exist" — Verified: PK 53 does NOT exist in Authentik. The comment is now misleading.
- Action: Update comment to state PK 53 was already cleaned, or remove the entire stale block.
2. Stale Credentials to Clean
OPENWEBUI_API_URL — Wrong IP
- File:
credentialsline 52 - Current value:
OPENWEBUI_API_URL=http://192.168.1.239:3000 - Problem: No known service at
192.168.1.239. Open WebUI runs on cortex at192.168.1.150:8080. - Action: Update to
http://192.168.1.150:8080orhttp://100.64.0.14:8080(Tailscale IP).
MESHMONITOR_TAILSCALE_URL — Wrong IP
- File:
credentialslines 124, 127 - Current value:
MESHMONITOR_TAILSCALE_URL="http://100.64.0.1:8080" - Problem:
100.64.0.1is Contabo, not MeshMonitor. MeshMonitor runs on utility CT 100, Tailscale IP100.64.0.7. - Action: Change to
http://100.64.0.7:8080.
Contabo Tailscale IP in credentials — Wrong
- File:
credentialsline 86 - Current value:
# Tailscale IP: 100.64.0.6 - Problem:
100.64.0.6is the data Proxmox node's Tailscale IP. Contabo's Tailscale IP is100.64.0.1. - Action: Change comment to
# Tailscale IP: 100.64.0.1.
Stale File Path Reference
- File:
credentialsline 33 - Current value:
# - File Location: /home/zvx/projects/selfhosting/.credentials - Problem: References an old path that no longer exists. Current location is
/home/zvx/projects/.ref/credentials. - Action: Update to current path or remove the comment.
3. Incorrect Values
Caddy Port: mail.echo6.co
- File:
docs/software/caddy.md— Contabo Caddy table - Documented:
reverse_proxy https://127.0.0.1:8443(port 8443) - Actual (live Caddyfile):
reverse_proxy https://127.0.0.1:8453(port 8453) - Also wrong in: Port Map table at bottom of
caddy.md(shows 8443) - Action: Update both references from 8443 to 8453.
Contabo Tailscale IP — Multiple Files Reference 100.64.0.6 Instead of 100.64.0.1
| File | Line/Section | Wrong Value | Correct Value |
|---|---|---|---|
credentials |
Line 86 | 100.64.0.6 |
100.64.0.1 |
projects/vaultwarden-deployment.md |
SSH commands | 100.64.0.6 |
100.64.0.1 |
projects/authentik-oidc-application.md (if exists as runbook) |
SSH commands | 100.64.0.6 |
100.64.0.1 |
runbooks/authentik-oidc-application.md |
SSH commands to Contabo | 100.64.0.6 |
100.64.0.1 |
runbooks/expose-service-contabo.md |
Step 5 verification dig command | 100.64.0.6 |
100.64.0.1 |
Root cause: 100.64.0.6 is the data Proxmox node. This was likely a copy-paste error from early infrastructure setup when Contabo's Tailscale IP may not have been settled.
Headscale Container Name — "headscale-vanilla" vs "headscale"
| File | Incorrect | Correct |
|---|---|---|
projects/headscale-full-deployment.md |
headscale-vanilla (throughout) |
headscale |
runbooks/proxmox-create-ubuntu-vm.md |
headscale-standby (lines 245, 257, 277) |
headscale |
Note: MEMORY.md already documents this: "Headscale container on Contabo is named headscale (not headscale-vanilla as in some runbooks)." The runbooks were never updated to match.
Utility Caddy Tailscale IP
- File:
projects/utility-caddy-initial-setup.md - Documented: Tailscale IP
100.64.0.2 - Actual:
100.64.0.8(per environment.md and live headscale node list) - Action: Update to
100.64.0.8.
Proxmox Onboard Node — Wrong Tailscale IPs for Cluster Nodes
- File:
runbooks/proxmox-onboard-node.md— "Current Cluster" table (lines 9-14) - Documented:
| Node | Tailscale IP (documented) | Tailscale IP (actual from environment.md) |
|---|---|---|
| data | 100.64.0.20 | 100.64.0.6 |
| utility | 100.64.0.19 | 100.64.0.5 |
| cloud | 100.64.0.22 | 100.64.0.4 |
| media | 100.64.0.21 | 100.64.0.3 |
Every single Tailscale IP in this table is wrong. These appear to be from a completely different assignment scheme. Additionally, the toc node (192.168.1.244 / 100.64.0.13) is missing from this table entirely.
PeerTube Rebuild — Wrong CT ID in Architecture Diagram
- File:
projects/peertube-rebuild.md - Phase 1 architecture diagram references CT 100 for PeerTube. Actual is CT 110.
- Note: The checklist section correctly references CT 110. Only the diagram is wrong.
Matrix Deployment — Stale Host References
- File:
projects/matrix-synapse-deployment.md - Problem: Still contains original CT 108 deployment instructions (utility node). Matrix was migrated to Contabo on 2026-02-15.
- dnsmasq section says point
matrix.echo6.coto100.64.0.8(utility Caddy). Actual dnsmasq points to100.64.0.1(Contabo). - Action: Add a prominent note at the top indicating this was migrated, or rewrite for Contabo deployment.
meshtastic-headscale-runbook.md — Wrong Debian Template Version
- File:
projects/meshtastic-headscale-runbook.md - References:
debian-12-standard_12.7-1_amd64.tar.zst - Actual (per MEMORY.md):
debian-12-standard_12.12-1_amd64.tar.zst
openwebui-theme-deploy.md — Wrong Home Directory
- File:
projects/openwebui-theme-deploy.md - References:
/home/matt/paths in some instructions - Actual: cortex user is
zvx, home directory is/home/zvx/
arr-wiring-runbook.md — Wrong File Paths
- File:
projects/arr-wiring-runbook.md - References:
./ref/services/usenet.md(lines 24, 51, 69) - Should be:
.ref/docs/services/usenet.md
ct-runbook.md — References stock Tailscale auth pattern
- File:
runbooks/ct-runbook.md - Problem: References
tskey-auth-*(stock Tailscale preauth key format) instead of Headscale registration pattern. Echo6 uses self-hosted Headscale where keys are generated viaheadscale preauthkeys create.
WATCHTOWER Deployment — Wrong Caddy Pattern
- File:
projects/cc-deploy-watchtower-v2.md - References: Docker-based Caddy with
~/docker/caddy/sites/site file pattern - Actual: Utility Caddy is systemd-based on CT 101 with
/etc/caddy/Caddyfile(single file, not per-site directory)
4. Duplicates / Contradictions
AUTHENTIK_API_TOKEN — Defined Twice
- File:
credentialsline 14 and line 111 - Values: Both contain the same token value:
YG24Zu7c7JNhrfC564N2NvJt2HmIr6Jyi9BgV629XGAZC70hvGbyNz8i4l7w - Action: Remove one instance. Keep the one at line 111 (has regeneration date context), remove line 14's duplicate.
FORGEJO_URL — Defined Twice
- File:
credentialsline 27 (FORGEJO_URL=https://forge.echo6.co) and line 100 (FORGEJO_URL="https://forge.echo6.co") - Action: Remove the earlier instance (line 27). The line 100 block has more complete Forgejo credentials.
dnsmasq: notes.echo6.co — Duplicate Entries with Different IPs
- Actual dnsmasq config has TWO entries for
notes.echo6.co:address=/notes.echo6.co/100.64.0.22(mesh-bridge CT 107 — incorrect target)address=/notes.echo6.co/100.64.0.1(Contabo — correct, LiveSync runs here)
- Action: Remove the
100.64.0.22entry. Only the100.64.0.1entry should remain.
authentik-access-groups.md vs authentik.md — Conflicting Group Members
authentik.mdlistsmedia-usersmembers as: jodie, mattauthentik-access-groups.mdlistsmedia-usersmembers as: jodie (no matt)- Action: Verify live state via Authentik API and update both docs to match. Matt may be in
authentik Admins(superuser) which bypasses group checks, making explicit media-users membership unnecessary.
authentik.md vs authentik-access-groups.md — Missing Groups
authentik.mdlistsai-usersgroup (PK0631b273-...) with member mattauthentik-access-groups.mddoes NOT listai-usersat all- Action: Add
ai-usersto access groups runbook reference table.
authentik.md vs authentik-access-groups.md — Missing Application Bindings
The access groups runbook is missing bindings for recently added applications:
- Open WebUI (PK 14) — should be bound to
ai-users - Matrix (PK 15) — should be bound to
communication-users - TAK Server — not listed anywhere
- Action: Update the Quick Reference tables in both documents.
5. Missing Documentation
TAK Server (tak.echo6.co) — Running, Undocumented
- Status: Deployed 2026-02-20 on Contabo. Docker containers running (
tak-server-deploy,sigil). Credentials exist incredentialsfile (lines 236-249). Caddy site blocks exist on Contabo. - Missing from:
docs/services/services.md— no TAK Server entrydocs/software/caddy.md— no tak.echo6.co site block documenteddocs/software/authentik.md— no TAK Server provider listeddocs/hardware/environment.md— Contabo services list doesn't mention TAK
- Action: Create
docs/software/tak.mdor add TAK Server entries to existing docs.
Obsidian LiveSync (notes.echo6.co) — Running, Partially Documented
- Status: Docker containers running on Contabo (
livesync-couchdb,livesync-provisioner). Credentials exist (lines 37-43). Caddy site block exists.projects/deploy livesync.mdexists as research doc. - Missing from:
docs/services/services.md— no LiveSync entrydocs/software/caddy.md— no notes.echo6.co Contabo site block documented
- Action: Add to services.md and caddy.md.
RECON LXC (CT 130) — Running, Missing from Infrastructure Docs
- Status:
docs/software/recon.mdexists and is thorough. But CT 130 is missing from:docs/hardware/environment.md— not in LXC Containers tabledocs/services/services.md— not listed
- Action: Add
| recon | data (CT 130) | 192.168.1.130 | 100.64.0.24 | RECON knowledge extraction pipeline |to both tables.
files.echo6.co — Referenced, Not Documented
- Status: Referenced in dnsmasq config, RECON docs, and landing page data export. Presumably an nginx file server on RECON (CT 130).
- Missing from:
docs/services/services.md— no entrydocs/software/caddy.md— no dnsmasq entry documented
- Action: Add to services.md and caddy.md dnsmasq section.
Undocumented Headscale Nodes
The headscale node list in docs/hardware/environment.md is missing several entries seen in live headscale nodes list:
| Node | Tailscale IP | Status | Notes |
|---|---|---|---|
| recon | 100.64.0.24 | Online | CT 130, documented in recon.md but not in environment.md |
| localhost | 100.64.0.12 | Last seen varies | Unknown purpose — possibly a test/dev registration |
| invalid-nwr32bou | 100.64.0.16 | Last seen varies | Unknown — possibly a stale/orphaned node registration |
- Also:
meshmon-nodeappears as hostname "advbbs" in headscale — may have been renamed/repurposed. - Action: Audit headscale node list, remove orphaned registrations, update environment.md.
Undocumented Contabo Docker Containers
Live docker ps on Contabo shows containers not documented anywhere:
sigil— TAK Server companion (web console), partially covered by TAK credentialstermix— Unknown purpose, not documented
Action: Identify what termix is and document both.
Usenet Credentials Not in Credentials File
- File:
docs/services/usenet.mdreferences API keys and passwords with "see .ref/credentials" - Problem: No SABnzbd, Sonarr, Radarr, or Prowlarr API keys exist in the credentials file
- Action: Either add the API keys to the credentials file or remove the reference in usenet.md.
6. Recommendations
Priority 1 — Fix Immediately (Data Integrity / Operational Risk)
-
Remove dead Wiki.js credentials from credentials file (lines 20-23, 35). These contain valid API tokens for a service that no longer exists.
-
Fix MESHMONITOR_TAILSCALE_URL (line 127) — currently points to Contabo instead of MeshMonitor. Any automation using this URL will target the wrong host.
-
Fix OPENWEBUI_API_URL (line 52) — points to a non-existent IP. Any automation using this will fail silently.
-
Fix dnsmasq duplicate for notes.echo6.co — the incorrect
100.64.0.22entry could cause intermittent routing failures depending on which entry dnsmasq uses. -
Fix proxmox-onboard-node.md Tailscale IPs — every IP in the cluster table is wrong. Anyone following this runbook will get incorrect SSH aliases.
Priority 2 — Documentation Accuracy
-
Update Contabo Tailscale IP from
100.64.0.6to100.64.0.1across all affected files (5+ files). -
Update Headscale container name from
headscale-vanilla/headscale-standbytoheadscalein deployment runbooks. -
Fix caddy.md mail port from 8443 to 8453.
-
Add TAK Server to services.md, caddy.md, and authentik.md.
-
Add RECON CT 130 to environment.md LXC table and services.md.
-
Add LiveSync/notes.echo6.co to services.md and caddy.md.
-
Remove stale AUTHENTIK_API_TOKEN duplicate and FORGEJO_URL duplicate from credentials.
Priority 3 — Cleanup
-
Remove Echo6 Portal credentials (lines 60-69) — service is dead.
-
Clean up Stalwart Mail comment (line 72) — remove misleading "PK 53 may still exist" text.
-
Delete GoDaddy DNS record for docs.echo6.co — service no longer exists.
-
Remove dnsmasq entry for docs.echo6.co.
-
Update stale file path reference on credentials line 33.
-
Audit headscale node list — clean up orphaned nodes (
localhost,invalid-nwr32bou), investigatemeshmon-node/advbbsrename, update environment.md. -
Investigate
termixcontainer on Contabo — document or remove. -
Update authentik-access-groups.md — add
ai-usersgroup, add Open WebUI/Matrix/TAK bindings to reference tables.
Files Audited
Credentials
/home/zvx/projects/.ref/credentials
Documentation
/home/zvx/projects/.ref/docs/hardware/environment.md/home/zvx/projects/.ref/docs/services/services.md/home/zvx/projects/.ref/docs/services/usenet.md/home/zvx/projects/.ref/docs/software/authentik.md/home/zvx/projects/.ref/docs/software/caddy.md/home/zvx/projects/.ref/docs/software/dns.md/home/zvx/projects/.ref/docs/software/recon.md/home/zvx/projects/.ref/docs/software/searxng.md
Project Files
/home/zvx/projects/.ref/projects/DEPLOY-API-KEYS-TAB.md/home/zvx/projects/.ref/projects/advbbs-project.md/home/zvx/projects/.ref/projects/arr-stack-runbook.md/home/zvx/projects/.ref/projects/arr-wiring-runbook.md/home/zvx/projects/.ref/projects/cc-deploy-watchtower-v2.md/home/zvx/projects/.ref/projects/deploy livesync.md/home/zvx/projects/.ref/projects/headscale-full-deployment.md/home/zvx/projects/.ref/projects/matrix-synapse-deployment.md/home/zvx/projects/.ref/projects/meshtastic-headscale-runbook.md/home/zvx/projects/.ref/projects/openwebui-theme-deploy.md/home/zvx/projects/.ref/projects/peertube-phase2-project.md/home/zvx/projects/.ref/projects/peertube-rebuild.md/home/zvx/projects/.ref/projects/utility-caddy-initial-setup.md/home/zvx/projects/.ref/projects/vaultwarden-deployment.md
Runbooks
/home/zvx/projects/.ref/runbooks/add-peertube-channel.md/home/zvx/projects/.ref/runbooks/authentik-access-groups.md/home/zvx/projects/.ref/runbooks/authentik-create-invitation.md/home/zvx/projects/.ref/runbooks/authentik-oidc-application.md/home/zvx/projects/.ref/runbooks/authentik-upgrade.md/home/zvx/projects/.ref/runbooks/binary-wrapper-interception.md/home/zvx/projects/.ref/runbooks/ct-runbook.md/home/zvx/projects/.ref/runbooks/expose-service-contabo.md/home/zvx/projects/.ref/runbooks/expose-service-home.md/home/zvx/projects/.ref/runbooks/gpu-cpu-fallback-routing.md/home/zvx/projects/.ref/runbooks/ia-cli-reference.md/home/zvx/projects/.ref/runbooks/ia-download-mirror.md/home/zvx/projects/.ref/runbooks/idahomesh-bridge-setup.md/home/zvx/projects/.ref/runbooks/idahomesh-vpn-device-setup.md/home/zvx/projects/.ref/runbooks/mailcow-create-mailbox.md/home/zvx/projects/.ref/runbooks/meshmonitor-password-reset.md/home/zvx/projects/.ref/runbooks/meshtasticd-sim-nodes-runbook.md/home/zvx/projects/.ref/runbooks/nordvpn-lxc.md/home/zvx/projects/.ref/runbooks/peertube-remote-runner.md/home/zvx/projects/.ref/runbooks/pg-backup.md/home/zvx/projects/.ref/runbooks/pi-nas-omv-runbook.md/home/zvx/projects/.ref/runbooks/pipeline-probe-gate.md/home/zvx/projects/.ref/runbooks/proxmox-create-ubuntu-vm.md/home/zvx/projects/.ref/runbooks/proxmox-onboard-node.md/home/zvx/projects/.ref/runbooks/recon-operations.md/home/zvx/projects/.ref/runbooks/recon-service-integration.md
Misc Files
/home/zvx/projects/.ref/echo6-landing-page-data-export.md/home/zvx/projects/.ref/ia-download-queue.md
Not Audited (Low-Risk Assets)
/home/zvx/projects/.ref/pp_comparison.json— data file, no infrastructure references/home/zvx/projects/.ref/.gitignore— git config/home/zvx/projects/.ref/assets/— static assets (CSS, JS, images, key_manager.py)
Summary Statistics
| Category | Count |
|---|---|
| Dead services identified | 2 (Wiki.js, Echo6 Portal) + 1 already decommissioned (Stalwart) |
| Stale credentials to clean | 4 entries (Wiki.js x3, Echo6 Portal x5, wrong URLs x2, stale path x1) |
| Incorrect values found | 15+ across 10+ files |
| Duplicate entries | 4 (AUTHENTIK_API_TOKEN, FORGEJO_URL, dnsmasq notes.echo6.co, group member lists) |
| Missing documentation items | 7 (TAK Server, LiveSync, RECON in env, files.echo6.co, headscale nodes, termix, usenet creds) |
| Total files audited | 44 |
| Files with issues | 24 |
| Files clean | 20 |
Audit completed: 2026-02-21 by Claude Code on cortex