Common problems
The handful of things that trip up operators the first time, and the recovery commands for each.
"Preflight failed: unsupported Ubuntu version"
The launcher supports Ubuntu Server 22.04, 24.04, and 26.04 (soon to be released) only. If you see this, you're running on 20.04, a derivative, or a newer release that hasn't been tested.
Fix: reinstall Ubuntu at a supported version. The bootstrap intentionally
does not try to support arbitrary distros — the matrix of .deb transitive
dependencies is resolved at bundle-build time for specific suites.
"Preflight failed: must run as root"
The launcher writes to /etc/ssh/sshd_config.d/, installs .debs via
dpkg, creates users, and writes systemd units. It needs root.
Fix:
sudo ./aether-ops-bootstrap install --bundle bundle.tar.zst
If your environment disallows sudo for the file's current user, log in
directly as root (or change ownership / sudoers to permit it).
"Prior install exists"
The launcher refuses to run install on a host that already has a
successful state file. This is a safety feature — stomping an existing
install would wipe configuration.
Fix: pick the intent you actually had.
# Apply a delta from a newer bundle:
sudo ./aether-ops-bootstrap upgrade --bundle bundle.tar.zst
# Fix drift in-place (re-apply every component):
sudo ./aether-ops-bootstrap repair --bundle bundle.tar.zst
# Actually do want to reinstall from scratch:
sudo ./aether-ops-bootstrap install --bundle bundle.tar.zst --force
--force with install keeps the existing state file's history and
overwrites the rest. If you truly want a clean slate, also remove
/var/lib/aether-ops-bootstrap/state.json and stop and disable the
systemd units first — but almost nobody needs this.
"Bundle hash mismatch"
The bundle on disk doesn't match its .sha256. Either:
- The copy was corrupted in transit (retry the transfer), or
- The bundle was modified (don't install it; verify provenance).
Fix: re-copy the file from the source and re-run
sha256sum -c bundle.tar.zst.sha256.
"rke2-server did not become ready"
RKE2 started but its API didn't come up within the wait window. Usual causes:
- Firewall dropping traffic on port 6443 between the node and itself
(yes, really — check
iptables -Landufw status). - Disk pressure during image extraction — the image tarball expands to
several GB in
/var/lib/rancher/rke2/. Ensure you have 40 GB+ free. - Clock skew causing TLS validation to fail.
timedatectlto check.
Fix: look at the RKE2 journal to see the actual error.
sudo journalctl -u rke2-server --no-pager -n 200
Then:
sudo ./aether-ops-bootstrap repair --bundle bundle.tar.zst
to resume from where install bailed out.
"aether-ops did not become ready"
RKE2 is up but aether-ops' health endpoint never responded. Usually a config rendering issue or a port conflict.
sudo journalctl -u aether-ops --no-pager -n 200
sudo ss -tlnp | grep -E '8186|aether'
Fix: repair after resolving the underlying issue.
"Nothing happened — exit 0 but no install"
Almost always means you passed check (or --dry-run) instead of install.
Verify the subcommand:
sudo ./aether-ops-bootstrap install --bundle bundle.tar.zst
When in doubt: collect diagnostics
The launcher can package everything a support engineer needs into a single tarball:
sudo ./aether-ops-bootstrap diagnose --output /tmp
This collects:
/var/lib/aether-ops-bootstrap/state.json/var/lib/aether-ops-bootstrap/bootstrap.log- Recent
rke2-serverandaether-opsjournal entries - Relevant config files the launcher installed
Ship the resulting .tar.gz to whoever is helping you. A diagnostic bundle
is also written automatically to /tmp on any failed install.
See the troubleshooting reference for a deeper per-component fault tree.