Bootstrap Linux Runbook

Aug 2026 · Greenfield native install · Debian/Ubuntu (apt) · bare metal

Scope Active steps Deferred Access options Open items

Scope / assumptions

Order of operations active — do now

Assumes base system already normalized (see Deferred → Normalization script) before starting at step 1.

1 Node.js runtime — dependency for step 2

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash nvm install --lts
node -v && npm -v

2 CLI AI assistants — highest priority tier

curl -fsSL https://claude.ai/install.sh | bash
npm install -g @google/gemini-cli
curl -fsSL https://opencode.ai/install | bash
claude --version gemini --version opencode --version

Auth/login each — interactive, can't fully automate. Manual step per install.

3 Core dev tooling

git config --global user.name "Your Name" git config --global user.email "you@example.com"

Deferred not needed right now

Normalization script

Was section 1 — base system prep. Pulled out to script separately; runs before step 1 above once written.

sudo apt update && sudo apt full-upgrade -y sudo apt install -y curl git build-essential ca-certificates unzip

Automation wrapper

Final stage

Was section 6 / appendix.

Access options — reaching this runbook/script from a fresh laptop

For serving files from this machine to fresh laptops on the same network. Pick one, both work side by side.

Option A — by IP simplest

curl -fsSL http://192.168.8.209:8000/bootstrap.sh | bash

Reserve this IP via router DHCP reservation so it never changes.

Option B — by mDNS hostname confirmed working on this laptop

curl -fsSL http://Yoguillo2512.local:8000/bootstrap.sh | bash

No DNS server needed — Windows advertises this natively. Works if the fresh Linux box resolves .local names (true out of box on Ubuntu Desktop live ISOs).

Start the server on this machine

python -m http.server 8000

Run from the folder containing bootstrap.sh. Allow the port through Windows Firewall on the Private profile if prompted.

Open items to confirm before scripting