a73x

46d2768e

feat(web): the join card is the whole recipe

a73x   2026-07-29 19:41

Commit message
feat(web): the join card is the whole recipe

The Add-host card prints the complete sequence a fresh machine needs —
download and checksum-verify the host bundle from /dl/ at the fleet's
release (the latest alias before the manifest is fetched), unpack,
install, join — matching the quickstart line for line.

web/src/routes/+page.svelte
Old New
@@ -25,6 +25,9 @@
25 // Case-insensitive substring match over the row's visible fields, so a 25 // Case-insensitive substring match over the row's visible fields, so a
26 // large fleet can be narrowed live from one box. 26 // large fleet can be narrowed live from one box.
27 const needle = $derived(filter.trim().toLowerCase()); 27 const needle = $derived(filter.trim().toLowerCase());
28 // The /dl/ path for the printed join instructions: the fleet's known release,
29 // falling back to the stable latest alias before the manifest is fetched.
30 const dlVersion = $derived(fleet.latest_version || 'latest');
28 const shownHosts = $derived( 31 const shownHosts = $derived(
29 fleet.hosts.filter( 32 fleet.hosts.filter(
30 (h) => 33 (h) =>
@@ -170,8 +173,12 @@
170 enrolls. 173 enrolls.
171 </p> 174 </p>
172 {#if joinBlob} 175 {#if joinBlob}
173 <p>From the unpacked host bundle, run on the new host:</p> 176 <p>Download and verify the host bundle, then run on the new host:</p>
174 <div class="enroll"> 177 <div class="enroll">
178 <code>curl -fsSLO "https://eitri.sh/dl/{dlVersion}/eitri_{dlVersion}_linux_amd64.tar.gz"</code>
179 <code>curl -fsSLO "https://eitri.sh/dl/{dlVersion}/SHA256SUMS"</code>
180 <code>sha256sum -c SHA256SUMS --ignore-missing</code>
181 <code>tar xzf eitri_{dlVersion}_linux_amd64.tar.gz && cd eitri_{dlVersion}_linux_amd64</code>
175 <code>sudo install -m 0755 eitri-agent /usr/local/bin/eitri-agent</code> 182 <code>sudo install -m 0755 eitri-agent /usr/local/bin/eitri-agent</code>
176 <code>sudo install -m 0644 eitri-agent.service /etc/systemd/system/eitri-agent.service</code> 183 <code>sudo install -m 0644 eitri-agent.service /etc/systemd/system/eitri-agent.service</code>
177 <code>sudo eitri-agent --state-dir /var/lib/eitri-agent join {joinBlob}</code> 184 <code>sudo eitri-agent --state-dir /var/lib/eitri-agent join {joinBlob}</code>
@@ -185,7 +192,11 @@
185 {:else if joinBlob || shownHosts.length === 0} 192 {:else if joinBlob || shownHosts.length === 0}
186 {#if joinBlob} 193 {#if joinBlob}
187 <div class="enroll"> 194 <div class="enroll">
188 From the unpacked host bundle, run on the new host: 195 Download and verify the host bundle, then run on the new host:
196 <code>curl -fsSLO "https://eitri.sh/dl/{dlVersion}/eitri_{dlVersion}_linux_amd64.tar.gz"</code>
197 <code>curl -fsSLO "https://eitri.sh/dl/{dlVersion}/SHA256SUMS"</code>
198 <code>sha256sum -c SHA256SUMS --ignore-missing</code>
199 <code>tar xzf eitri_{dlVersion}_linux_amd64.tar.gz && cd eitri_{dlVersion}_linux_amd64</code>
189 <code>sudo install -m 0755 eitri-agent /usr/local/bin/eitri-agent</code> 200 <code>sudo install -m 0755 eitri-agent /usr/local/bin/eitri-agent</code>
190 <code>sudo install -m 0644 eitri-agent.service /etc/systemd/system/eitri-agent.service</code> 201 <code>sudo install -m 0644 eitri-agent.service /etc/systemd/system/eitri-agent.service</code>
191 <code>sudo eitri-agent --state-dir /var/lib/eitri-agent join {joinBlob}</code> 202 <code>sudo eitri-agent --state-dir /var/lib/eitri-agent join {joinBlob}</code>