Docker Quickstart (10s)
docker run -d \
--name storage-server \
--restart unless-stopped \
-p 7100:7100 \
-v /var/lib/storage-data:/data \
-e MASTER_KEY=sk_live_master_secret_key \
devclouddesk/storage-server:latestDevCloudDesk Storage Server is a lightweight, self-hostable media engine that handles file uploads, storage, and real-time image transformations directly on your own infrastructure.
It gives you the dynamic image manipulation features of Cloudinary and the storage reliability of S3, but with zero monthly subscription costs and $0 bandwidth markups.
Why Self-Host a Media Engine?#
Traditional cloud media services charge steep pricing tiers once you scale:
- Cloudinary / ImageKit: Transform quotas and monthly active users can run into hundreds or thousands of dollars per month.
- AWS S3 / Google Cloud Storage: While storage is cheap, bandwidth egress fees ($0.09–$0.12/GB) penalize media-heavy apps.
With DevCloudDesk Storage Server running on a $5–$10/month VPS (from Hetzner, DigitalOcean, or your own bare-metal):
- You get unlimited image transformations powered by multi-threaded C/C++
libvips(sharp). - You pay $0 bandwidth egress fees.
- Your assets stay on your own disks or in your private S3/R2 bucket.
Core Architecture#
text┌────────────────────────────────────────────────────────────────────────┐ │ DevCloudDesk Storage Server │ ├───────────────────┬────────────────────────────┬───────────────────────┤ │ Ingestion │ Processing Engine │ Delivery & Cache │ │ │ │ │ │ • Multipart POST │ • Sharp / libvips (C++) │ • LRU NVMe Cache │ │ • Magic-bytes │ • WebP / AVIF conversion │ • ETag & 304 Handling │ │ validation │ • Resize, Crop, Blur │ • Immutable CDN Cache │ │ • Signed tokens │ • Low-memory streaming │ • Direct Streaming │ └───────────────────┴────────────────────────────┴───────────────────────┘
- 100% Database-Less: File metadata, folder hierarchies, and API keys are persisted directly to fast local JSON stores on disk. You don't need to spin up PostgreSQL, MongoDB, or Redis just to host media.
- Native libvips Performance: Image operations run via
sharpbindings tolibvips—up to 8x faster than ImageMagick with a fraction of the RAM consumption. - Smart Disk Cache: Once an image variant (e.g.
w=400,f=webp) is generated on the first request, it is saved to local disk cache. All subsequent requests are served directly from disk in under 2ms with properETagand304 Not Modifiedheaders. - Multi-Driver Storage: Store files on local NVMe/SSD, or proxy automatically to AWS S3 or Cloudflare R2 backing stores.
Next Steps#
- Docker Quickstart →: Spin up your production container in under 10 seconds.
- On-the-Fly Image Transformations →: Explore URL resizing, crop modes, WebP conversion, and blur.
- Official Client SDKs →: Connect from Node.js, TypeScript, or Python.