Sign inSign up

beshultd/deltaglider_proxy

By beshultd

Updated about 1 month ago

S3 proxy in rust: saves 1st archive in a dir as reference, but others as diffs, so 4TB fit in ~5GB

Image
Security
API management
Databases & storage
0

10K+

beshultd/deltaglider_proxy repository overview

DeltaGlider Proxy

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.

Key Features

  • Transparent S3 API — Drop-in replacement for any S3-compatible storage. Clients never know compression is happening.
  • Delta compression — Versioned binaries (.zip, .jar, .tar.gz, .whl, etc.) are stored as xdelta3 diffs against a shared reference, typically saving 80–95% storage.
  • Passthrough for incompressible files — Images, video, and already-compressed formats skip delta entirely.
  • Built-in web dashboard — Real-time Prometheus metrics visualization with cache health, compression stats, HTTP traffic charts, and auth monitoring.
  • Reference cache — LRU cache (moka) for hot reference files with configurable size, utilization alerts, and per-response x-deltaglider-cache headers.
  • SigV4 authentication — Optional AWS Signature V4 authentication with hot-reloadable credentials.
  • Admin GUI — Browser-based S3 file browser with settings management, upload interface, and live metrics dashboard.
  • Dual backend — Local filesystem (with xattr metadata) or upstream S3/MinIO.
  • TLS support — User-provided or auto-generated self-signed certificates.
  • Hot-reloadable config — Change compression ratio, cache size, credentials, and backend without restart.

Quick Start

docker run -p 9000:9000 -p 9001:9001 beshultd/deltaglider_proxy
  • Port 9000 — S3-compatible API
  • Port 9001 — Admin GUI + metrics dashboard
With persistent storage
docker run -p 9000:9000 -p 9001:9001 \
  -v /data:/data \
  -e DGP_CACHE_MB=2048 \
  beshultd/deltaglider_proxy
With S3 backend (e.g., MinIO)
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

Environment Variables

VariableDefaultDescription
DGP_DATA_DIR./dataFilesystem backend data directory
DGP_CACHE_MB500Reference cache size in MB
DGP_MAX_DELTA_RATIO0.9Store as delta only if ratio < threshold
DGP_MAX_OBJECT_SIZE524288000Max 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_BACKENDfilesystemBackend type: filesystem or s3
DGP_S3_ENDPOINT(AWS default)S3 endpoint URL
DGP_S3_REGIONus-east-1S3 region
DGP_CODEC_CONCURRENCY(CPU count)Max concurrent xdelta3 processes
DGP_LOG_LEVELdebugTracing filter (RUST_LOG syntax)

Endpoints

EndpointDescription
GET /healthHealth check with cache stats
GET /metricsPrometheus metrics (all gauges, counters, histograms)
GET /statsStorage savings summary (objects, sizes, savings %)
S3 APIFull ListBuckets, GET/PUT/HEAD/DELETE objects, multipart uploads

Requirements

  • xdelta3 must be installed in the container (included in this image)
  • Filesystem backend requires xattr support (ext4, XFS, Btrfs, ZFS, APFS)

Architecture

HTTP request
  → S3 handlers (GET/PUT/HEAD/DELETE/LIST)
  → SigV4 auth middleware (optional)
  → DeltaGlider engine (route, compress, cache, reconstruct)
  → Storage backend (filesystem or S3)

Tag summary

Content type

Image

Digest

sha256:c06cdfcc7

Size

66.1 MB

Last updated

about 1 month ago

docker pull beshultd/deltaglider_proxy