Installation
Automatische Installation auf Debian, Ubuntu oder Raspberry Pi OS. Ein Script kümmert sich um alles — Node.js, Reverse Proxy und Datenbank.
Kein eigener Server gewünscht?
Diese Anleitung gilt für Self-Hosting. Alternativ gibt es LuxStage als gehosteten Service unter luxstage.app — ganz ohne eigene Server-Installation.
Installation auf eigene Gefahr
Bitte sichern Sie Ihre Daten und führen Sie das Script nur auf Systemen aus, auf denen Sie vollständige Kontrolle haben.
Voraussetzungen
Das Script benötigt root/sudo-Rechte, eine interaktive Terminal-Sitzung (kein Pipe-Aufruf wie curl | sudo bash), Internetzugang und apt-get — funktioniert also nur auf Debian, Ubuntu oder Raspberry Pi OS, nicht auf Fedora, Arch oder Alpine.
Das Script ändert den System-Hostnamen (hostnamectl set-hostname) und editiert /etc/hosts — ein Eingriff, der über LuxStage hinausgeht.
Schritt 1 — SSH-Zugang zum Server
Du brauchst Zugang via SSH auf deinen Server (Linux, Raspberry Pi, etc.)
ssh user@192.168.x.xOder wenn dein Server bereits einen Namen hat (z.B. raspberry.local):
ssh user@raspberry.localSchritt 2 — Installations-Script ausführen
Das Script lädt das neueste GitHub-Release herunter (nicht den main-Branch) und konfiguriert den Server automatisch. Der Versionsstand nach der Installation kann daher vom aktuellen main-Branch abweichen.
Führe diese zwei Befehle aus:
curl -fsSL https://raw.githubusercontent.com/Plobli/LuxStage/main/install.sh -o /tmp/luxstage-install.sh
sudo bash /tmp/luxstage-install.shLieber Docker?
Wenn du Docker bevorzugst, kannst du LuxStage auch per docker compose betreiben — siehe Docker-Installation unten. Der Installer hier ist der Docker-freie Weg (Node.js + PM2 direkt auf dem System).
Schritt 3 — Konfiguration eingeben
Das Script fragt dir ein paar Fragen. Drücke Enter für die Standardwerte.
Systemnutzer — Unter diesem Nutzer läuft der LuxStage-Dienst:
Systemnutzer für LuxStage [luxstage]: ⏎Hostname — Die App ist danach unter http://luxstage.local erreichbar:
Hostname [luxstage]: ⏎Externe Domain (optional) — Falls du LuxStage von außen erreichbar machen möchtest, gib deine Domain mit Schema ein (z.B. https://luxstage.example.com). Sonst einfach überspringen:
Externe Domain []: ⏎Admin-E-Mail — Dient zugleich als Login-Name:
Admin-E-Mail (dient als Login): du@beispiel.deAdmin-Passwort — Mindestens 8 Zeichen, wird zur Bestätigung zweimal abgefragt:
Admin-Passwort (mind. 8 Zeichen): ••••••••
Admin-Passwort bestätigen: ••••••••Admin-Passwort merken
Du brauchst es für die erste Anmeldung. Nach drei Fehlversuchen (leeres Passwort, zu kurz, oder Wiederholung stimmt nicht überein) bricht die Installation ab.
Weitere Nutzer
Das Script legt nur das Admin-Konto an. Techniker und weitere Administratoren fügst du nach der Anmeldung unter Einstellungen → Benutzer hinzu — jeweils mit eigener E-Mail-Adresse.
Schritt 4 — Was wird eingerichtet
- LuxStage-Server — startet automatisch beim Systemstart (via PM2)
- Web-App — im Browser aufrufbar, volle Funktionalität
- Caddy Reverse Proxy — automatisches HTTPS, kein Port nötig
- SQLite-Datenbank — eine Datei, kein separater Datenbankdienst nötig
- CORS — wird automatisch aus Hostname, Server-IP und externer Domain zusammengestellt. Rufst du die App später unter einer weiteren Adresse auf, die hier nicht bekannt war, gibt es CORS-Fehler.
Zusätzlich installiert das Script folgende Fremdpakete: build-essential, python3, unzip, caddy, avahi-daemon, sowie über ein Fremdscript von GitHub nvm, Node.js 22 und PM2. Relevant für Systeme mit Compliance-Vorgaben.
Schritt 5 — Neustart (empfohlen)
Am Ende empfiehlt das Script einen Neustart, damit der neue Hostname aktiv wird — zwingend nötig ist er nicht, LuxStage läuft bereits vorher über PM2. Empfohlen:
sudo rebootErster Zugriff
Nach dem Neustart öffne einen Browser:
- Intern:
http://luxstage.local - Oder direkt:
http://SERVER-IP(z.B.http://192.168.1.100) - Externe Domain (falls konfiguriert):
https://luxstage.example.com
Zugangsdaten
| Konto | Login | Passwort |
|---|---|---|
| Admin | Deine E-Mail aus der Installation | Passwort aus der Installation |
Der Login-Name ist immer die E-Mail-Adresse.
Benutzerrollen
| Rolle | Rechte |
|---|---|
| Administrator | Alles, inkl. Vorlagen, Backup, Updates |
| Techniker | Produktionen lesen und bearbeiten, keine Vorlagen/Backup |
Weitere Nutzer legst du unter Einstellungen → Benutzer an. Ist SMTP eingerichtet, bekommen sie ihr Startpasswort per E-Mail.
Troubleshooting
Nicht erreichbar unter luxstage.local?
Versuche die IP-Adresse direkt zu verwenden. Den Hostname findest du so:
ip addr showOder teste mDNS:
avahi-resolve-address 127.0.0.1Server startet nach Reboot nicht?
Prüfe den Status von PM2 (der Process Manager):
sudo -u luxstage pm2 statusSchau dir die Logs an:
sudo journalctl -u pm2-luxstage -n 50Port 3000 wird von anderem Prozess verwendet?
Ändere den Port in der PM2-Konfiguration:
nano /home/luxstage/LuxStage/ecosystem.config.cjsPasse auch Caddy an:
sudo nano /etc/caddy/CaddyfileServices neu starten:
systemctl restart caddy && sudo -u luxstage pm2 restart allDocker-Installation
Alternative zum Installer oben: LuxStage per docker compose betreiben. Geeignet für alle Systeme mit Docker, nicht auf Debian/Ubuntu beschränkt.
- Repository klonen oder
docker-compose.ymlsowie.env.exampleherunterladen .env-Datei anlegen (aus.env.examplekopieren) und ausfüllen:
# Pflicht: mindestens 32 zufällige Zeichen
JWT_SECRET=$(openssl rand -hex 32)
# Pflicht: Admin-Zugangsdaten für den ersten Start
ADMIN_EMAIL=du@beispiel.de
ADMIN_PASSWORD=deinPasswort
# Optional: kommasepariert, weitere Adressen von denen die Web-App geladen wird
CORS_ORIGINS=http://192.168.1.100,https://luxstage.example.com- Container starten:
docker compose up -dDer Server ist danach unter Port 3030 erreichbar (Standardkonfiguration, im Compose-File anpassbar), Daten liegen im Docker-Volume luxstage-data. Anders als beim Script-Installer übernimmt hier kein Caddy automatisch HTTPS — dafür braucht es einen eigenen Reverse Proxy vor dem Container.
Hilfe & Support
- GitHub Issues — Probleme melden oder Fragen stellen
- E-Mail: hello@luxstage.app
