Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# Ham Lab
|
|
|
|
Web-based Linux management console for bare-metal Debian, in the style of the Proxmox
|
|
web UI. Named after Ham the cat (see also HamTV).
|
|
|
|
Status: **v0.1** — persistent web terminals and a live Dashboard tab. Scope and roadmap in
|
|
[`PLAN.md`](PLAN.md).
|
|
|
|
## Runs on any Linux box
|
|
|
|
One static Go binary with the UI embedded; no cgo, no Node at runtime, no agents. The
|
|
Dashboard reads `/proc` and `/sys` directly (CPU, memory, hwmon or thermal-zone temps,
|
|
fans, NICs, block devices, mounts) so it works the same on x86 and ARM, bare metal or VM,
|
|
and just leaves a section empty when the hardware has nothing to report. UPS status is
|
|
optional and picked up from whichever of `pwrstat`, NUT (`upsc`) or `apcupsd` is
|
|
installed.
|
|
|
|
```sh
|
|
make build # web + Go, or: make build-arm64 for a cross-compile
|
|
./deploy/install.sh # installs the binary + a systemd unit for the invoking user
|
|
hamlab passwd # set the login password (config in ~/apps/hamlab/)
|
|
sudo systemctl start hamlab # listens on 127.0.0.1:8100 by default; set "listen" in config.json
|
|
```
|
|
|
|
Terminals run as the user the service runs as, with that user's login shell.
|
|
|
|
## Managing several machines
|
|
|
|
Install Ham Lab on each host. On the ones the hub should reach, add `"tls": "auto"` and a
|
|
LAN `listen` address to `config.json` (a self-signed certificate is generated on first
|
|
start). Then on the hub, open **Machines**, enter a name, the address
|
|
(`https://host:8100`) and that machine's Ham Lab password once. The hub pins the
|
|
certificate, keeps an access token, and every tab works against the chosen machine
|
|
through the switcher at the top of the rail.
|
|
|
|
- On `core` it is public at `https://hamlab.bigham.dev` behind Nginx Proxy Manager.
|
|
- Installable as a PWA.
|