Command Line¶
Everything the admin panel does, the bambuddy-appliance command does too — the panel is a thin layer over this CLI, so there is exactly one code path that touches the appliance's state.
SSH is enabled by default:
Most subcommands need root. Prefix them with sudo.
Status and restart¶
bambuddy-appliance status # docker compose ps
bambuddy-appliance restart # restart the Bambuddy stack
Upgrades¶
# Health-checked, with automatic rollback if it doesn't come up
sudo bambuddy-appliance upgrade-bambuddy v0.2.5
# Debian packages. No rollback.
sudo bambuddy-appliance upgrade-os
# The current job's phase, as JSON
bambuddy-appliance upgrade-status
Only one upgrade may run at a time; a second one exits rather than racing the first. Jobs run detached, so an SSH disconnect mid-upgrade doesn't kill them — reconnect and poll upgrade-status.
See Updates & Backups for what each lane can and cannot undo.
Network aliases¶
Extra addresses on the LAN interface, one per virtual printer that needs its own.
bambuddy-appliance net-aliases # list, as JSON
sudo bambuddy-appliance net-alias-add 192.168.1.50/24
sudo bambuddy-appliance net-alias-remove 192.168.1.50/24
Aliases are additive and persist across reboots. The primary DHCP address, the gateway, and the interface's own configuration are never modified — by design, so this command cannot strand the appliance off its network.
Addresses in reserved ranges are rejected before anything is applied.
Tailscale¶
sudo bambuddy-appliance tailscale up # prints a sign-in URL
bambuddy-appliance tailscale status # tailnet IP, as JSON
sudo bambuddy-appliance tailscale down # disconnect, stay logged in
sudo bambuddy-appliance tailscale logout # forget the tailnet entirely
tailscale up prints a URL to open in a browser. Tailscale's own page handles first-time sign-up, so no console access or API key is needed. Once connected, status reports the 100.x address to paste into a slicer.
The admin password¶
Reads the new password from standard input rather than an argument, so it never lands in ps, your shell history, or a process listing. On a terminal it prompts; in a script, pipe it:
Only the hash is stored, in /etc/bambuddy/admin-auth. This is the same password the setup wizard sets, and it secures the admin panel, the console, and SSH.
Registration¶
Claims the unit with the fleet registrar, or sends a heartbeat if it's already claimed, and applies the resulting registration gate mode.
On a self-built image this command does nothing at all — there is no batch identifier, so it exits without contacting anything. A timer runs it in the background on reseller units; you should not normally need to call it by hand.
Files it owns¶
| Path | What |
|---|---|
/etc/bambuddy/bambuddy.env | Runtime environment for the Bambuddy container |
/etc/bambuddy/docker-compose.yml | The pinned container tag |
/etc/bambuddy/docker-compose.override.yml | Yours to write — e.g. bind-mounting extra file-manager roots |
/etc/bambuddy/admin-auth | Admin panel password hash |
/etc/bambuddy/provisioning.json | Reseller batch identifier, if any |
/var/lib/bambuddy/ | Bambuddy's database and uploads |
Don't hand-edit the compose file's image tag
upgrade-bambuddy rewrites it, and it is how the appliance knows what to roll back to.