Lumio auf Netcup oder Contabo installieren.
Günstige VPS mit EU-Rechenzentren — die preiswerten Geschwister von Hetzner. Der Ablauf ist derselbe; hier stehen die anbieterspezifischen Unterschiede und ein kompakter Deploy-Weg.
Warum Netcup / Contabo?
- Günstig und EU-basiert — DSGVO-freundliche Standorte in Deutschland/Österreich
- Feste öffentliche IP — kein CGNAT-Gefummel, Caddy holt HTTPS automatisch
- Unterschied zu Hetzner: keine separate Cloud-Firewall — die Absicherung läuft über ufw im System
- Contabo ist am billigsten (viel RAM/Storage), teilt sich die CPU aber stärker; Netcup liegt dazwischen
Schritt 1 — Server bestellen
- Image: Ubuntu 22.04 LTS
- Standort: ein EU/DE-Rechenzentrum wählen
- Größe: mindestens 4 GB RAM (nur Fotos), 8 GB mit Video; auf echte vCPUs achten
- SSH-Key hinterlegen (oder nach dem ersten Login einrichten)
Schritt 2 — Absichern & Docker
Ohne Cloud-Firewall ist ufw hier Pflicht. Kompakt — ausführlicher (Nicht-root-User, SSH härten, fail2ban) in der Hetzner-Anleitung:
sudo apt update && sudo apt upgrade -y
# Firewall — nur das Nötige
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw --force enable
# Docker-Engine + Compose-Plugin
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# neu einloggen, dann testen:
docker run --rm hello-world Schritt 3 — DNS & Lumio deployen
Einen A-Record deiner Domain auf die Server-IP legen, dann:
sudo mkdir -p /opt/lumio && sudo chown $USER:$USER /opt/lumio
cd /opt/lumio
git clone https://github.com/markusthiel/lumio.git .
cp .env.example .env
# 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
# Domain setzen (Caddy holt Let's-Encrypt automatisch):
# LUMIO_HOST=fotos.deinstudio.de
# PUBLIC_URL=https://fotos.deinstudio.de
# S3_PUBLIC_URL=https://fotos.deinstudio.de/s3
nano .env
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d Schritt 4 — Admin anlegen & einloggen
docker compose exec api npm run create-admin \
-- --email=du@deinstudio.de --password=mind12zeichen
Login unter https://fotos.deinstudio.de. Caddy holt beim ersten Aufruf das Zertifikat — das dauert ein paar Sekunden. Backups regelt die
Backup-Anleitung.
Häufige Fragen zu Netcup & Contabo
Netcup, Contabo oder Hetzner — was nehmen? +
Alle drei haben Rechenzentren in Deutschland/EU und sind DSGVO-freundlich. Hetzner ist der Referenz-Anbieter mit sehr guter Preis/Leistung und dedizierten CPU-Optionen. Netcup ist ähnlich solide, oft mit etwas mehr RAM fürs Geld. Contabo ist am günstigsten und gibt dir viel RAM und Storage, teilt sich die CPU aber stärker mit anderen (oversubscribed) — für ein Foto-Studio meist okay, für Video-lastige Workflows eher grenzwertig.
Gibt es eine Cloud-Firewall wie bei Hetzner? +
Nicht in gleicher Form. Bei Hetzner Cloud gibt es zusätzlich zur OS-Firewall eine Cloud-Firewall in der Konsole. Bei Netcup und Contabo verlässt du dich in der Regel auf die Firewall im Betriebssystem (ufw). Deshalb ist das Absichern per ufw hier besonders wichtig — nur 22, 80 und 443 offen.
Reicht die Leistung für Lumio? +
Für ein Solo-Studio ja. Achte auf genug RAM (4 GB nur Fotos, 8 GB mit Video) und darauf, dass es echte vCPUs sind. Bei Contabos günstigen Tarifen ist die CPU geteilt — Transcoding dauert dann länger. Wer viel Video hat, nimmt eher einen Tarif mit dedizierten Kernen oder greift zu Netcup/Hetzner.
Wo stehen die Server, Stichwort DSGVO? +
Netcup betreibt Rechenzentren in Deutschland und Österreich, Contabo hat u.a. Standorte in Deutschland (wählbar bei der Bestellung), Hetzner in Deutschland und Finnland. Für DSGVO-sensible Kundendaten wählst du einfach einen EU-Standort — das ist einer der Hauptgründe, überhaupt selbst zu hosten.
Brauche ich eine feste IP? +
VPS dieser Anbieter kommen mit einer festen öffentlichen IPv4 — anders als ein Heimanschluss musst du dir um CGNAT oder DynDNS keine Gedanken machen. Du legst einfach einen A-Record deiner Domain auf die Server-IP, und Caddy holt das HTTPS-Zertifikat automatisch.
Bereit für deine eigene Galerie?
Source-Code auf GitHub, Fragen und Diskussionen ebenfalls dort. Wenn in der Anleitung etwas hakt, melde dich — wir verbessern die Docs gerne.