A photo platform
you host yourself.
Lumio is a complete photo gallery platform for pro studios — RAW support, video streaming, annotation, proofing. You run it on your own infrastructure, with your own storage, under your control.
Lumio runs on your server, your NAS, your VPS. S3-compatible storage of your choice (MinIO, Backblaze B2, Wasabi, Hetzner Object Storage).
Postgres database, S3 bucket — both yours. No vendor lock-in. You handle backups exactly the way you're used to.
Branding, custom domains, fonts, colors — all customizable. The source is open, so if something's missing you patch it yourself or send a PR.
Everything a pro platform needs
RAW support
Canon CR3, Nikon NEF, Sony ARW, Fuji RAF and more. Server-side preview generation via rawpy. The original download stays untouched.
Video with HLS
Adaptive streaming in three quality levels, scrubbing previews via filmstrip. GPU acceleration (NVENC, QSV, VAAPI) auto-detected, libx264 fallback.
Annotation & proofing
Clients draw right on the image — and on video at a specific timestamp — comment, pick favorites. The studio sees everything in the proofing dashboard and replies with its own markups.
Multi-tenant
Optional: several studios in one instance, separate subdomains per tenant, separate branding per tenant. Single-tenant is the default.
Lightroom + Capture One
Dedicated plugins for direct export from your photo workflow. No re-upload needed.
Audit & GDPR-ready
An audit log for every action, deletion workflows, data export. What you need for your own GDPR compliance is included.
Custom domains
Client galleries under your own domains (e.g. photos.client.com). Tenant resolution via host header — TLS via Caddy/Traefik.
Smart Collections
Lightroom-style filter macros across your galleries. Status, mode, tags AND-combined, saved per user.
Plan limits + Stripe
If you want to build a SaaS with it: plan definitions, storage tracking and limit enforcement are built in. Stripe integration follows.
On your server in 5 minutes
Lumio ships as a Docker Compose stack. If you have Docker and Compose installed, it's a
git clone and a docker compose up.
Clone the repository
git clone https://github.com/markusthiel/lumio.git
cd lumio Prepare the environment file
Copy from the template and fill in your own values:
cp .env.example .env
nano .env
At minimum set: POSTGRES_PASSWORD, S3_ACCESS_KEY, S3_SECRET_KEY,
SESSION_SECRET. With your own domain also
LUMIO_HOST.
Start the stack
docker compose up -d --build This starts all services: API, worker, frontend, Postgres, Redis, MinIO and Caddy. On the first start, migrations run and an empty default tenant is created.
Create an admin user
docker compose exec api npm run create-admin
Follow the interactive prompt — name, email, password. Then you can log in at http://localhost.
Optional: GPU acceleration
If your host has an NVIDIA GPU and you've installed the NVIDIA Container Toolkit:
docker compose \\
-f docker-compose.yml \\
-f docker-compose.prod.yml \\
-f docker-compose.gpu.yml \\
up -d
Video transcoding then runs on the GPU — a 1-hour 1080p video takes 10-20 minutes instead of 2-3 hours.
More in docs/GPU.md.
Multi-tenant setup, custom domains per client, S3 provider configuration, backups: all in the Markdown docs in the repo.
Docs on Forgejo →Which variant fits you?
Lumio comes in two variants — both have the same functionality; the question is who runs it.
You run Lumio on your own infrastructure. Full control, your own data, your own storage. Source-available under the FSL: you may self-host, modify and operate Lumio for your clients — just not build a competing SaaS.
- ✓Source-available, FSL-1.1
- ✓Your own server, your own data
- ✓S3 provider of your choice
- ✓Costs only your server
- ·You administer it yourself
- ·Backups + updates are your responsibility
We host Lumio for you on German servers. GDPR-compliant, with maintenance, updates and support. You log in and work — no server setup needed.
- ✓Ready to go instantly, no setup
- ✓Servers in Germany
- ✓Maintenance + updates included
- ✓Support by email
- ·Monthly subscription (from €9)
License
Lumio is licensed under the FSL-1.1. You may use, modify and self-host the software — privately, as a pro or as an agency for your clients. The only restriction: you may not build a competing, hosted SaaS offering from it. Two years after each release, that version automatically becomes Apache-2.0 — then with no restriction at all.
Contributing
Issues, feature requests and pull requests are welcome on Forgejo. No GitHub mirror — we deliberately chose a self-hosted forge, which fits the self-hosting spirit of the platform.
github.com/markusthiel/lumio →