Lumio / self-hosted
Anleitung

Lumio auf einer Synology NAS installieren.

Schritt für Schritt vom Container Manager bis zur ersten Galerie — plus ehrliche Einordnung, welche Modelle sich eignen und wo die Grenzen liegen. Lumio bringt seinen Speicher (MinIO) selbst mit, läuft also ohne Cloud.

Passt deine Synology?

Lumio ist ein reiner Docker-Compose-Stack, der alles Nötige mitbringt (PostgreSQL, Redis, MinIO als Objektspeicher, Caddy, die App selbst). Damit läuft er auf einer ausreichend potenten NAS — diese Punkte sollten aber passen:

  • DSM 7.2 oder neuer mit Container Manager — der bringt Docker ≥ 24 und Compose v2 mit (das alte Docker-Paket reicht nicht)
  • 64-Bit-Modell — x86-64-Plus-Modelle (DS920+/DS923+, DS1522+/DS1621+) empfohlen; arm64 läuft auch, alte 32-Bit-ARM-Modelle nicht
  • RAM: nur Fotos ab 4 GB, mit Video 8 GB, KI-Tagging nochmal +4 GB (auf der NAS besser aus)
  • Freier Platz auf einem Volume für die Daten (Bilder, Datenbank)

Hat deine NAS nur 2 GB RAM oder ist ein 32-Bit-ARM-Modell: eher nicht empfehlenswert.

Leistung & Grenzen — ehrlich

Was dich erwartet:

  • Der erste Start baut die Images selbst (Frontend, API, Python-Worker mit libvips). Auf einer NAS-CPU ist das langsam und RAM-hungrig — rechne mit 10–30+ Minuten und ein paar GB freiem RAM.
  • Video-Transcoding ist die schwerste Aufgabe (x264 auf CPU). Eine 2-Kern-NAS transkodiert langsam und nacheinander; reine Foto-Studios sind viel leichter.
  • Kunden-Downloads laufen direkt aus dem lokalen Speicher der NAS — das Tempo hängt an deiner Upload-Bandbreite zu Hause. Große ZIPs werden automatisch in Teile gesplittet.

Womit du leben musst:

  • Kein GPU-Tagging — braucht NVIDIA/CUDA, gibt es auf keiner Synology. KI-Tagging läuft nur auf CPU (langsamer) und ist auf der NAS am besten aus.
  • Ports 80/443 belegt DSM — wir legen Lumios Caddy auf hohe Ports und stellen den DSM-Reverse-Proxy davor (Schritt 4).
  • DSM-Updates und Neustarts starten die Container neu; dank Restart-Policy kommen sie von allein zurück, aber mit ein paar Minuten Ausfall.
  • Das hier ist Single-Studio-Self-Hosting — Multi-Tenant mit Wildcard-TLS willst du auf einer Heim-NAS nicht betreiben.

Schritt 1 — Container Manager & Dateien

Installiere Container Manager aus dem Paket-Zentrum (DSM 7.2+) und aktiviere SSH (Systemsteuerung → Terminal & SNMP). Dann per SSH:

# Compose v2 prüfen
sudo docker compose version   # muss v2.x zeigen

# Ordner anlegen und Quellcode holen
mkdir -p /volume1/docker && cd /volume1/docker
git clone https://github.com/markusthiel/lumio.git
cd lumio
cp .env.example .env

Ist git auf deiner NAS nicht vorhanden: das Repository am PC als ZIP laden und den entpackten Ordner per File Station nach /volume1/docker/lumio hochladen.

Schritt 2 — Secrets & Ports

Sichere Zufalls-Secrets erzeugen:

sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$(openssl rand -base64 24 | tr -d '/+=')|" .env
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')|" .env
sed -i "s|^SESSION_SECRET=.*|SESSION_SECRET=$(openssl rand -base64 32 | tr -d '/+=')|" .env
sed -i "s|^S3_ACCESS_KEY=.*|S3_ACCESS_KEY=$(openssl rand -hex 12)|" .env
sed -i "s|^S3_SECRET_KEY=.*|S3_SECRET_KEY=$(openssl rand -base64 32 | tr -d '/+=')|" .env

DEPLOYMENT_MODE=single ist der Default — so lassen. Single-Mode legt beim ersten Start automatisch ein Studio an, kein Super-Admin nötig.

DSM lauscht schon auf 80/443. Lege Lumios Caddy in der .env auf hohe Ports, damit nichts kollidiert:

CADDY_HTTP_PORT=8080
CADDY_HTTPS_PORT=8443

Schritt 3 — TLS über den DSM-Reverse-Proxy

