Contento is a self-hosted file platform inspired by Bytescale. Upload, transform, and deliver images, video, and audio — via a clean REST API and admin UI you control.
Isolated namespaces with their own S3 buckets, visibility controls, and API keys.
Scoped keys (read / write / admin) with optional expiry. Issue one per integration.
Resize, crop, convert format (WebP, AVIF, JPEG, PNG), adjust quality — all via URL params.
Convert between formats on demand. FFmpeg runs inline; result is cached for instant replay.
Generate presigned upload and read URLs. Clients upload directly to storage — no proxying.
Admin UI protected by Authentik OIDC. No separate user management needed.
Three API calls from upload to transformed delivery.
Request a presigned PUT URL and upload directly from the client to MinIO.
POST /api/v1/projects/:id/sign/upload
{ "path": "/audio/track.wav", "contentType": "audio/wav" }Ask for a signed read URL, optionally with a format conversion.
POST /api/v1/projects/:id/sign/read
{ "path": "/audio/track.wav", "transform": { "format": "mp3" } }Drop the URL into an <audio> tag. FFmpeg streams the conversion in real time.
<audio src="https://your-domain.com/f/project/audio/track.wav?format=mp3" controls />MinIO, imgproxy, and the Next.js app — all wired up with Docker Compose.
docker compose up -d