mirror of
https://github.com/lynchaos/ashvale-station.git
synced 2026-09-12 20:52:23 +00:00
Two routes onto a Pi. The image for a blank card, the script for a board that already works, which is most of them. deploy/install.sh installs apt dependencies, clones to /opt/ashvale, builds a venv with --system-site-packages, enables I2C and installs a systemd unit. Tested end to end on the real Zero 2 W by installing a second instance on port 8099 alongside the live station: both served, and the live station was untouched throughout. That test earned its keep twice. The installer first declared success while the service was crash-looping on a port clash, because systemd reports active for the instant between exec and the first failed bind; it now polls the HTTP endpoint instead, which is the only check that means anything. And my first attempt to verify that fix was itself worthless, because curl on 127.0.0.1:8000 was answered by the live station rather than the instance under test. deploy/pi-image is a pi-gen stage on Raspberry Pi OS Lite, Trixie, arm64, which is exactly what the board runs. Built by .github/workflows/image.yml against a pinned pi-gen commit, so the artifact does not move when an upstream branch does, and published to Releases where the 2 GB asset limit comfortably fits a Lite image. The image ships no password, no WiFi and no SSH host keys. Baked host keys would give every person who flashed it the same identity and make them trivially impersonable on their own network. Coordinates default to Greenwich at 0 m, wrong for everybody on purpose, because a plausible wrong altitude quietly biases the sea-level reduction on every row. The source is copied through a .gitignore filter rather than a hand-written exclude list, and that is a security property rather than tidiness: the hand-written list I wrote first missed HANDOVER.md, which is gitignored precisely because it contains LAN addresses and SSH details. Verified: 69 files, no state, no local notes, all essentials present.
27 lines
1.1 KiB
Plaintext
27 lines
1.1 KiB
Plaintext
# pi-gen configuration for the Ashvale Station image.
|
|
#
|
|
# Built on Raspberry Pi OS Lite (Trixie, arm64), which is what a Zero 2 W
|
|
# actually runs: aarch64, Debian 13. Lite because the station is headless and a
|
|
# desktop would eat the 512 MB budget the whole project is built around.
|
|
#
|
|
# Nothing secret belongs in this file. No password, no WiFi, no SSH host keys.
|
|
# The first two are supplied by the user in Raspberry Pi Imager, and the third
|
|
# is generated on first boot: an image with baked host keys gives every user
|
|
# the same key and makes them trivially impersonable on their own network.
|
|
|
|
IMG_NAME=ashvale-station
|
|
RELEASE=trixie
|
|
# ARCH is not set here: the arm64 branch of pi-gen exports it unconditionally,
|
|
# so a value here would be silently ignored and imply a choice that is not ours.
|
|
|
|
# Lite only. stage3 and up add the desktop.
|
|
STAGE_LIST="stage0 stage1 stage2 stage-ashvale"
|
|
|
|
# No default user. Raspberry Pi OS refuses to boot to a login without one, which
|
|
# is deliberate: it forces the person flashing the card to choose credentials in
|
|
# Imager rather than inheriting ours.
|
|
DISABLE_FIRST_BOOT_USER_RENAME=0
|
|
|
|
DEPLOY_COMPRESSION=xz
|
|
COMPRESSION_LEVEL=6
|