HopOS v1.5.4 — hairpin
Hairpin NAT. Publish ports outward, let DNS pick the host — and when that host happens to be your own node, the switch takes the shortcut. A slot dialing the node IP on a published port is redirected internally: DNAT + masquerade in a single pass over the two existing tables (no new state), delivered ring-to-ring — not a byte leaves the NIC. Reply recognition is unambiguous: only a neighbour slot can carry the node IP as a destination (masquerade replies arrive via the uplink). Covered both ways by hairpin_test.
This retires the last-but-one deliberate KISS gap from day one; the remaining one (node IP from inside for unpublished ports) stays — node services live on 10.100.0.1.
Prebuilt, signed boot images — https://gethop.org/hopos/ for the 5-minute quickstart.
- BOOTAA64.EFI — any UEFI arm64 box: copy to
EFI/BOOT/on a FAT USB stick, addhopos.cfg - hopos-rpi5.zip — Raspberry Pi 5: unzip onto the SD bootfs
- hopos-rpi4.zip — Raspberry Pi 4: unzip onto the SD bootfs
*-headless— the same images built withGUI=0: not a disabled GUI but zero GUI code linked. For UEFI, renameBOOTAA64-headless.EFItoBOOTAA64.EFIon the stick.
Verify: ssh-keygen -Y verify -f allowed_signers -I hello@gethop.org -n gethop-release -s SHA256SUMS.sig < SHA256SUMS && shasum -a 256 -c SHA256SUMS