Modified Version Notice (GPLv3 §5a) This is a modified version of PairDrop. Modification: Complete backend rewrite from Node.js to Rust (Axum framework). Initial modification date: January 2026. Original authors: schlagmichdoch and contributors. See NOTICE for full attribution.
A Rust rewrite of PairDrop backend using the Axum framework.
Demo: pairdrop-rust.app.cosformula.org
| Node.js | Rust | |
|---|---|---|
| Runtime Memory | ~60MB | ~2MB |
| Binary Size | Requires Node.js runtime | Single ~5MB binary |
| Startup Time | Slow | Instant |
- ✅ Fully compatible with original frontend
- ✅ WebSocket signaling server
- ✅ Auto-discovery (devices on same network)
- ✅ Device pairing (6-digit code)
- ✅ Public rooms (5-letter room code)
- ✅ WebRTC signaling relay
- ✅ WebSocket fallback (optional, for VPN environments)
- ✅ Rate limiting
- ✅ IPv6 support
docker run -d -p 3000:3000 ghcr.io/cosformula/pairdrop-rust:latestcd server-rust
cargo build --release
./target/release/pairdrop-server# Command line options
pairdrop-server [OPTIONS]
Options:
-p, --port <PORT> Port [default: 3000]
--ws-fallback Enable WebSocket fallback
--rate-limit <N> Enable rate limiting
--localhost-only Listen on localhost only
--debug-mode Enable debug mode
--ipv6-localize <N> IPv6 segments (1-7)
# Environment variables
PORT=3000
WS_FALLBACK=false
RATE_LIMIT=5
DEBUG_MODE=false
IPV6_LOCALIZE=4# Build
docker build --platform linux/amd64 -f server-rust/Dockerfile -t pairdrop-rust .
# Run
docker run -d -p 3000:3000 pairdrop-rust| Docker Image Tag | Source Code |
|---|---|
ghcr.io/cosformula/pairdrop-rust:latest |
main branch |
ghcr.io/cosformula/pairdrop-rust:vX.Y.Z |
Tag vX.Y.Z |
Supports deployment to:
- Coolify
- Fly.io
- Railway
- Any Docker-compatible platform
GPL-3.0