HOWTO: Run Talkyard on ARM64/AArch64 (Raspberry Pi, Apple Silicon) — experimental images
Following up on How hard would it be to build and run Talkyard on ARM64?: the port is done. Talkyard v1 now builds for ARM64/AArch64 (two names, one architecture — Docker says arm64, uname -m says aarch64) via a dual-arch extension of Ivan's Docker-only build pipeline — that pipeline is Ivan's own fork tooling, unofficial and not sanctioned by the Talkyard project; the Talkyard application code itself is unchanged upstream source. A complete stack runs behind Caddy at arm64.talkyard.dev.ivanthegeek.com (emulated for now — real-hardware validation is the next step).
The short version for self-hosters:
-
Eight runtime images per release are published at
forgejo.ivanthegeek.com/ivan/talkyard-<component>:<version>-<sha>-arm64—
anonymousdocker pullworks, no account needed. Browse tags at
https://forgejo.ivanthegeek.com/ivan/-/packages. -
Install = the standard talkyard-prod-one flow with two
.envchanges
(DOCKER_REG_ORG+PINNED_VERSION_TAG) and the usual host prep.
Full step-by-step guide, including the ARM-specific notes (Redis's kernel
probe, ElasticSearch, performance expectations on a Pi 5):https://github.com/IvanTheGeek/talkyard/blob/docker-only-build/docs/arm64-install.md
(same doc on Ivan's Forgejo, pick whichever you prefer:
https://forgejo.ivanthegeek.com/ivan/talkyard/src/branch/docker-only-build/docs/arm64-install.md) -
Hardware sweet spot: Pi 5 with 8 GB and an SSD, or any Apple Silicon Mac
(native arm64 containers, no emulation). A 64-bit OS is mandatory.
Live proof: the emulated instance itself is publicly reachable — https://arm64.talkyard.dev.ivanthegeek.com — and every container behind that page reports aarch64. Two honest caveats about it: it runs under qemu emulation on an already-busy dev VPS, so it is noticeably slower than real ARM hardware would be, and there is no promise about how long it stays up — it's an experiment, not a service.
Status and caveats: experimental, community-built, not official upstream images — and nothing here is endorsed by the Talkyard project. Notably, the application code needed zero changes: the entire port was packaging (one base-image tag plus build-pipeline work on Ivan's side). The whole stack has been verified end-to-end under qemu emulation (boots, migrates, serves HTTPS with all containers reporting aarch64); the images are rebuilt nightly by CI when the branch changes, with an emulated boot smoke-test gating publication. Multi-arch tags (one tag for every CPU) are planned next.
Questions and reports from anyone trying this on real ARM hardware are very welcome in this topic.