Self-hosted · Open source · API-first

File management,
without the SaaS tax.

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.

Get started Read the docs

Projects

Isolated namespaces with their own S3 buckets, visibility controls, and API keys.

API Keys

Scoped keys (read / write / admin) with optional expiry. Issue one per integration.

Image transforms

Resize, crop, convert format (WebP, AVIF, JPEG, PNG), adjust quality — all via URL params.

Video & Audio

Convert between formats on demand. FFmpeg runs inline; result is cached for instant replay.

Signed URLs

Generate presigned upload and read URLs. Clients upload directly to storage — no proxying.

SSO

Admin UI protected by Authentik OIDC. No separate user management needed.

How it works

Three API calls from upload to transformed delivery.

1

Upload

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" }
2

Sign a read URL

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" } }
3

Deliver

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 />

One command to run it yourself

MinIO, imgproxy, and the Next.js app — all wired up with Docker Compose.

docker compose up -d
Self-hosting guide