Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

Zuli ProxyBroker Extended v1.0.0 is published as a public GitHub Release with Linux, macOS, and Windows binaries plus SHA-256 checksums, and GHCR is the canonical container registry. The next release, v1.1.0 (distribution closure), is being prepared: it adds an Android (aarch64-linux-android) release binary, prepares crates.io publication, and adds a non-blocking Docker Hub mirror. None of the v1.1.0 artifacts or submissions exist yet — v1.1.0 is not published to crates.io and no v1.1.0 release or image has been produced.

Build from source

Local source builds require:

  • Rust 1.85 or newer;
  • Cargo; and
  • Git.

In an existing checkout, build the release binary with the locked dependency set:

cargo build --release --locked

After the public Zuli repository is created, clone it with:

git clone https://github.com/zuli2021/zuli-proxybroker-extended.git
cd zuli-proxybroker-extended
cargo build --release --locked

The executable remains proxybroker at target/release/proxybroker. The Cargo package is zuli-proxybroker-extended, while the Rust library crate remains proxybroker. The pinned rust-toolchain.toml selects stable Rust and the package declares Rust 1.85 as its minimum.

Rust dependency

The v1.1.0 crate package is prepared for crates.io publication as zuli-proxybroker-extended, but publication has not occurred (owner-gated, preceded by a collision check immediately before upload). Until it does, depend on the stable tag as a Git dependency:

[dependencies]
proxybroker = { package = "zuli-proxybroker-extended", git = "https://github.com/zuli2021/zuli-proxybroker-extended.git", tag = "v1.0.0" }

Pin a tag or commit rather than relying on an unpinned branch.

Prebuilt static binary (install.sh)

After the first tagged Zuli release, the installer will download the matching release archive for Linux (musl) or macOS, verify its SHA-256 checksum, and install it without a build toolchain or sudo:

curl -fsSL https://raw.githubusercontent.com/zuli2021/zuli-proxybroker-extended/main/install.sh | sh

SHA-256 verification is mandatory: the installer requires either sha256sum or shasum and fails rather than installing an archive with a missing, malformed, or mismatched checksum. These environment variables control the future installation:

VariableDefaultMeaning
PROXYBROKER_VERSIONlatest release tag after one existsWhich release to install.
PROXYBROKER_BIN_DIR$HOME/.local/binInstall directory.
PROXYBROKER_DOC_DIR$HOME/.local/share/doc/zuli-proxybroker-extendedDirectory for LICENSE, NOTICE, and LICENSE-DATA.

The binary is installed under PROXYBROKER_BIN_DIR, while the three legal files are installed under PROXYBROKER_DOC_DIR. Supported installer targets are x86_64/aarch64 Linux musl and x86_64/aarch64 Apple Darwin. Windows is not supported by install.sh.

The Linux release binary is intended to be a fully static musl build, with the geo database and provider list embedded.

Android (aarch64-linux-android)

v1.1.0 adds a canonical Android release binary: proxybroker-<tag>-aarch64-linux-android.tar.gz (executable proxybroker, plus LICENSE, LICENSE-DATA, NOTICE, README.md) and its .sha256 checksum, built with the same default feature set as desktop (cli, server, geo, geo-bundled) in a dedicated Android CI workflow. Install by downloading the matching asset from the release, verifying the SHA-256, and extracting it on an ARM64 Android device (for example inside Termux). Android is not covered by install.sh (Linux/macOS only).

Docker (FROM scratch)

The canonical image path is ghcr.io/zuli2021/zuli-proxybroker-extended. GHCR is the authoritative registry; a Docker Hub mirror (docker.io/zuli2021/zuli-proxybroker-extended) is planned for v1.1.0 as a non-blocking copy and never gates the canonical release path.

After a verified tagged release publishes an image, replace <tag> with the release version:

docker run --rm ghcr.io/zuli2021/zuli-proxybroker-extended:<tag> find --types HTTP --limit 5
docker run --rm -p 8888:8888 ghcr.io/zuli2021/zuli-proxybroker-extended:<tag> \
  serve --host 0.0.0.0:8888

Publishing a port from the container requires serve --host 0.0.0.0:8888. A local checkout can also build the repository Dockerfile, subject to the local Docker environment:

docker build -t zuli-proxybroker-extended .
docker run --rm zuli-proxybroker-extended find --types HTTP --limit 5

Feature flags in one paragraph

The crate is split into Cargo features so library users can pull in only what they need. The defaults — cli, server, geo, geo-bundled — give you the full binary with the local server and the bundled country database. Optional features add a metrics endpoint, a progress bar, SQLite/Redis persistence, a terminal dashboard (tui), an MCP server (mcp), a filesystem watcher (watch), and a drop-in hyper connector (connector). See Feature Flags for the full table and what each one enables.

A geo-free build

Building with --no-default-features gives you the library only, with no geo data, no server, and no CLI dependencies — and therefore no data-attribution obligation:

cargo build --no-default-features

You can also keep geolocation code while dropping the bundled database (turn off geo-bundled but keep geo) and supply your own database at runtime with --geo-db. See Geolocation & ASN and Data & Licensing for details.