Download
One binary. Nothing to install and no package manager: it runs
on any glibc-based Linux (Debian, Ubuntu, Fedora, Arch and the like — not
Alpine). Version 0.2.0, built from commit da0d656.
| Platform | File | Size |
|---|---|---|
| Linux x86-64 amd64 — most servers and VPSes |
grainfed-0.2.0-linux-amd64.tar.gz | 13.6 MiB |
| Linux ARM64 aarch64 — Raspberry Pi 4/5, Ampere, Graviton |
grainfed-0.2.0-linux-arm64.tar.gz | 12.3 MiB |
Verify what you downloaded
SHA256SUMS holds both, and the earlier 0.1.0 files:
curl -LO https://dl.grainfed.waxquixotic.com/grainfed-0.2.0-linux-amd64.tar.gz
curl -LO https://dl.grainfed.waxquixotic.com/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
| File | SHA-256 |
|---|---|
| linux-amd64 | f8fc0671b9f2ce6d9d5d47f3f06495f62992038908c803c36ccdbe3df3e9a2a0 |
| linux-arm64 | c2ab9d2ae68e138164eab2b69eea9fea9f4ca72532597223e4b8d6fd0738424d |
-trimpath given the same Go toolchain.
Install
tar xzf grainfed-0.2.0-linux-amd64.tar.gz
sudo install -m755 grainfed /usr/local/bin/grainfed
grainfed version
Full instructions are on Install. If you are replacing a running Pixelfed instance, start at Migrate instead.
Build it yourself
Go 1.26 or later, and nothing else — no C toolchain and no node:
git clone https://git.ntg.co/Quixotic/grainfed
cd grainfed
CGO_ENABLED=0 go build -trimpath -o grainfed ./cmd/grainfed
Cross-compiling is the same command with two variables, which is how the ARM64 build above is made:
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -o grainfed ./cmd/grainfed
What is not here
Only Linux, and only these two architectures. GrainFed is a server: it is built to sit behind a reverse proxy on a machine that stays on. Go will cross-compile it for macOS, BSD or 32-bit ARM from the command above if you have a reason to, but those builds are not tested and are not published.
The binary is one file, but it is not fully static: it uses the system's C
library, which is why Alpine and other musl systems are not supported. For
images it uses the system's libwebp, libheif and
libavif if they are installed (faster, and lighter on memory) and
otherwise falls back to copies built into the binary, so nothing else has to be
installed.
0.2.0 is current. It is Pixelfed 0.15.0 compatible and
carries everything on what's new: the new Pixelfed
mobile app, conversation messages, sign-up protection and the fixes found by
running it. It serves 947 of the 950 routes Pixelfed can serve, all 301 that
are a hard external contract among them, and it runs
one production instance. Take a backup before
cutover, and read the reversal path on
Migrate before you need it.
0.1.0 is still at its old address for anyone who needs it, but it predates Pixelfed 0.14 support and a number of fixes; use 0.2.0.