Der sauberste Weg auf einer NAS: DSM terminiert HTTPS mit einem von Synology verwalteten Zertifikat und leitet einfaches HTTP an Lumios Caddy weiter. Lumios Caddy unterstützt diesen External-Reverse-Proxy-Modus ausdrücklich.

  1. DNS: zwei Namen auf die NAS zeigen lassen — echte Domain oder Synology-DDNS (z.B. name.synology.me): galerie.example.com und s3.example.com.
  2. Zertifikat: Systemsteuerung → Sicherheit → Zertifikat, Let's-Encrypt für beide Namen holen.
  3. Reverse-Proxy: Systemsteuerung → Anmeldeportal → Erweitert → Reverse-Proxy, zwei Regeln auf http://localhost:8080; HTTP/2 und WebSocket aktivieren, Host-Header durchreichen.

Dann Lumio seine öffentliche Identität mitteilen (in der .env):

LUMIO_HOST=galerie.example.com
LUMIO_S3_HOST=s3.example.com
PUBLIC_URL=https://galerie.example.com
S3_PUBLIC_URL=https://s3.example.com

Caddy vertraut X-Forwarded-Proto aus privaten Netzen und erkennt das von DSM terminierte HTTPS korrekt.

Alternative: Willst du lieber Caddy selbst die Zertifikate holen lassen, musst du 80/443 freiräumen (DSM-Ports verlegen oder am Router weiterleiten) — auf einer NAS meist mehr Aufwand.

Schritt 4 — Starten & Admin anlegen

# Stack starten — der erste Lauf baut die Images (Geduld, siehe Leistung)
sudo docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

# Fortschritt ansehen
sudo docker compose logs -f

Sobald alles läuft, den ersten Benutzer anlegen:

sudo docker compose exec api npm run create-admin \
  -- --email=du@example.com --password=mind12zeichen

Studio-Login unter https://galerie.example.com. Fertig, wenn Test-Galerie anlegen, Bild hochladen, Link teilen und vom Handy öffnen einmal durchläuft.

Häufige Fragen zum Synology-Setup

Welche Synology-Modelle eignen sich für Lumio? +

Am besten x86-64-Plus-Modelle mit genug RAM — etwa DS920+/DS923+ oder DS1522+/DS1621+. 64-Bit-ARM-Modelle (arm64) laufen ebenfalls, nur ohne GPU-Tagging. Alte 32-Bit-ARM-Einsteigermodelle werden nicht unterstützt. Grundvoraussetzung ist immer DSM 7.2 oder neuer mit dem Container Manager, denn der bringt Docker Compose v2 mit.

Reicht der Arbeitsspeicher meiner NAS? +

Faustregel: nur Fotos mindestens 4 GB, mit Video-Transcoding 8 GB, und das optionale KI-Auto-Tagging nochmal 4 GB obendrauf. 2-GB-Einsteigermodelle sind zu klein. Viele Plus-Modelle lassen sich auf 8 bis 32 GB aufrüsten — auf einer NAS lohnt sich das fast immer.

Kann ich das KI-Auto-Tagging auf der NAS nutzen? +

Technisch ja, aber ohne GPU läuft es nur auf der CPU — deutlich langsamer und speicherhungrig (rund 4 GB extra, das ML-Image ist ~2,5 GB). GPU-Beschleunigung braucht NVIDIA/CUDA und ist auf keiner Synology verfügbar. Auf einer NAS empfehlen wir, das ML-Profil wegzulassen; alle anderen Funktionen laufen ohne.

Wie schnell sind Galerie-Downloads für meine Kunden? +

Die Dateien liegen lokal auf der NAS, deshalb begrenzt deine Upload-Bandbreite zu Hause das Tempo — nicht die NAS selbst. Große Downloads werden automatisch in mehrere Teil-ZIPs aufgeteilt, was bei wackligen Verbindungen hilft. Für sehr große Archive oder viele gleichzeitige Kunden lohnt sich externes S3 (Hetzner, Backblaze B2), dann fährt die NAS nur die App.

Wie mache ich Backups? +

Zwei Dinge sichern: die Postgres-Datenbank und die Objektdaten (das MinIO-Volume). Synology Hyper Backup kann den Ordner /volume1/docker/lumio samt der Docker-Volumes sichern — idealerweise auf ein zweites Ziel außer Haus. Details stehen in der Backup-Doku im Repository.

Bereit für deine eigene Galerie?

Source-Code auf GitHub, Fragen und Diskussionen ebenfalls dort. Wenn in der Synology-Anleitung etwas hakt, melde dich — wir verbessern die Docs gerne.