Zum Inhalt springen

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:

  1. Node.js-Laufzeitumgebung: Die passende Node.js-Version auf dem Server installieren (meist mit nvm) und Sicherheitsupdates im Blick behalten.
  2. Prozessmanager: Das Werkzeug, das die App nach einem Absturz oder Server-Neustart wieder startet. Klassisch übernimmt das PM2; vergessen Sie die Schritte pm2 startup und pm2 save, bleibt die App nach einem Server-Neustart offline.
  3. 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 der proxy_pass-Zeile von Nginx erscheint für Besucher als 502 Bad Gateway.
  4. 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.js oder bei TypeScript-Projekten das kompilierte dist/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.json und package-lock.json gehören ins Repository; der Ordner node_modules wird 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 ci für die Abhängigkeiten, npm run build für den Build und mkdir -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 found ab, 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 Variable NODE_ENV geschrieben.
  • 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.json mit der Schaltfläche NPM install; braucht Ihr Projekt einen Build, führen Sie mit Run script das Skript build aus.
  • 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 Fehler require() of ES Module is not supported abbrechen. Legen Sie in diesem Fall im Anwendungsstamm eine Datei passenger.cjs an, die nur die Zeile import('./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?

Häufig gestellte Fragen

Was passiert ohne PM2, wenn meine App abstürzt?

In Plesk übernimmt Phusion Passenger die Rolle des Prozessmanagers: Es startet einen abgestürzten App-Prozess neu und leitet eingehende Anfragen an den neuen Prozess weiter. Auch nach einem Server-Neustart läuft Ihre App ohne zusätzliche Einrichtung weiter. Bleibt ein Fehler bestehen, finden Sie die Ursache in den Node.js-Einträgen der Protokolle Ihrer Domain.

Kann ich mit meiner Node.js-App eine Datenbank nutzen?

Ja. In den Developer-Hosting-Paketen von zuwinasa cloud stehen MariaDB 10.11 und PostgreSQL 15 bereit; das Dev-Box-Paket enthält zusätzlich Redis Cache. Sie legen die Datenbank in Plesk unter Datenbanken an und übergeben die Verbindungsdaten über eine Umgebungsvariable wie DATABASE_URL an Ihre App.

Kann ich in Plesk npm-Befehle per SSH ausführen?

Ja. Die Developer-Hosting-Pakete von zuwinasa cloud bieten vollen SSH-Zugang mit der Shell /bin/bash; npm, git und eigene Skripte führen Sie direkt im Terminal aus. Panel und Terminal lassen sich kombinieren: Sie können zum Beispiel Abhängigkeiten per SSH installieren und die App im Panel neu starten.

Welche Node.js-Version kann ich verwenden?

In Plesk wählen Sie für jede Domain getrennt eine der auf dem Server installierten Node.js-Versionen; bei zuwinasa cloud stehen aktuelle LTS-Versionen bereit. Am besten wählen Sie die Version, die zum Feld engines in der package.json Ihres Projekts passt. Nach einem Versionswechsel verhindert eine Neuinstallation der Abhängigkeiten Build-Fehler.

Bereit, Ihr Projekt live zu bringen?

Mit Plesk Obsidian, AMD-EPYC-Prozessoren und kostenloser Migration in wenigen Minuten online.