Rust rewrite of the Open Workshop storage services, with the original split preserved:
distributorserves stored files and BlurHash metadataloaderhandles uploads, transfer jobs, repacks, moves, and websocket progress
Both binaries share the same environment-variable configuration and the same storage layout on disk.
- Rust toolchain with
cargo 7zfromp7zip-fullor an equivalent package- Environment variables documented in
docs/CONFIGURATION.md
Ubuntu / Debian:
sudo apt update sudo apt install -y cargo rustc p7zip-full
Set at least:
MAIN_DIRMANAGER_URLACCESS_SERVICE_URLTRANSFER_JWT_SECRET- token hashes for
DELETE_FILE,UPLOAD_FILE, andSTORAGE_MANAGE_TOKEN
Generate token pairs with:
cargo run --bin token_gen
cargo check
cargo test
cargo build --releaseDistributor:
OPEN_WORKSHOP_PORT=8000 cargo run --bin distributor
Loader:
OPEN_WORKSHOP_PORT=8001 cargo run --bin loader
The services also respect OPEN_WORKSHOP_HOST, which defaults to 0.0.0.0.
For systemd deployment, see docs/DEPLOYMENT.md.
make check
make test
make fmt
make lint
make run-distributor
make run-loaderMain routes:
- Distributor:
GET /,GET /redoc/,GET /healthz,GET /openapi.json,POST /blurhashes,GET|HEAD /download/:storage_type/*path - Loader:
GET /,GET /redoc/,GET /healthz,GET /openapi.json,POST /upload,DELETE /delete,GET|POST /transfer/start,POST /transfer/upload,WS /transfer/ws/:job_id,POST /transfer/repack,POST /transfer/move
- Archive handling still uses
7z - Image uploads are normalized to WebP
- Transfer downloads still validate access through the access service
- Configuration is provided through environment variables; see
docs/CONFIGURATION.md