Sign inSign up

beshultd/deltaglider_commander

By beshultd

โ€ขUpdated 7 months ago

S3 object browser with delta compression for efficient storage - based on: beshu-tech/deltaglider

Image
Developer tools
Databases & storage
0

6.5K

beshultd/deltaglider_commander repository overview

โ DeltaGlider Commander

A high-performance S3 object browser and manager with delta compression capabilities, powered by the DeltaGlider SDKโ .

โ Overview

DeltaGlider Commander provides a modern web interface for browsing and managing objects in S3-compatible storage systems. It leverages delta compression to optimize storage and transfer efficiency, making it ideal for managing large datasets with incremental changes.

โ Key Features
  • ๐Ÿš€ Delta Compression - Automatic delta compression for efficient storage and bandwidth usage (99%+ compression for archives)
  • ๐Ÿ“ฆ S3 Compatible - Works with AWS S3, MinIO, and other S3-compatible storage
  • ๐Ÿ”’ Secure Downloads - Time-limited, signed download URLs with HMAC authentication
  • ๐ŸŽจ Modern UI - React-based interface with TypeScript and real-time updates
  • โšก High Performance - Optimized metadata retrieval and quick-mode listing for large datasets
  • ๐Ÿ”ง REST API - Comprehensive Flask API with rate limiting
  • ๐Ÿ›ก๏ธ Security Hardened - Bandit scanning, secure temp handling, quality gates in CI/CD
  • ๐Ÿณ Production Ready - Multi-stage Docker builds with automated testing

โ Quick Start

docker run -p 8000:8000 \
  -e AWS_ACCESS_KEY_ID=your-key \
  -e AWS_SECRET_ACCESS_KEY=your-secret \
  -e DGCOMM_S3_ENDPOINT=https://s3.amazonaws.com \
  -e DGCOMM_HMAC_SECRET=$(openssl rand -hex 32) \
  beshultd/deltaglider_commander:latest
โ Specific Version
docker run -p 8000:8000 \
  -e AWS_ACCESS_KEY_ID=your-key \
  -e AWS_SECRET_ACCESS_KEY=your-secret \
  -e DGCOMM_S3_ENDPOINT=https://s3.amazonaws.com \
  -e DGCOMM_HMAC_SECRET=$(openssl rand -hex 32) \
  beshultd/deltaglider_commander:0.1.2

Access the web UI at http://localhost:8000

โ Configuration

โ Required Environment Variables
VariableDescriptionExample
AWS_ACCESS_KEY_IDS3 access keyAKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEYS3 secret keywJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
DGCOMM_S3_ENDPOINTS3 endpoint URLhttps://s3.amazonaws.com
DGCOMM_HMAC_SECRETSecret for signing download tokensGenerate with openssl rand -hex 32
โ Optional Environment Variables
VariableDescriptionDefault
AWS_DEFAULT_REGIONAWS regionus-east-1
DGCOMM_S3_ADDRESSING_STYLEpath or virtualpath
DGCOMM_S3_VERIFY_SSLVerify SSL certificatestrue
DGCOMM_CACHE_DIRDirectory for delta cacheSystem temp dir + /dgcommander-cache
DGCOMM_OBJECT_RATE_LIMITMax requests per window10
DGCOMM_OBJECT_RATE_WINDOWRate limit window (seconds)1.0
DGCOMM_DOWNLOAD_TTLDownload token lifetime (seconds)300

โ Docker Compose Example

Create a docker-compose.yml:

version: "3.9"

services:
  dgcommander:
    image: beshultd/deltaglider_commander:latest
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      DGCOMM_S3_ENDPOINT: ${DGCOMM_S3_ENDPOINT}
      DGCOMM_HMAC_SECRET: ${DGCOMM_HMAC_SECRET}

โ MinIO Configuration

For MinIO or other S3-compatible services:

docker run -p 8000:8000 \
  -e AWS_ACCESS_KEY_ID=minioadmin \
  -e AWS_SECRET_ACCESS_KEY=minioadmin \
  -e DGCOMM_S3_ENDPOINT=http://minio:9000 \
  -e DGCOMM_S3_ADDRESSING_STYLE=path \
  -e DGCOMM_S3_VERIFY_SSL=false \
  -e DGCOMM_HMAC_SECRET=$(openssl rand -hex 32) \
  beshultd/deltaglider_commander

โ Available Tags

  • latest - Most recent stable release
  • 0.1.2, 0.1 - Specific version tags
  • Semantic versioning follows MAJOR.MINOR.PATCH

โ API Endpoints

  • GET /api/buckets - List all buckets with optional compression stats
  • GET /api/buckets/{bucket}/objects - List objects with metadata (supports quick mode)
  • GET /api/buckets/{bucket}/objects/{key}/metadata - Get object metadata
  • GET /api/buckets/{bucket}/objects/{key}/download - Get HMAC-signed download URL
  • POST /api/buckets/{bucket}/objects - Upload object (with automatic delta compression)
  • DELETE /api/buckets/{bucket}/objects/{key} - Delete object

โ Security Notes

  • Always use a strong, unique DGCOMM_HMAC_SECRET in production (generate with openssl rand -hex 32)
  • The HMAC secret is used to sign time-limited download tokens (default TTL: 5 minutes)
  • Never expose S3 credentials in client-side code
  • Consider using IAM roles when running on AWS
  • All temporary files use secure system temp directories
  • Security scanning with Bandit is part of the CI/CD pipeline

โ What's New in v0.1.2

โ Performance Improvements
  • โšก Optimized metadata retrieval using list_objects instead of get_object
  • ๐Ÿš€ Quick-mode listing for faster bucket browsing
  • ๐Ÿ“Š Better error handling and navigation edge cases
โ Security & Quality
  • ๐Ÿ›ก๏ธ Security hardening with Bandit scanning
  • ๐Ÿ”’ Secure temporary directory handling
  • โœ… Comprehensive CI/CD pipeline with quality gates
  • ๐Ÿ“ Full type checking with mypy
โ Infrastructure
  • ๐Ÿณ Multi-stage Docker builds with optimized caching
  • ๐Ÿ”„ Automated Docker Hub publishing on version tags
  • ๐Ÿงช Integration testing with MinIO in CI pipeline

โ License

See the project repository for license information.

Tag summary

Content type

Image

Digest

sha256:f64e3b3e6โ€ฆ

Size

105.3 MB

Last updated

7 months ago

docker pull beshultd/deltaglider_commander