steid

@jamesgill /

fix: the domain is jpgill.dev, not jpgilldev.com

I inferred the domain from an email address and never asked, so the wrong one
was baked into install.sh's RELEASE_BASE_URL, the systemd unit's Documentation
line, the runbook, and a doc comment explaining the apex redirect. The release
URL is the one that mattered: it is a constant inside a script that other people
download, so it had to be right before anything was ever served.

Found while checking DNS delegation rather than by reading anything — the .dev
registry reports jpgill.dev's nameservers as Google's, while the Route 53 zone
holding the A record is not delegated to, which is why the authoritative AWS
server answered correctly and every public resolver returned nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JZwc7URWKVhkAuRTWiDmjA
JamesPatrickGill authored 1 day agoparent59d0001Browse files7da29e07af9ccb7492205f7936b881c4c83848f1

6 files changed+10 −10

deploy/steid.service+1 −1View file
@@ -12,7 +12,7 @@
1212
1313 [Unit]
1414 Description=Steid
15Documentation=https://jpgilldev.com/jamesgill/repos/steid
15+Documentation=https://jpgill.dev/jamesgill/repos/steid
1616 After=network-online.target
1717 Wants=network-online.target
1818
install.sh+1 −1View file
@@ -45,7 +45,7 @@ set -eu
4545 # profiles at /{handle}, so a root path would squat its own namespace. This is
4646 # also exactly where a real release feature would put these files, so published
4747 # links survive that feature landing.
48RELEASE_BASE_URL="${STEID_RELEASE_BASE_URL:-https://jpgilldev.com/jamesgill/repos/steid/releases}"
48+RELEASE_BASE_URL="${STEID_RELEASE_BASE_URL:-https://jpgill.dev/jamesgill/repos/steid/releases}"
4949
5050 # The version to install. Pinned rather than "latest" because there is no
5151 # redirect to resolve "latest" against, and a pinned default makes the upgrade
plans/current.md+1 −1View file
@@ -86,7 +86,7 @@ instance, and Steid's own source is pushed to it and browsable there.
8686 deliberately says nothing about licensing rather than guessing.
8787 - ~~Blocked on a domain transfer~~ — **transferred 2026-08-29**, so Phases 1–6 of the
8888 deployment runbook are unblocked.
89- **(historic) Blocked on a domain transfer** (noted 2026-08-29). `jpgilldev.com` is the
89+- **(historic) Blocked on a domain transfer** (noted 2026-08-29). `jpgill.dev` is the
9090 intended host for both the instance and the release downloads; the transfer is in
9191 flight. Phases 1–6 of the deployment runbook cannot start until DNS resolves, because
9292 Caddy requests a certificate on startup. Nothing else is blocked by it — the artifact
plans/runbook.md+4 −4View file
@@ -252,7 +252,7 @@ hand-carried between repos.
252252 ## Deploying this instance
253253
254254 The operator's path, as opposed to `README.md`, which is written for a stranger
255installing their own. `jpgilldev.com` serves two roles from one box: this instance,
255+installing their own. `jpgill.dev` serves two roles from one box: this instance,
256256 and the place everyone else downloads Steid from.
257257
258258 ### Order matters
@@ -281,7 +281,7 @@ and the place everyone else downloads Steid from.
281281 fails at certificate issuance, not at first request.
282282 - **Snapshots are not backups.** They are whole-disk and live in the same AWS account.
283283 The two state paths still want copying somewhere else.
2842. **DNS first, then install.** `dig +short jpgilldev.com` must return the box's IP
284+2. **DNS first, then install.** `dig +short jpgill.dev` must return the box's IP
285285 *before* `install.sh` runs. Caddy requests a certificate on startup; if DNS has not
286286 propagated it fails and backs off, and the resulting error points nowhere useful.
287287 3. **First install uses `--tarball`.** There is a bootstrap: this instance is what will
@@ -289,11 +289,11 @@ and the place everyone else downloads Steid from.
289289
290290 ```sh
291291 scp dist/steid-0.1.0-x86_64-unknown-linux-gnu.tar.gz install.sh root@<ip>:/root/
292ssh root@<ip> './install.sh --domain jpgilldev.com \
292+ssh root@<ip> './install.sh --domain jpgill.dev \
293293 --tarball ./steid-0.1.0-x86_64-unknown-linux-gnu.tar.gz'
294294 ```
295295
296Then `curl https://jpgilldev.com/healthz` — over https, with a real certificate.
296+Then `curl https://jpgill.dev/healthz` — over https, with a real certificate.
297297
298298 ### Becoming the distribution host
299299
plans/ui.md+2 −2View file
@@ -107,8 +107,8 @@ size last, and outside a page title, probably not at all.**
107107
108108 ### The front door
109109
110Steid is meant to be someone's site, reached at their own domain — `jpgilldev.com`, not
111`git.jpgilldev.com`, because a `git.` subdomain announces a Gitea clone and this is
110+Steid is meant to be someone's site, reached at their own domain — `jpgill.dev`, not
111+`git.jpgill.dev`, because a `git.` subdomain announces a Gitea clone and this is
112112 portfolio-first. That makes the root a signpost rather than a page: unclaimed it sends
113113 you to setup, and otherwise it forwards to a profile — your own when signed in, **the
114114 owner's when not**.
src/application/claim.rs+1 −1View file
@@ -23,7 +23,7 @@ pub async fn is_claimed(users: &impl UserRepository) -> Result<bool> {
2323
2424 /// The handle of the sole user, when this instance has exactly one.
2525 ///
26/// What makes a personal instance's front door work: `jpgilldev.com` should be the
26+/// What makes a personal instance's front door work: `jpgill.dev` should be the
2727 /// owner's profile, not a sign-in prompt, and the root needs to know whose profile that
2828 /// is without anyone being signed in.
2929 ///