S3 proxy in rust: saves 1st archive in a dir as reference, but others as diffs, so 4TB fit in ~5GB
10K+
S3-compatible proxy with transparent xdelta3 compression for versioned binary artifacts.
Clients see a standard S3 API — the proxy silently deduplicates using xdelta3 against a per-prefix reference baseline. Upload your JARs, ZIPs, firmware images, and ML models as usual; DeltaGlider stores only the differences.
.zip, .jar, .tar.gz, .whl, etc.) are stored as xdelta3 diffs against a shared reference, typically saving 80–95% storage.x-deltaglider-cache headers.docker run -p 9000:9000 -p 9001:9001 beshultd/deltaglider_proxy
9000 — S3-compatible API9001 — Admin GUI + metrics dashboarddocker run -p 9000:9000 -p 9001:9001 \
-v /data:/data \
-e DGP_CACHE_MB=2048 \
beshultd/deltaglider_proxy
docker run -p 9000:9000 -p 9001:9001 \
-e DGP_BACKEND=s3 \
-e DGP_S3_ENDPOINT=http://minio:9000 \
-e DGP_BE_AWS_ACCESS_KEY_ID=minioadmin \
-e DGP_BE_AWS_SECRET_ACCESS_KEY=minioadmin \
beshultd/deltaglider_proxy
| Variable | Default | Description |
|---|---|---|
DGP_DATA_DIR | ./data | Filesystem backend data directory |
DGP_CACHE_MB | 500 | Reference cache size in MB |
DGP_MAX_DELTA_RATIO | 0.9 | Store as delta only if ratio < threshold |
DGP_MAX_OBJECT_SIZE | 524288000 | Max object size in bytes (500 MB) |
DGP_ACCESS_KEY_ID | (none) | SigV4 access key (empty = auth disabled) |
DGP_SECRET_ACCESS_KEY | (none) | SigV4 secret key |
DGP_BACKEND | filesystem | Backend type: filesystem or s3 |
DGP_S3_ENDPOINT | (AWS default) | S3 endpoint URL |
DGP_S3_REGION | us-east-1 | S3 region |
DGP_CODEC_CONCURRENCY | (CPU count) | Max concurrent xdelta3 processes |
DGP_LOG_LEVEL | debug | Tracing filter (RUST_LOG syntax) |
| Endpoint | Description |
|---|---|
GET /health | Health check with cache stats |
GET /metrics | Prometheus metrics (all gauges, counters, histograms) |
GET /stats | Storage savings summary (objects, sizes, savings %) |
| S3 API | Full ListBuckets, GET/PUT/HEAD/DELETE objects, multipart uploads |
xdelta3 must be installed in the container (included in this image)HTTP request
→ S3 handlers (GET/PUT/HEAD/DELETE/LIST)
→ SigV4 auth middleware (optional)
→ DeltaGlider engine (route, compress, cache, reconstruct)
→ Storage backend (filesystem or S3)
Content type
Image
Digest
sha256:c06cdfcc7…
Size
66.1 MB
Last updated
about 1 month ago
docker pull beshultd/deltaglider_proxy