Install Lumio with Docker — productive in 30 minutes.
Lumio runs as a Docker Compose stack. We go step by step: prerequisites, configuration, creating your first studio, uploading your first gallery. No hidden complexity.
Prerequisites
- ✓ Linux server with at least 4 CPU cores, 8 GB RAM and 100 GB SSD. Ubuntu 22.04 LTS or Debian 12 recommended.
- ✓ Docker Engine + Docker Compose v2 (comes with Docker Desktop or as the `docker-ce` package).
- ✓ A domain with DNS access (for HTTPS via Caddy/Let's Encrypt). Local testing also works without one.
- ✓ Object storage — either MinIO on the same machine (included in the default Compose), or external via Hetzner / S3 / B2 / R2.
Setup in five steps
Clone the repository
git clone https://github.com/markusthiel/lumio.git
cd lumio Create the configuration
Copy the example configuration and adapt it to your domain and chosen passwords:
cp .env.example .env
# Edit .env: set BASE_DOMAIN, secure passwords,
# and external S3 credentials if not using MinIO
nano .env Start the stack
docker compose up -d
# First start takes ~2-3 minutes (image downloads,
# DB migration). docker compose logs -f follows the logs. Create the initial admin
docker compose exec api npm run create-admin \
-- --email=you@studio.com --password=... Log in and first gallery
Studio login at https://your-domain.com. Create a studio, then a first gallery, upload a few test images — done.
Where to host?
We recommend Hetzner for European users — cheap, good performance, data centers in Germany and Finland. But any Linux server will do. Concrete guide:
- → Set up Lumio on a Hetzner VPS
- Synology NAS setup, AWS EKS setup and more guides to follow.
Common questions about the setup
What's the minimum hardware I need? +
For a solo studio, 4 CPU cores, 8 GB RAM and 100 GB SSD storage plus object storage (S3) are enough. The worker tasks (RAW decode, video transcoding) are the tightest — on a weaker machine the background jobs take noticeably longer, but work. A Hetzner CX22 (4 vCPU, 8 GB, ~€5/month) is a realistic entry setup.
Does the object storage have to be S3-compatible? +
Yes. Lumio supports MinIO (self-hosted on the same machine), AWS S3, Cloudflare R2, Backblaze B2, Wasabi, Hetzner Object Storage and in principle any S3-API-compatible provider. For local setups MinIO is easiest — it starts as a container next to Lumio. For production workloads we recommend external object storage (Hetzner, AWS S3 or Backblaze B2) so storage and compute can scale separately.
How do I do backups? +
Three data areas: (1) Postgres database — pg_dump in cron or with pgbackrest, (2) object storage — most S3 providers have built-in versioning and/or cross-region replication, (3) configuration — .env and docker-compose.yml in a private Git repo. We have a backup guide in the docs.
Can I switch to Lumio Cloud later? +
Yes, and the other way too. Both variants use the same database schema and the same S3 layout. Migrating from self-host to cloud requires a database dump + S3 sync (guide in the docs). Cloud → self-host: you export your data from the studio area and import it into your local instance.
Who handles the security updates? +
You yourself — self-hosting means self-responsibility. We publish security advisories on Forgejo (same place as the source code) and in the release notes. Updates come as new Docker images. `docker compose pull && docker compose up -d` is usually all that's needed. Schema migrations run automatically on start.
Is the FSL license a problem for my studio? +
No. The FSL expressly permits use for your own studio and for your clients (also as an agency). The only restriction applies only if you were to offer Lumio as a competing, hosted SaaS product for third parties. For the classic 'I host Lumio for my studio' case the FSL has no practical impact at all — and two years after each release the version automatically becomes Apache-2.0 (true open source) anyway.
Get started right away.
Lumio is source-available under the FSL — no license fees, no hidden costs. Code, docs, issue tracker on Forgejo.