Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history

DEPLOY_VULTR.md

Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.

DEPLOY_VULTR.mdBlame71 lines · 1 contributor
d980ea8Claude1# DEPLOY_VULTR.md — Gluecron on the Vultr box (149.28.119.158)
2
3Current production home: **Vultr server at `149.28.119.158`**, which also
4runs another platform. That platform's **custom Bun service owns ports 80/443
5and terminates TLS**, so Gluecron does **not** use its bundled Caddy here.
6Instead Gluecron runs as an app-only container on `127.0.0.1:3000` and the
7existing Bun service reverse-proxies `gluecron.com` to it.
8
9```
10Internet ──443──> custom Bun service (existing) ──> 127.0.0.1:3000 (gluecron app)
11```
12
13## 1. DNS (Cloudflare, "DNS only" / grey cloud)
14
15| Type | Name | Content |
16|------|----------------|-------------------|
17| A | `gluecron.com` | `149.28.119.158` |
18| A | `www.gluecron.com` | `149.28.119.158` |
19
20Remove the old Vercel `www` CNAME and the `_vercel` TXT verification record.
21
22## 2. One-time box setup
23
24```sh
25command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh
26git clone https://github.com/ccantynz-alt/Gluecron.com.git /opt/gluecron
27cd /opt/gluecron
28git checkout claude/site-migration-vercel-XstpK
29cp .env.example .env
30# Edit .env — at minimum set DATABASE_URL (Neon) and APP_BASE_URL=https://gluecron.com
31nano .env
32```
33
34## 3. Deploy (app only — bundled Caddy is skipped)
35
36`docker-compose.override.yml` publishes the app on `127.0.0.1:3000` and
37disables git-over-SSH. Bring up only the `gluecron` service:
38
39```sh
40docker compose up -d --build gluecron
41docker compose exec gluecron bun run db:migrate # first deploy only
42curl -s localhost:3000/healthz # -> ok
43```
44
45## 4. Point the existing Bun proxy at it
46
47Add a virtual-host route in the custom Bun service so requests for
48`gluecron.com` (and `www.gluecron.com`) proxy to `http://127.0.0.1:3000`.
49The Bun service keeps owning TLS on :443.
50
51## 5. Verify
52
53```sh
54curl -sI https://gluecron.com/healthz # 200 ok, served via the Bun proxy
55```
56
57- `https://gluecron.com/healthz` → `ok`
58- `https://gluecron.com/readyz` → `ok`
59- `https://gluecron.com/status` → status page
60
61## Later redeploys
62
63```sh
64cd /opt/gluecron && git pull && docker compose up -d --build gluecron
65```
66
67## Rollback
68
69```sh
70cd /opt/gluecron && git checkout <prev-sha> && docker compose up -d --build gluecron
71```