CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history
DO_THIS_NOW.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.
| e6f7b90 | 1 | # Do this now (gluecron live + admin) |
| 2 | ||
| 3 | One page. Five steps. Copy-paste in order. | |
| 4 | ||
| fe8ae12 | 5 | Prod box: **Hetzner Gluecron-1 at `178.104.208.252`** (Falkenstein, eu-central). |
| 6 | DNS target: `gluecron.com` + `www.gluecron.com` A-records → `178.104.208.252`, | |
| 7 | proxy status DNS only. | |
| 8 | ||
| 9 | ## 1. SSH to the Hetzner box | |
| e6f7b90 | 10 | |
| 11 | ```sh | |
| fe8ae12 | 12 | ssh root@178.104.208.252 |
| e6f7b90 | 13 | ``` |
| 14 | ||
| fe8ae12 | 15 | If SSH key isn't loaded, use the Hetzner Console's **"Open Console"** |
| 16 | button on the server detail page — it gives a browser-based root shell. | |
| 17 | ||
| 18 | ## 2. Install Docker (first-time only) | |
| 19 | ||
| 20 | ```sh | |
| 21 | command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh | |
| 22 | ``` | |
| e6f7b90 | 23 | |
| fe8ae12 | 24 | ## 3. Clone + configure (first-time only) |
| e6f7b90 | 25 | |
| 26 | ```sh | |
| 27 | git clone https://github.com/ccantynz-alt/Gluecron.com.git /opt/gluecron | |
| 28 | cd /opt/gluecron | |
| fe8ae12 | 29 | git checkout claude/new-session-xk1l7 |
| e6f7b90 | 30 | cp .env.example .env |
| fe8ae12 | 31 | nano .env # set DATABASE_URL (Neon connection string) — required |
| e6f7b90 | 32 | ``` |
| 33 | ||
| fe8ae12 | 34 | Later redeploy: |
| e6f7b90 | 35 | |
| 36 | ```sh | |
| 37 | cd /opt/gluecron && git pull && docker compose up -d --build | |
| 38 | ``` | |
| 39 | ||
| fe8ae12 | 40 | ## 4. Bring up the stack |
| e6f7b90 | 41 | |
| 42 | ```sh | |
| 43 | docker compose up -d --build | |
| 44 | docker compose logs -f caddy # ctrl-c once you see "certificate obtained" | |
| 45 | docker compose exec gluecron bun run db:migrate | |
| 46 | ``` | |
| 47 | ||
| fe8ae12 | 48 | If the cert handshake fails: confirm DNS resolves correctly |
| 49 | (`dig +short gluecron.com` should print `178.104.208.252`), and that | |
| 50 | Cloudflare proxy is OFF (grey cloud) so Let's Encrypt can hit port 80 | |
| 51 | directly. | |
| e6f7b90 | 52 | |
| fe8ae12 | 53 | ## 5. Register your account |
| e6f7b90 | 54 | |
| fe8ae12 | 55 | - Open https://gluecron.com/register |
| 56 | - Email + password. Use the email you want to be admin under. | |
| 57 | ||
| 58 | ## 6. Confirm + promote yourself to admin | |
| e6f7b90 | 59 | |
| 60 | ```sh | |
| 61 | docker compose exec gluecron bun run scripts/check-admin.ts you@example.com | |
| 62 | ``` | |
| 63 | ||
| fe8ae12 | 64 | If it says NOT admin: |
| e6f7b90 | 65 | |
| 66 | ```sh | |
| 67 | docker compose exec gluecron bun run scripts/promote-admin.ts you@example.com | |
| 68 | ``` | |
| 69 | ||
| fe8ae12 | 70 | Log out, log back in, visit https://gluecron.com/admin. |
| e6f7b90 | 71 | |
| fe8ae12 | 72 | ## 7. Verify (optional but quick) |
| e6f7b90 | 73 | |
| 74 | ```sh | |
| 75 | bash scripts/verify-deploy.sh https://gluecron.com | |
| 76 | ``` | |
| 77 | ||
| fe8ae12 | 78 | ## 8. Decommission the obsolete box |
| 79 | ||
| 80 | Once DNS resolves correctly to `178.104.208.252` and gluecron.com works | |
| 81 | from multiple networks (your phone on 4G is a good cache-bust), the old | |
| 82 | Vultr box at `45.76.171.37` can be destroyed via the Vultr dashboard. | |
| 83 | Don't rush this — give DNS 1–2 hours after the change. | |
| e6f7b90 | 84 | |
| 85 | --- | |
| 86 | ||
| 87 | ## Troubleshooting | |
| 88 | ||
| 89 | **Caddy logs say "acme: error issuing certificate":** DNS is wrong or | |
| 90 | Cloudflare proxy is on. Check `dig +short gluecron.com` returns | |
| fe8ae12 | 91 | `178.104.208.252` and that the orange cloud is grey in Cloudflare. |
| e6f7b90 | 92 | |
| 93 | **`docker compose exec` says "service is not running":** check | |
| 94 | `docker compose ps`. If gluecron is restarting, `docker compose logs gluecron`. | |
| 95 | Most common cause: `DATABASE_URL` wrong or Neon project paused. | |
| 96 | ||
| 97 | **`/register` returns 500:** DB migrations probably weren't run. Re-run | |
| 98 | `docker compose exec gluecron bun run db:migrate`. | |
| 99 | ||
| fe8ae12 | 100 | **Site still shows old content after DNS flip:** Cloudflare or local DNS |
| 101 | cache. Check from a phone on cellular (`https://gluecron.com`) to | |
| 102 | bypass home/office caches. |