Wie bringe ich meine Node.js-App auf den Server? (Ohne PM2 und Nginx, mit Plesk und Git)
· 6 Min. Lesezeit
Eine Node.js-App auf dem eigenen Rechner mit node server.js zu starten, ist einfach; schwierig ist es, dieselbe App auf einem Server zuverlässig, sicher und leicht aktualisierbar am Laufen zu halten. Auf einem leeren Linux-Server bedeutet das eine lange Einrichtung aus SSH-Zugang, Prozessmanager, Reverse Proxy und SSL-Konfiguration. In dieser Anleitung sehen wir uns zuerst die Bestandteile des klassischen Wegs an und zeigen dann Schritt für Schritt, wie Sie mit dem Plesk-Obsidian-Panel und Ihrem GitHub-Repository dasselbe Ergebnis erreichen, ohne ein Terminal zu öffnen.
Die 4 Bestandteile, die eine Node.js-App online halten
Auf einem klassischen Linux-Server (unverwalteter VPS) richten Sie jeden dieser Teile selbst ein und warten ihn:
- Node.js-Laufzeitumgebung: Die passende Node.js-Version auf dem Server installieren (meist mit
nvm) und Sicherheitsupdates im Blick behalten. - Prozessmanager: Das Werkzeug, das die App nach einem Absturz oder Server-Neustart wieder startet. Klassisch übernimmt das PM2; vergessen Sie die Schritte
pm2 startupundpm2 save, bleibt die App nach einem Server-Neustart offline. - Reverse Proxy: Der Webserver, der Anfragen auf den Ports 80 und 443 an den Port Ihrer App (z. B.
3000) weiterleitet. Ein einziger falscher Port in derproxy_pass-Zeile von Nginx erscheint für Besucher als 502 Bad Gateway. - SSL-Zertifikat: Ein Zertifikat für HTTPS beziehen und vor Ablauf erneuern.
In Plesk Obsidian werden alle vier Bestandteile im Panel abgedeckt: Die Node.js-Version wählen Sie aus einer Liste, Phusion Passenger betreibt Ihre App und bindet sie an den Webserver an, und das Let's-Encrypt-Zertifikat wird im Panel ausgestellt und automatisch erneuert. Deshalb müssen Sie weder PM2 installieren noch eine Nginx-Konfigurationsdatei schreiben.
Wege zum Node.js-Deployment im Vergleich
| Methode | Einrichtung und Wartung | Benötigtes Wissen | Geeignet für |
|---|---|---|---|
| Unverwalteter VPS (SSH + PM2 + Nginx) | Node.js, PM2, Nginx, SSL und Firewall werden von Hand eingerichtet; Betriebssystem-Updates liegen bei Ihnen | Linux-Serveradministration | Teams, die volle Kontrolle über den Server wollen |
| Open-Source-PaaS-Panel wie Coolify | Docker-basierter Build und Deployment per Git-Push; die Serverwartung liegt bei Ihnen | Docker-Grundlagen | Teams, die mehrere Dienste in Containern betreiben |
| Developer Hosting mit Plesk Obsidian (zuwinasa cloud) | Node.js-Version, npm, Umgebungsvariablen und SSL werden im Panel verwaltet; die Serverwartung übernimmt der Anbieter | Git- und npm-Grundlagen | Entwickler, die eine Express- oder NestJS-App zusammen mit Website, Datenbank und E-Mail in einem Panel verwalten möchten |
Node.js-App mit Plesk und Git in 5 Schritten veröffentlichen
1. Projekt für den Livebetrieb vorbereiten
Prüfen Sie in Ihrem Repository Folgendes, damit die App auf dem Server reibungslos läuft:
- Port: Da Plesk Ihre App über Passenger betreibt, legen Sie keinen festen Port fest. Lesen Sie den Port aus einer Umgebungsvariable:
app.listen(process.env.PORT || 3000). - Startdatei: Notieren Sie den Namen der Datei, die Ihre App startet (
app.js,server.jsoder bei TypeScript-Projekten das kompiliertedist/main.js). - Geheime Daten: Committen Sie Ihre
.env-Datei nicht; Datenbankadresse und API-Schlüssel legen Sie in Schritt 4 im Panel als Umgebungsvariablen an. - Abhängigkeiten:
package.jsonundpackage-lock.jsongehören ins Repository; der Ordnernode_moduleswird nicht committet, sondern auf dem Server installiert.
2. GitHub-Repository mit Plesk verbinden
- Öffnen Sie in Plesk Websites & Domains, wechseln Sie zum Menü Git Ihrer Domain und fügen Sie ein neues Repository hinzu.
- Wählen Sie als Quelle Remote-Git-Hosting (GitHub, Bitbucket usw.) und geben Sie die Adresse des Repositorys ein.
- Bei einem privaten Repository geben Sie die Adresse im SSH-Format ein (
[email protected]:benutzer/projekt.git). Kopieren Sie den von Plesk erzeugten öffentlichen SSH-Schlüssel und fügen Sie ihn in GitHub unter Settings > Deploy keys des Repositorys hinzu; dieser Schlüssel gewährt standardmäßig nur Lesezugriff auf dieses Repository. - Wählen Sie den Zielordner (standardmäßig
/httpdocs) und bestätigen Sie. Plesk klont das Repository und legt die Dateien in diesem Ordner ab.
3. Automatisches Deployment bei jedem Push aktivieren
- Lassen Sie in den Repository-Einstellungen (Repository Settings) den Deployment-Modus auf automatisch.
- Kopieren Sie die Webhook-URL aus demselben Fenster, legen Sie sie in GitHub unter Settings > Webhooks als neuen Webhook an und wählen Sie das Ereignis push als Auslöser. Ab jetzt holt Plesk bei jedem Push die Änderungen und veröffentlicht sie.
- Aktivieren Sie zusätzliche Deployment-Aktionen und tragen Sie die Befehle ein, die nach jedem Deployment laufen sollen, einen pro Zeile:
npm cifür die Abhängigkeiten,npm run buildfür den Build undmkdir -p tmp && touch tmp/restart.txt, damit die App mit dem neuen Code neu startet (Passenger startet die App neu, sobald sich der Zeitstempel dieser Datei im Anwendungsstamm ändert). - Bricht ein Befehl mit
npm: command not foundab, verwenden Sie den vollständigen npm-Pfad in Plesk:/opt/plesk/node/<version>/bin/npm.
4. Node.js-Einstellungen vornehmen
Füllen Sie im Menü Node.js Ihrer Domain diese Felder aus:
- Node.js-Version: Wählen Sie die LTS-Version, die Ihr Projekt unterstützt.
- Anwendungsstamm (Application Root): Der Ordner, in den das Repository deployt wird, z. B.
/httpdocs. - Dokumentenstamm (Document Root): Muss ein Unterordner des Anwendungsstamms sein, z. B.
/httpdocs/public; statische Dateien werden von hier ausgeliefert. - Anwendungsmodus (Application Mode):
production; dieser Wert wird in die VariableNODE_ENVgeschrieben. - Startdatei (Application Startup File): Die in Schritt 1 notierte Datei; Standard ist
app.js. - Benutzerdefinierte Umgebungsvariablen:
DATABASE_URL, API-Schlüssel und andere geheime Daten.
5. Abhängigkeiten installieren und App starten
- Installieren Sie die Abhängigkeiten aus der
package.jsonmit der Schaltfläche NPM install; braucht Ihr Projekt einen Build, führen Sie mit Run script das Skriptbuildaus. - Klicken Sie auf Enable Node.js; Ihre App ist nun unter Ihrer Domain online. Nach Änderungen an den Einstellungen starten Sie sie mit Restart App neu.
- Für HTTPS holen Sie unter SSL/TLS-Zertifikate ein kostenloses Let's-Encrypt-Zertifikat. Meldet die App einen Fehler, prüfen Sie die Node.js-Einträge in den Protokollen (Logs) Ihrer Domain.
Hinweis: Nutzt Ihre Startdatei die
import-Syntax (ES-Modul), kann Passenger beim Start mit dem Fehlerrequire() of ES Module is not supportedabbrechen. Legen Sie in diesem Fall im Anwendungsstamm eine Dateipassenger.cjsan, die nur die Zeileimport('./app.js');enthält, und wählen Sie diese als Startdatei.
Welches Paket unterstützt das?
Bei zuwinasa cloud ist Node.js-Unterstützung in den Developer-Hosting-Paketen (Full Stack und Dev-Box) enthalten; beide bieten standardmäßig Git-Integration und SSH-Zugang mit /bin/bash. Arbeiten Sie lieber im Terminal, können Sie npm-Befehle im selben Abonnement direkt per SSH ausführen. Läuft Ihre App mit Docker, passt ein Coolify-Server besser; brauchen Sie volle Kontrolle auf Betriebssystemebene, ist ein Cloud VPS mit Root-Zugang die richtige Wahl. Allgemeine Schritte zum Livegang wie Domain und DNS finden Sie in unserem Ratgeber Wie veröffentliche ich meine App im Internet?