Installation¶
Requirements¶
- OS: Linux (amd64 or arm64). The Docker image and prebuilt binaries are statically linked against musl — no glibc or distro requirement.
- Clustering: A Redis instance is required only when running multiple Pylon nodes. Single-node deployments have no external dependencies.
Install¶
A multi-arch image (linux/amd64 and linux/arm64) is published to the GitHub Container
Registry on every release.
Available tags: latest, X.Y.Z (exact release), and X.Y (latest patch in a minor series).
To run Pylon with Docker, mount your apps.json and expose port 7000:
docker run -d --name pylon \
-p 7000:7000 \
-v "$PWD/apps.json:/etc/pylon/apps.json:ro" \
-e PYLON_APPS_PATH=/etc/pylon/apps.json \
--ulimit nofile=1048576:1048576 \
ghcr.io/i-rocky/pylon:latest
Tip
The --ulimit nofile=1048576:1048576 flag raises the open-file limit so Pylon can
handle large numbers of concurrent WebSocket connections.
Each tagged release on the GitHub Releases page
includes prebuilt Linux binaries for x86_64 and aarch64 (statically linked against musl —
no glibc or distro requirement), each packaged as a .tar.gz with a matching .sha256
checksum file.
Download, verify, and extract:
# Replace X.Y.Z and ARCH (x86_64 or aarch64) as appropriate.
# Note the asset name carries the leading "v" of the tag.
ASSET=pylon-vX.Y.Z-ARCH-unknown-linux-musl
curl -LO "https://github.com/i-rocky/pylon/releases/download/vX.Y.Z/${ASSET}.tar.gz"
curl -LO "https://github.com/i-rocky/pylon/releases/download/vX.Y.Z/${ASSET}.tar.gz.sha256"
sha256sum -c "${ASSET}.tar.gz.sha256"
tar xzf "${ASSET}.tar.gz"
# The tarball unpacks into a directory containing the binary plus
# LICENSE, README.md, apps.example.json, and a systemd/ directory with
# pylon.service, pylon.env.example and 99-pylon.sysctl.conf.
"./${ASSET}/pylon" --version
Building from source requires a Rust toolchain. Pylon pins its toolchain version in
rust-toolchain.toml — rustup will download the correct version
automatically.
The binary is written to target/release/pylon.
You can also run directly without a separate build step: