Skip to content

Installation

Raahi ships as one executable plus the built admin UI.

  • The latest stable Rust toolchain to compile Raahi
  • Node.js 22.12 or newer
  • cmake, Go, Perl, and a C or C++ compiler for native build dependencies
  • just for the repository recipes
  • pnpm or npm for the admin UI

On Debian or Ubuntu:

Terminal window
sudo apt install build-essential cmake golang perl

Run the repository check before building:

Terminal window
just doctor

GitHub Releases publishes Linux archives for amd64 and arm64. The archive contains the executable, admin UI, README, and license.

Terminal window
# Replace amd64 with arm64 when needed.
archive=raahi-v0.3.0-linux-amd64.tar.gz
curl -LO "https://github.com/iamd3vil/raahi/releases/download/v0.3.0/$archive"
curl -LO https://github.com/iamd3vil/raahi/releases/download/v0.3.0/checksums.txt
checksum_line="$(grep -F "$archive" checksums.txt)"
expected="${checksum_line#*$'\t'}"
echo "$expected $archive" | sha256sum -c -
tar xzf "$archive"
cd "${archive%.tar.gz}"
./raahi --help

Raahi also publishes a multi-architecture image for amd64 and arm64:

Terminal window
docker run --rm \
-p 8080:8080 \
-p 8443:8443 \
-p 127.0.0.1:9080:9080 \
-v raahi-data:/data \
ghcr.io/iamd3vil/raahi:0.3.0

The image stores the SQLite database in /data. It serves the bundled UI and binds the admin listener inside the container.

Terminal window
git clone https://github.com/iamd3vil/raahi.git
cd raahi
just setup
just release

The release binary is written to target/release/raahi. The UI build is written to ui/build.

Run it from the repository root:

Terminal window
./target/release/raahi

just dist builds an x86-64 static musl executable and packages it with the admin UI for local testing:

Terminal window
uv tool install cargo-zigbuild
just dist

The archive is written under dist/. You need zig on PATH to build it. GitHub Releases uses native amd64 and arm64 runners instead of this local packaging recipe.

Terminal window
tar xzf dist/raahi-v*-x86_64-unknown-linux-musl.tar.gz
cd raahi-v*
./raahi

Some Linux distributions install libclang without its built-in C headers. The just recipes set BINDGEN_EXTRA_CLANG_ARGS when needed. Set it yourself if you run Cargo directly:

Terminal window
export BINDGEN_EXTRA_CLANG_ARGS="-I$(cc -print-file-name=include)"
cargo build --release

Continue with the quickstart to run a local upstream and send traffic through Raahi.