feat(deploy): halkyon.li's forward through ramiel and its host at home (ADR 0039)

ramiel's HAProxy passes halkyon.li's TLS connections, unopened, through a
WireGuard tunnel to the instance at home, with the visitor's address in a
PROXY header, and everything else to ramiel's own Caddy, moved to the
loopback. Each end's nftables table lets the tunnel carry HAProxy's 443 and
the SSH jump's 22 alone, and nothing from home to ramiel.

The host at home: sshd with keys alone, the root disk unlocked over SSH at
boot (dropbear-initramfs, D20), Docker's and containerd's data bind-mounted
from the HDD, and home's end of the tunnel before Docker. An instance behind
the forward (compose.forwarded.yaml) publishes 443 on the tunnel's address
alone, trusts the PROXY header from ramiel alone, and gets its certificates
through TLS-ALPN, without HTTP/3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-08 19:05:47 +01:00
commit 29844c7fa6
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

6
deploy/host/fstab-docker Normal file
View file

@ -0,0 +1,6 @@
# Docker's and containerd's data on the HDD (ADR 0039, D12), as /home and snapd's folder
# are on this machine: bind mounts from /data, which its LUKS key file unlocks once the
# root disk is open. Added to /etc/fstab on the instance's host at home. containerd's
# too, as Docker 29 keeps images in containerd's store.
/data/docker /var/lib/docker none bind,x-systemd.requires-mounts-for=/data 0 0
/data/containerd /var/lib/containerd none bind,x-systemd.requires-mounts-for=/data 0 0