Bootstrap Linux Runbook — Aug 2026
Greenfield native install, Debian/Ubuntu (apt), bare metal. Priority: get CLI AI
assistants and installer tooling working first — everything else is secondary.
Scope / assumptions
- Fresh Debian/Ubuntu install, no prior config on this box.
- “Greenfield” = nothing to reuse from WSL2/Termux notes (different targets:
Windows subsystem / Android). This runbook is self-contained for native metal.
- Remote-usage check: Claude Code, Gemini CLI, OpenCode all require a local
binary/runtime on the machine that runs them — none has a zero-config
remote mode that avoids install here. So local install stays top priority,
not skipped in favor of remote.
- No GUI apps, no gaming, no browser extensions in this doc — out of scope.
(Prior notes on those live in the other files in this folder, untouched.)
Order of operations (active — do now)
Assumes base system already normalized (see deferred section below) before
starting at step 1.
1. Node.js runtime (dependency for step 2)
- Install via NodeSource or
nvm (nvm preferred — avoids sudo for global npm installs)
- Verify
node -v, npm -v
2. CLI AI assistants — highest priority tier
- Claude Code: native installer —
curl -fsSL https://claude.ai/install.sh | bash
- Gemini CLI:
npm install -g @google/gemini-cli
- OpenCode: native installer works directly on Linux metal (unlike Termux,
which needed proot-distro workarounds) — use standard install script from repo
- Verify each:
claude --version, gemini --version, opencode --version
- Auth/login each (interactive, can’t fully automate — flag as manual step)
git — set global user.name/email
- GitHub CLI:
gh via apt repo (gh auth login after)
- Docker Engine (not Docker Desktop — that’s Windows/Mac only):
official apt repo install, add user to
docker group
- Optional:
gh copilot / other CLI extensions if needed later
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
- Essential build/runtime deps:
curl, git, build-essential, ca-certificates, unzip
- Confirm shell (
bash/zsh) and default locale
Automation wrapper
- Once steps 1–3 above are confirmed working manually, consolidate into
bootstrap.sh
- Idempotent checks (
command -v X || install) per tool, matching pattern
already used in AI_Tools_Setup.ps1
- Held until you confirm/amend this runbook
Final stage
(was section 6 appendix)
- Desktop environment / GUI apps
- VPN, backup sync tools (Syncthing, Dropbox, etc.)
- Browser + extensions
- Anything gaming-related
Open items to confirm before scripting
- Exact OpenCode repo/install command to pin (check current docs — was noted
“not native in Termux” but should be a non-issue on real Linux)
- Whether Claude Code / Gemini CLI / OpenCode auth can be pre-seeded via env
vars/config file for unattended setup, or must stay manual per install
- Docker: needed day one, or defer to Final stage?