Skip to content

Pure Phoenix Phase 3.6, DNS Migration Plan

URL: https://mkdocs.justinsforge.com/memory/handoffs/pure-phoenix-phase-3-6-dns-migration-2026-04-28/

Forge-side filesystem rename + prose sweep complete (sites/justinandkrystal.com/ to sites/justinkrystal.com/, 19 files updated). DNS records and tunnel ingress are next, staged here for confirmation before any live-traffic flip.

Active doctrine: FORGE-DOCTRINE.md. Default-domain rule: project_default_domain_justinsforge.md.

Discovery

justinandkrystal.com is not a Cloudflare zone. The live site has always been justinkrystal.com. The "rename" was textual only (forge prose + dir name). Live traffic is untouched.

Cloudflare zones currently owned (from cf.py zones)

gusoutdoor.co
gusthebass.com
justinkrystal.com
justinsforge.com
justinwieb.com
justinwiebelhaus.com
metaapplications.com
shopnovadesign.com
sipnservesociety.com
virtualrealityalliance.com

Both justinkrystal.com and justinsforge.com are present. No new zone purchases needed.

Current media-server tunnel ingress

22 entries today:

Hostname Origin Classification
landing.justinkrystal.com http://192.168.86.74:8085 personal/family (KEEP)
audiobooks.justinkrystal.com http://192.168.86.74:13378 personal/family (KEEP)
homeassistant.justinkrystal.com http://192.168.86.70:8123 borderline (decide)
books.justinkrystal.com http://192.168.86.74:8083 personal/family (KEEP)
justinkrystal.com http://192.168.86.74:8085 personal/family root (KEEP)
filebrowser.justinkrystal.com http://192.168.86.67:8080 borderline (decide)
invoiceninja.justinkrystal.com http://192.168.86.81:8082 DEAD (biz-apps CT 104 destroyed)
prowlarr.justinkrystal.com http://192.168.86.74:9696 forge-internal (MOVE to justinsforge.com)
requests.justinkrystal.com http://192.168.86.74:5055 personal/family (Overseerr, KEEP)
finn.justinkrystal.com https://100.112.22.2:8006 forge-internal (MOVE)
qtorrent.justinkrystal.com http://192.168.86.74:8080 forge-internal (MOVE)
portainer.justinkrystal.com https://192.168.86.74:9443 forge-internal (MOVE)
radarr.justinkrystal.com http://192.168.86.74:7878 forge-internal (MOVE)
sonarr.justinkrystal.com http://192.168.86.74:8989 forge-internal (MOVE)
appflowy.justinkrystal.com http://192.168.86.81:80 DEAD (biz-apps)
gizmo.justinkrystal.com http://192.168.86.81:8084 DEAD (biz-apps)
tanner.justinkrystal.com http://192.168.86.50:8080 LIKELY DEAD (TNappe Insurance is in cleanup target list)
frigate.justinkrystal.com http://192.168.86.84:5000 borderline (forge-internal management, but family-aware for cameras)
n8n.justinkrystal.com http://192.168.86.82:5678 forge-internal (MOVE)
inbox.justinkrystal.com http://192.168.86.50:7400 forge-internal (MOVE, Phase 4.6 inbox brain endpoint)
mkdocs.justinsforge.com http://192.168.86.50:8000 already on justinsforge.com (KEEP)
(fallback) http_status:404 (KEEP)

Proposed actions (require your sign-off before execution)

1. Remove dead ingress entries (3 records)

Remove from media-server tunnel:

  • invoiceninja.justinkrystal.com (CT 104 destroyed)
  • appflowy.justinkrystal.com (CT 104 destroyed)
  • gizmo.justinkrystal.com (CT 104 destroyed)

Reversibility: trivial. Re-adding is one cf-add call if ever needed.

2. Decide on borderline + suspect entries (4 records)

Hostname Question
homeassistant.justinkrystal.com KEEP (you/Krystal control house from phone), MOVE to justinsforge (forge-internal control plane), or both?
filebrowser.justinkrystal.com family-shared file browsing? if yes KEEP. If only your admin tool, MOVE.
tanner.justinkrystal.com TNappe Insurance is on the deletion list (Section 14B). Remove this ingress?
frigate.justinkrystal.com NVR UI: keep on justinkrystal so Krystal can also pull up cameras, OR move to justinsforge as forge-internal?

3. Move forge-internal subdomains to justinsforge.com (8 records)

For each, two-step: add new *.justinsforge.com entry, leave *.justinkrystal.com for one-week grace period as redirect/alias, then remove old.

New hostname Origin
prowlarr.justinsforge.com http://192.168.86.74:9696
finn.justinsforge.com https://100.112.22.2:8006
qtorrent.justinsforge.com http://192.168.86.74:8080
portainer.justinsforge.com https://192.168.86.74:9443
radarr.justinsforge.com http://192.168.86.74:7878
sonarr.justinsforge.com http://192.168.86.74:8989
n8n.justinsforge.com http://192.168.86.82:5678
inbox.justinsforge.com http://192.168.86.50:7400

4. Coordination tasks downstream of the DNS move

  • n8n credentials: any workflow with hardcoded n8n.justinkrystal.com URL needs updating to n8n.justinsforge.com. Audit before flipping. Most n8n workflows hit by IP not domain so likely zero touches; verify.
  • Cloudflare Access policies: if any apps have CF Access in front, the policies are zone-scoped. Need to mirror to justinsforge.com zone.
  • iOS Shortcuts: the inbox webhook endpoint Justin uses from his phone is configured by URL; needs update on the Shortcuts side after DNS flips.
  • Bookmarks (your phone, browsers): one-time refresh.
  • MEMORY.md / CLAUDE.md prose: scan for hardcoded subdomain refs after DNS flip.

Execution sequence (when you approve)

  1. Add the 8 new *.justinsforge.com ingress entries via /cf-add (additive, no traffic moves yet)
  2. Verify each new URL resolves to the expected origin via curl
  3. Update iOS Shortcut for inbox webhook
  4. One-week soft-cutover: both old and new URLs work
  5. Remove the 8 old *.justinkrystal.com ingress entries plus the 3 dead biz-apps entries (11 removals total)
  6. Decide on the 4 borderline/suspect entries per your call above
  7. Sweep MEMORY.md, CLAUDE.md, system-map, hooks for any hardcoded subdomain refs that need updating

Status

Step State
sites/justinandkrystal.com/ to sites/justinkrystal.com/ rename DONE 2026-04-28
19-file prose sweep (justinandkrystal to justinkrystal) DONE 2026-04-28
Dead-ingress removal (4 records: invoiceninja, appflowy, gizmo, tanner) DONE 2026-04-28
Forge-internal migration to justinsforge.com (11 records: prowlarr, finn, qtorrent, portainer, radarr, sonarr, n8n, inbox, homeassistant, filebrowser, frigate) DONE 2026-04-28
Active prose sweep for new subdomains DONE 2026-04-28 (4 active files updated: sites/justinkrystal.com/README.md, landing/index.html, landing/admin.html, infra/n8n/outbound-pattern.md)
Historical handoff/daily-log refs NOT updated (preserved as historical accuracy)
iOS Shortcut for inbox webhook YOUR ACTION: update Shortcut to point at https://inbox.justinsforge.com instead of https://inbox.justinkrystal.com
Browser bookmarks YOUR ACTION: refresh bookmarked admin URLs (n8n, radarr, sonarr, etc.)

Final tunnel ingress state (post-migration)

=== justinkrystal.com (personal/family, 5 entries + root) ===
landing.justinkrystal.com       -> http://192.168.86.74:8085
audiobooks.justinkrystal.com    -> http://192.168.86.74:13378
books.justinkrystal.com         -> http://192.168.86.74:8083
justinkrystal.com               -> http://192.168.86.74:8085
requests.justinkrystal.com      -> http://192.168.86.74:5055

=== justinsforge.com (forge-internal, 12 entries) ===
mkdocs.justinsforge.com         -> http://192.168.86.50:8000
prowlarr.justinsforge.com       -> http://192.168.86.74:9696
finn.justinsforge.com           -> https://100.112.22.2:8006
qtorrent.justinsforge.com       -> http://192.168.86.74:8080
portainer.justinsforge.com      -> https://192.168.86.74:9443
radarr.justinsforge.com         -> http://192.168.86.74:7878
sonarr.justinsforge.com         -> http://192.168.86.74:8989
n8n.justinsforge.com            -> http://192.168.86.82:5678
inbox.justinsforge.com          -> http://192.168.86.50:7400
homeassistant.justinsforge.com  -> http://192.168.86.70:8123
filebrowser.justinsforge.com    -> http://192.168.86.67:8080
frigate.justinsforge.com        -> http://192.168.86.84:5000

Both zones are protected by Cloudflare Access where applicable. 4 dead biz-apps + tanner ingress entries removed.

[Claude Code]