deckhearth/.convoys/migrate-neon-to-homelab.md
Randall Stillwell 1cc2e28423 Migrate Deck Hearth off Vercel/Neon to homelab Dokploy stack.
Replace @vercel/postgres, Blob, and Upstash with lib/sql.js, MinIO object
storage, and CT 102 Redis rate limits. Add Dockerfile for Dokploy deploy,
homelab runbooks, Neon data-copy helper, and point CI smoke/visual at the
homelab URL instead of Vercel previews.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-15 09:32:13 -05:00

2.3 KiB

name classification success_metric status created depends_on skip
migrate-neon-to-homelab infra Deck Hearth runs on CT 102 Postgres + MinIO + Redis, app on Dokploy (CT 112); Neon and Vercel hosting decommissioned; Vercel AI Gateway retained. in_progress 2026-08-15
ia
ui-design
ux
visual
a11y
design
flag

Convoy: migrate-neon-to-homelab

Move Deck Hearth from Neon (free tier full ~490 MB) to CT 102 Postgres on the axiom homelab. Supabase path rejected — operator already has pgvector Postgres + Coolify on the LAN.

Why homelab fits

Asset CT 102
Postgres pgvector/pgvector:pg17, port 5432
Disk /apps ZFS mirror — not capped at 512 MB
CI deckhearth_ci already used by migrate job
App host Dokploy on CT 112 (Traefik on CT 100)

Blocker: Vercel ↔ private IP

Vercel cannot connect to 192.168.68.102. Production cutover requires Dokploy deploy (deckhearth.stillwell.cloud) on CT 112.

Phases

Phase Work Owner Status
1 axiom-server: ct102/init/03-deckhearth.sql operator ready
2 lib/sql.js + import swap off @vercel/postgres code done
3 docs/HOMELAB_DATABASE.md runbook code done
4 Operator: provision DB, npm run migrate up operator done
5 MinIO + Redis wiring, Dockerfile, Dokploy docs code done
6 npm run migrate-neon-to-homelab data copy operator pending
7 Dokploy app + Traefik route operator in_progress
8 Decommission Neon + Vercel operator pending

Env contract

POSTGRES_URL=postgresql://deckhearth:…@192.168.68.102:5432/deckhearth
POSTGRES_URL_DIRECT=# same on homelab
NEON_DATABASE_URL=# one-time source only

axiom-server changes

  • proxmox/ct102/init/03-deckhearth.sqldeckhearth + pgvector + deckhearth_ci
  • .cursor/rules/ct102-databases.mdc — table row

tcg-vault changes

  • lib/sql.js, scripts/migrate-neon-to-homelab.js
  • docs/HOMELAB_DATABASE.md

Risks

Risk Mitigation
LAN-only DB Deploy app on Coolify, not Vercel prod
deckhearth_ci password drift Match HOMELAB_CI_POSTGRES_PASSWORD GitHub secret
Init SQL on live CT 102 Manual docker exec psql apply, not initdb.d replay