deckhearth/docs/DOKPLOY_DEPLOY.md
Randall Stillwell 6ada83507c docs(dokploy): point deploy runbook at main branch
Homelab migration merged to main; Dokploy should track production there.

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

2.5 KiB

Deck Hearth on Dokploy (CT 112)

Homelab deploy: Postgres + Redis + MinIO on CT 102, app on Dokploy, public URL via CT 100 Traefik → CT 112.

1. Prerequisites (CT 102)

  • deckhearth Postgres — provision-deckhearth.sh
  • MinIO bucket — provision-deckhearth-minio.sh (axiom-server)
  • Neon data copy — npm run migrate-neon-to-homelab (optional)

2. Dokploy application

Dashboard: https://dokploy.stillwell.cloud

Setting Value
Source Git (Forgejo/GitHub) → this repo
Build type Dockerfile
Dockerfile path Dockerfile (repo root — must be pushed to GitHub)
Branch main (production)
Domain in Dokploy http://deckhearth.stillwell.cloud (use http://, not https://)
Port 3000

3. Environment variables (Dokploy → Environment)

# Database (CT 102)
POSTGRES_URL=postgresql://deckhearth:YOUR_PASSWORD@192.168.68.102:5432/deckhearth

# Redis rate limits (CT 102, DB index 5)
REDIS_URL=redis://:YOUR_REDIS_PASSWORD@192.168.68.102:6379/5

# MinIO object storage (CT 102)
S3_ENDPOINT=http://192.168.68.102:9000
S3_ACCESS_KEY_ID=deckhearth-app
S3_SECRET_ACCESS_KEY=YOUR_MINIO_SECRET
S3_BUCKET=deckhearth
S3_PUBLIC_BASE_URL=https://cdn.stillwell.cloud/deckhearth
S3_REGION=us-east-1

# Auth
JWT_SECRET=openssl rand -base64 32

# AI (kept on Vercel AI Gateway)
AI_GATEWAY_API_KEY=vck_…

# Email (external — Resend until self-hosted)
RESEND_API_KEY=re_…

# Cron (n8n on CT 105 hits this weekly)
CRON_SECRET=openssl rand -base64 24

# Optional
NODE_ENV=production

4. Traefik (CT 100)

Route added in axiom-server/proxmox/ct100/traefik/config/dynamic/ct112-dokploy.yml:

  • Host: deckhearth.stillwell.cloud
  • Backend: http://192.168.68.112:80 (Dokploy Traefik)

After editing locally: ./proxmox/scripts/sync.sh push-traefik

5. Catalog sync cron (replaces Vercel Cron)

Vercel vercel.json crons are removed. Schedule in n8n (CT 105) or cron:

curl -fsS -H "Authorization: Bearer $CRON_SECRET" \
  https://deckhearth.stillwell.cloud/api/cron/sync-catalog

Weekly: 0 6 * * 1 (Mondays 06:00).

6. Decommission Vercel

  1. Point DNS / AdGuard rewrite for deckhearth.stillwell.cloud at Traefik (already *.stillwell.cloud → CT 100).
  2. Disable Vercel project auto-deploy or delete project after Coolify/Dokploy is stable.
  3. Remove unused env vars from Vercel dashboard (Neon, Blob, Upstash).

7. Local dev

Same env vars in .env.local with homelab URLs (LAN required).

npm run dev