siftp

Download

Install with apt

Debian 12 or later and Ubuntu 22.04 or later, on amd64 and arm64 (including AWS Graviton). Needs curl:

sudo curl -fsSLo /etc/apt/keyrings/siftp.gpg https://apt.siftp.org/siftp-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/siftp.gpg] https://apt.siftp.org stable main" | sudo tee /etc/apt/sources.list.d/siftp.list
sudo apt update && sudo apt install siftpd

The repository is signed with an Ed25519 key, fingerprint 705C FD11 EA2D 784D 8110 F551 B34A 5D63 8C91 9943. Compare it with gpg --show-keys /etc/apt/keyrings/siftp.gpg. The package starts the service with the hardened systemd unit; what it sets up and how to add users: Operations.

Releases

Each release has, for Linux x86_64 and aarch64:

FileContents
siftpd-<version>-<arch>-linux.tar.gzBinary, example config, systemd unit, logrotate and Prometheus files, licenses
siftpd_<version>-1_<arch>.debDebian/Ubuntu package with a hardened systemd unit
siftpd-<version>-<arch>.cdx.jsonCycloneDX SBOM
SHA256SUMSChecksums for all files
*.sig, *.pemSigstore signatures and certificates

Plus a multi-arch container image, signed with cosign. How to verify: Operations.

The binaries link glibc 2.35 or newer (Ubuntu 22.04, Debian 12, RHEL 9 and later).

Build from source

cargo build --release -p siftpd                     # assembly kernels on
cargo build --release -p siftpd --features io-uring # plus the io_uring data path (Linux)
cargo build --release -p siftpd --no-default-features # pure Rust

Requirements: Rust 1.89 or newer and a C compiler (for ring and the assembly kernels). Packages:

cargo deb -p siftpd                                  # .deb (cargo install cargo-deb)
docker build -f packaging/container/Dockerfile -t siftp .

Platforms

PlatformStatus
Linux x86_64, aarch64Supported; all fast paths
macOS (Apple silicon, Intel)Supported for small deployments; pooled data path; launchd plist in packaging/launchd/
Other UnixBuilds with the pure-Rust paths; not tested in CI
WindowsBuilds (CI lane, tests/windows/cross-check.sh) and passes a smoke test under Wine. Not supported for deployment: no service integration, and secret files do not get owner-only permissions

Verify a build

cargo test --workspace
tests/interop/run.sh target/release/siftpd     # needs curl, lftp, OpenSSH, python3
bench/run.sh --quick                           # needs Docker

MIT or Apache-2.0, at your option.