[spec] Hero OS bootstrap MUST work on any Ubuntu 24.04+ — root or unprivileged user #50
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Requirement
Hero OS bootstrap must work end-to-end on any Ubuntu 24.04+ environment:
rootor as an unprivileged user (e.g.driver)install_coredocuments and provisionsA fresh deploy following
docs/ops/DEPLOYMENT.mdshould reach a working Hero OS regardless of which of the above environments the operator chose. Today, several aspects of the install/start flow assume specifics that hold on TF Grid asrootbut fail elsewhere.Why this matters
The CEO is currently deploying on Hetzner as root and hitting issues that operators on TF Grid never see. Quote: "its a split root/user, so doesn't fully work — first setting the root well — rather manual, it seems the tfgrid is root so its easier to deploy."
If reproducibility is the goal (one of the stated philosophies of this stack — "infrastructure as code, white-label as code"), then the bootstrap flow being host-shape-coupled is a real gap.
Audit scope (where the assumptions hide)
Things to systematically verify and either fix or document:
1. Path assumptions in
hero_skills~/hero/bin/vs/root/hero/bin/— install paths assume invoking user's HOME. If install runs as root and runtime as driver, paths diverge.~/hero/code0/<repo>vs~/code/hero_skills/...— multiple anchors, inconsistent.$HERO_HOME/$HERO_ROOTDIRenv vars — partial coverage (only some modules respect them).2. CLI tool assumptions
redis-cli(today's livekit bug — issue on hero_skills#TBD)claudeClaude Code CLI (today's livekit bug)pandoc,python3-openpyxl,libreoffice(Office seed) — already installed byinstall_core, document explicitlyservice_X startflow calls via^cmd3. Hardcoded ports and addresses
service_livekit.nu— port 6379 (should be hero_db's actual port)10.1.2.xreferences should all be opt-in via env, not assumed4. systemd vs nohup
install_docker_btrfsusesnohupfor dockerdsystemctl enable dockerDEPLOYMENT.md §10; should also be enforced ininstall_core(auto-detect)5. Filesystem assumptions
chattr +C, /data partitioninstall_coreshould auto-detect and not require operator awareness6. User-execution model
install_coreis run asdriver(unprivileged) but usessudofor apt + Dockerservice_X installruns as the invoking userservice_X startregisters actions tied to the invoking user's hero_procAcceptance criteria
This issue is the umbrella; sub-issues will track individual fixes. The umbrella closes when:
install_corevalidates host shape (systemd present? btrfs?) and adapts, instead of requiring operator awarenessinstall_coreenforces^<tool>external CLI invocations inhero_skills/tools/modules/services/*.nuare either:install_core, orSub-tickets to spawn
service_livekit startredis-cli + claude bugs (already filed today as separate hero_skills issue)install_coreprovisionsinstall_core: validate host shape, fail fast with clear remediation if assumption violated; auto-detect systemd vs nohup~/hero/...references; honor$HERO_HOME/$HERO_ROOTDIRconsistently across all service modulesReferences
Signed-off-by: mik-tf
mik-tf referenced this issue2026-05-10 17:52:56 +00:00