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_METAL.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_METAL.mdBlame92 lines · 2 contributors
fe8ae12CC LABS App1# DEPLOY_METAL.md — Hetzner Gluecron-1 deploy
5843260Dictation App2
fe8ae12CC LABS App3Prod home: **Hetzner Cloud server `Gluecron-1`** at `178.104.208.252`
4(Falkenstein, eu-central, CPX22 x86 80GB). Replaces the obsolete Vultr
5box at `45.76.171.37`.
6
7This is the shortest path to gluecron.com being live on Hetzner. The
8`Dockerfile`, `docker-compose.yml`, and `Caddyfile` in the repo bring
9up the app + reverse proxy + auto-HTTPS in one command. Cloudflare DNS
10remains the resolver; Cloudflare proxying stays OFF so Let's Encrypt
11can complete HTTP-01.
5843260Dictation App12
13## What's already in place
14
fe8ae12CC LABS App15- DNS target: `gluecron.com` + `www.gluecron.com` A-records should point at
16 `178.104.208.252`, proxy status "DNS only" (grey cloud) in Cloudflare.
17 If they still point at `45.76.171.37`, fix that first.
18- `Dockerfile`, `docker-compose.yml`, `Caddyfile` are all in the repo.
19 `docker compose up -d` brings up both the app and Caddy (auto-HTTPS
20 via Let's Encrypt).
21- App exposes `/healthz`, `/readyz`, `/status`, `/metrics`.
5843260Dictation App22
23## One-time box setup
24
fe8ae12CC LABS App251. SSH in: `ssh root@178.104.208.252` (or use the Hetzner Console "Open Console" button)
5843260Dictation App262. Install Docker (skip if already installed):
27 ```sh
fe8ae12CC LABS App28 command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh
5843260Dictation App29 ```
303. Clone the repo:
31 ```sh
32 git clone https://github.com/ccantynz-alt/Gluecron.com.git /opt/gluecron
33 cd /opt/gluecron
fe8ae12CC LABS App34 git checkout claude/new-session-xk1l7 # while this branch is the deploy target
5843260Dictation App35 ```
fe8ae12CC LABS App364. Create `.env` (copy from `.env.example` and fill real values — at
5843260Dictation App37 minimum `DATABASE_URL` pointing at Neon):
38 ```sh
39 cp .env.example .env
fe8ae12CC LABS App40 nano .env
5843260Dictation App41 ```
42
43## Deploy
44
45```sh
46cd /opt/gluecron
47git pull
48docker compose up -d --build
49```
50
fe8ae12CC LABS App51First run: Caddy requests Let's Encrypt certs. Watch:
5843260Dictation App52```sh
53docker compose logs -f caddy
54```
55
56Once you see `certificate obtained successfully`, hit:
57- `https://gluecron.com/healthz` → `ok`
58- `https://gluecron.com/readyz` → `ok`
59- `https://gluecron.com/status` → status page
fe8ae12CC LABS App60- `https://gluecron.com/metrics` → Prometheus-format metrics
5843260Dictation App61
62## First-time DB migration
63
64```sh
65docker compose exec gluecron bun run db:migrate
66```
67
68## Later redeploys
69
70```sh
71cd /opt/gluecron && git pull && docker compose up -d --build
72```
73
74## Rollback
75
76```sh
77cd /opt/gluecron && git checkout <prev-sha> && docker compose up -d --build
78```
79
fe8ae12CC LABS App80## Decommission the old Vultr box
81
82The Vultr server at `45.76.171.37` was the previous home and now serves
83stale content. Once Hetzner Gluecron-1 is serving correctly and DNS has
84fully propagated (check from a phone on cellular), destroy the Vultr
85box via its provider dashboard.
86
87## When Crontech absorbs hosting
5843260Dictation App88
fe8ae12CC LABS App89Gluecron stays where it is. Crontech-prod-01 (Hetzner, `178.156.251.6`,
90Ashburn) becomes the deploy target for additional empire projects via
91the BLK-009 git-push pipeline. Gluecron-1 keeps serving the git host +
92CI surface; Crontech keeps serving the deploy + runtime surface.