SaaS video tools ask you to trust a vendor with your media, your uptime, and your data-residency obligations. A self-hosted video editor removes that dependency: the same app, running on hardware you control, behind your firewall, on your domain. For developers and sovereignty-minded teams, "bring your own backend" is the feature that matters most.
Key takeaways
- Self-hosting puts storage, rendering, and sync on your infrastructure.
- Docker Compose makes the deploy a single declarative file.
- An offline-first client means the server is for sync, not for processing your footage.
- Open source lets you audit, fork, and extend the stack.
Why bring your own backend
- Data sovereignty: keep footage in a specific region or on-premise to satisfy GDPR and client contracts.
- No vendor lock-in: your projects live in your storage, in open formats.
- Cost control: run on hardware you already own instead of per-seat cloud pricing.
- Security: place the whole system behind your VPN or firewall.
A minimal Docker Compose deploy
The core of a self-host is one file. This brings up the server, mounts a local projects volume, and runs in offline mode so no data is sent anywhere external:
services:
ffmpeglab:
image: ffmpeglab/ide:main
ports: ["8080:8080"]
environment:
- FFMPEGLAB_HOST=http://localhost:8080/webapp/
- EVOLU_DB_HOST=http://localhost:4000
- EVOLU_DB_NAME=ffmpeglab
- PUBLIC_HOST=https://localhost:8080/
- PEXELS_API_HOST=https://pexels.starpy.me/
- SUPABASE_HOST=https://office.starpy.me
- SUPABASE_ANON_KEY=123456789qwerty
evolu:
image: evoluhq/evolu:pr-5
ports: ["4000:4000"]Bring it up with one command:
$ docker compose up -d $ docker compose logs -f ffmpeglab
Where the work actually happens
Because the client is offline-first, the rendering and effects processing run locally in the browser via WebAssembly — applying xfade transitions, filter_complex effects, and amix audio on the editor's machine. The self-hosted backend is responsible for project sync and storage, not for ingesting raw footage into a cloud render farm. That keeps the server light and your media local.
Putting it behind your domain
Front the container with a reverse proxy (Caddy, Nginx, or Traefik) for TLS and your own hostname:
edit.example.com {
reverse_proxy localhost:8080
}Production checklist
- Back up the
./projectsvolume on a schedule. - Pin the image to a version tag instead of
latestfor reproducible deploys. - Restrict access with your VPN, SSO proxy, or basic auth at the reverse proxy.
- Audit the open-source code before deploying in regulated environments.
Open source, offline, yours
FFmpegLab is open source and offline-first by design: self-host the backend with Docker, keep footage on-device, and still get the full power-user FFmpeg toolset. Free to use. Start in the browser, then move it onto your own infrastructure when you're ready.