Skip to content

Install lemonfiber

lemonfiber is a single binary. Getting it onto the machine is the easy part; the things it needs to find there are worth checking first.

Docker, with Compose. lemonfiber drives docker compose underneath. It does not install Docker for you. Setup runs a preflight before it asks you anything and tells the two failures apart: Docker not installed, and Docker installed but its daemon not running. The remedies are entirely different, so the messages are too.

One mount point for downloads and media. Both live under a single directory — the data root — which is bind-mounted into every container. They must share one filesystem, because that is what lets an import hardlink instead of copy. Setup tests this empirically: it creates a link in the location you chose and inspects it, rather than guessing from the filesystem’s name. If the location cannot hardlink, you are told the consequence in concrete terms and offered somewhere else. See Hardlinks and one mount point.

On Windows this is the one rule that bites: the data root must live inside the WSL2 filesystem, not on a Windows path, because hardlinks do not work correctly across that boundary.

Third-party accounts, if you want to download anything. A Usenet provider and a Usenet indexer, or a torrent indexer and a VPN, or both. lemonfiber walks you through what each one is and roughly what it costs, and validates every credential against the live service before storing it.

You can also run nothing but the library: point lemonfiber at a folder of media you already have and serve it, with no accounts and no spend. That is a supported end state rather than a degraded one — see Prerequisites and account guidance.

Each release is built for these platforms:

Target Platform
aarch64-apple-darwin macOS on Apple silicon
x86_64-apple-darwin macOS on Intel
aarch64-unknown-linux-musl Linux on ARM64, statically linked
x86_64-unknown-linux-gnu Linux on x86_64, against glibc
x86_64-unknown-linux-musl Linux on x86_64, statically linked

There is no Windows build: the binary does not compile there. On Windows you can still run the stack itself, with Docker Desktop and plain docker compose, as Running without lemonfiber describes, but not the lemonfiber binary.

Three routes get you a binary. The fourth, Homebrew, is a placeholder, and it is better to say so than to give you a command that fails.

Route What it gets you
One-line shell installer lemonfiber-installer.sh, attached to every release. It puts the binary in ~/.cargo/bin, or in $CARGO_HOME/bin if you have set that.
Prebuilt archive A .tar.xz per platform, each with a .sha256 beside it and a sha256.sum over the set.
Building from source The route for a change you are making yourself.
Homebrew — brew install lemonfiber/tap/lemonfiber Nothing. The tap repository exists, but the formula in it is a placeholder: it declares version 0.0.0 and names no download, so there is nothing to fetch. No release publishes to the tap yet.
Terminal window
$ curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/lemonfiber/lemonfiber/releases/latest/download/lemonfiber-installer.sh | sh

releases/latest/ is the newest release that is not marked a pre-release. For a particular version, put download/v<version> in place of latest/download. Every version is on the releases page.

The archives sit beside it on the same release, if you would rather check a checksum and unpack one yourself.

You need a Rust toolchain, 1.95 or newer.

The stack manifest ships as a submodule and is read at build time, so the clone has to include it:

Terminal window
$ git clone --recurse-submodules https://github.com/lemonfiber/lemonfiber.git
$ cd lemonfiber
$ cargo build --release --workspace

That leaves the binary at target/release/lemonfiber. Put it somewhere on your PATH, or run it from there.

If you have already cloned without --recurse-submodules, run git submodule update --init before building.

Terminal window
$ lemonfiber --version

It prints lemonfiber and the version you installed.

lemonfiber version says more: the version of the binary and the version of the stack it carries. Both matter in a bug report, because a lemonfiber release pins a particular stack and a particular set of service image tags.

Run lemonfiber with nothing configured and it offers to set itself up. Nothing is written to disk until you have seen a complete summary and confirmed it.

That is the subject of Your first stack.

Docker problems, permission problems and data-location problems all surface before anything is written, and each names its own remedy. If you are stuck, run the doctor — it checks the same things setup does and reports what it found. Every error lemonfiber emits carries a code, and Every error by code explains them.