Node.js auf Windows Server installieren
Diese Anleitung zeigt, wie Sie Node.js auf Windows Server installieren. Sie erfahren, wie Sie Node.js LTS installieren, per MSI-Installer oder winget, und wie nvm-windows mehrere Versionen verwaltet. Danach stellen Sie eine Anwendung bereit, starten sie als Windows-Dienst beim Booten und öffnen die Firewall. Die Befehle sind für einen Windows-VPS von OuiHeberg gedacht, der mit Windows Server 2025 ausgeliefert wird. Verbinden Sie sich zuerst per Remotedesktop, wie in Verbindung zu einem Windows-VPS über RDP herstellen beschrieben.
Version und Methode wählen
Installieren Sie immer eine LTS-Version, sie wird länger gepflegt. Seit dem 28. Oktober 2026 ist Node.js 26 die aktive LTS. Node.js 24 und 22 erhalten weiterhin Sicherheitskorrekturen. Node.js 20 wird seit dem 30. April 2026 nicht mehr gepflegt. Der offizielle Release-Plan nennt die aktuellen Daten.
Drei Methoden stehen zur Wahl, um Node.js auf Windows Server zu installieren.
| Methode | Einsatz | Stärke | Grenze |
|---|---|---|---|
| MSI-Installer | Eine Anwendung in Produktion | Systemweit installiert | Für eine neue Hauptversion neu installieren |
| winget | Dasselbe mit einem Befehl | In Windows Server 2025 enthalten | Nur eine Version gleichzeitig |
| nvm-windows | Mehrere Versionen testen | Versionswechsel mit einem Befehl | Im Benutzerprofil installiert, für einen Dienst ungeeignet |
Für eine Anwendung, die dauerhaft laufen soll, nehmen Sie den MSI-Installer oder winget. Der unten beschriebene Windows-Dienst nutzt dieses Node.js. Verwenden Sie nvm-windows auf einem Entwicklungs- oder Testserver.
Node.js mit dem MSI-Installer installieren
Öffnen Sie auf dem VPS die Download-Seite von Node.js.
Wählen Sie die LTS-Version für Windows auf x64 und laden Sie den Windows Installer (.msi) herunter.
Starten Sie die Datei und behalten Sie die Standardoptionen. Die Option Add to PATH muss aktiv bleiben.
Öffnen Sie ein neues PowerShell-Fenster und prüfen Sie die installierten Versionen.
node -v
npm -v
Die erste Zeile zeigt die Node.js-Version, zum Beispiel v26.13.0. Die zweite zeigt die npm-Version. Für eine andere Hauptversion deinstallieren Sie Node.js in den Windows-Einstellungen und installieren dann das MSI der gewünschten Version.
Node.js mit winget installieren
winget, der Paketmanager von Windows, ist laut Microsoft auf Windows Server 2025 vorinstalliert. Ein Befehl installiert die aktuelle LTS.
winget install OpenJS.NodeJS.LTS
Das Paket installiert dasselbe MSI, systemweit. Schließen Sie PowerShell, öffnen Sie es erneut und prüfen Sie mit node -v. Mit diesem Befehl aktualisieren Sie Node.js später.
winget upgrade OpenJS.NodeJS.LTS
nvm-windows für den Versionswechsel installieren
nvm-windows installiert mehrere Node.js-Versionen nebeneinander und wechselt zwischen ihnen. Es ist ein eigenes Projekt, unabhängig von nvm, das nur unter Linux und macOS läuft. Version 2 wird ohne Administratorrechte in Ihr Benutzerprofil installiert.
Node.js ist schon per MSI oder winget installiert? Deinstallieren Sie es zuerst. Zwei Node.js-Installationen im PATH sorgen für Verwirrung.
Installieren Sie nvm-windows mit winget. Alternativ laden Sie den Installer setup.exe von der Release-Seite von nvm-windows herunter.
winget install nvm-windows
Öffnen Sie ein neues PowerShell-Fenster. Prüfen Sie, ob nvm antwortet, und installieren und aktivieren Sie dann die neueste LTS.
# Prüfen, ob nvm-windows antwortet
nvm env
# Neueste LTS installieren und aktivieren
nvm install lts
nvm use lts
node -v
npm -v
nvm use ändert die Standardversion, die auch für spätere Sitzungen gilt. Die übrigen Befehle beschreibt die Dokumentation von nvm-windows.
Version wechseln und Node.js aktualisieren
nvm-windows legt jede Version in einem eigenen Ordner ab. So testen Sie Ihre Anwendung mit einer anderen Version, ohne etwas zu deinstallieren.
# Weitere Hauptversionen installieren
nvm install 24
nvm install 22
# Zu Node.js 24 wechseln
nvm use 24
# Installierte Versionen auflisten (* = aktive Version)
nvm list
Für eine neue LTS installieren Sie diese, testen Ihre Anwendung und entfernen dann die alte Version.
# Neue LTS installieren und aktivieren
nvm install lts
nvm use lts
# Alte Version entfernen, wenn alles funktioniert
nvm uninstall 22
Testen Sie Ihre Anwendung, bevor Sie in Produktion die Version wechseln. Manche npm-Pakete hängen von einer bestimmten Hauptversion von Node.js ab.
Mit dem MSI oder winget aktualisieren Sie über winget upgrade oder das MSI der neuen Version.
Eine Node.js-Anwendung auf Windows Server bereitstellen
Eine kleine Express-Anwendung prüft die Installation von Anfang bis Ende. Legen Sie den Projektordner an und installieren Sie Express.
mkdir C:\apps\monapp
cd C:\apps\monapp
npm init -y
npm install express
Erstellen Sie die Datei server.js und öffnen Sie sie im Editor.
New-Item server.js
notepad server.js
Fügen Sie diesen Code ein, speichern Sie und schließen Sie den Editor.
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('Hallo von OuiHeberg VPS!');
});
app.listen(PORT, () => {
console.log(`Server läuft auf Port ${PORT}`);
});
Starten Sie die Anwendung.
node server.js
Öffnen Sie in einem Browser auf dem VPS http://localhost:3000. Die Seite zeigt diese Meldung.
Hallo von OuiHeberg VPS!
Mit Ctrl+C beenden Sie die Anwendung. So gestartet, endet sie auch, wenn Sie PowerShell schließen.
Die Anwendung mit PM2 überwachen
PM2 startet eine abgestürzte Node.js-Anwendung neu und sammelt ihre Logs. Es ist freie Software unter MIT-Lizenz. Das kostenpflichtige PM2 Plus ergänzt eine Online-Überwachung, die die meisten Projekte nicht brauchen.
npm install -g pm2
pm2 start C:\apps\monapp\server.js --name "monapp"
| Befehl | Wirkung |
|---|---|
pm2 list | Listet die Prozesse auf |
pm2 logs monapp | Zeigt die Logs live an |
pm2 restart monapp | Startet die Anwendung neu |
pm2 stop monapp | Stoppt die Anwendung |
pm2 monit | Zeigt CPU und Arbeitsspeicher live an |
pm2 delete monapp | Entfernt die Anwendung aus PM2 |
PM2 läuft in Ihrer Windows-Sitzung. Sein Befehl pm2 startup, der es beim Booten neu startet, kennt laut Dokumentation von PM2 nur die Init-Systeme von Linux, macOS, BSD und Solaris. Unter Windows funktioniert er nicht. Damit die Anwendung mit dem Server startet, richten Sie sie als Windows-Dienst ein.
Die Anwendung beim Booten als Windows-Dienst starten
Ein Windows-Dienst startet mit dem Server, ohne offene Sitzung, und kann nach einem Absturz neu starten. Node.js kann sich nicht selbst als Dienst registrieren. WinSW, ein freies Werkzeug unter MIT-Lizenz, übernimmt das. Der Dienst nutzt das Node.js aus dem MSI oder winget, installiert in C:\Program Files\nodejs.
Legen Sie einen Ordner für den Dienst an und laden Sie WinSW unter dem Namen monapp.exe herunter. Der letzte Befehl öffnet die Konfigurationsdatei im Editor.
New-Item -ItemType Directory -Path C:\services\monapp
Invoke-WebRequest -Uri "https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe" -OutFile "C:\services\monapp\monapp.exe"
notepad C:\services\monapp\monapp.xml
Fügen Sie diese Konfiguration ein und speichern Sie. Die XML-Datei trägt denselben Namen wie die ausführbare Datei.
<service>
<id>monapp</id>
<name>monapp (Node.js)</name>
<description>Node.js monapp</description>
<executable>C:\Program Files\nodejs\node.exe</executable>
<arguments>C:\apps\monapp\server.js</arguments>
<workingdirectory>C:\apps\monapp</workingdirectory>
<env name="NODE_ENV" value="production" />
<startmode>Automatic</startmode>
<onfailure action="restart" delay="10 sec" />
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
</service>
Das Tag onfailure startet die Anwendung neu, wenn sie stoppt. Die Logs monapp.out.log und monapp.err.log landen im Ordner des Dienstes, mit einer neuen Datei alle 10 MB.
Installieren und starten Sie den Dienst in einer PowerShell mit Administratorrechten.
# Port freigeben, falls PM2 die Anwendung schon ausführt
pm2 delete monapp
cd C:\services\monapp
.\monapp.exe install
.\monapp.exe start
.\monapp.exe status
Get-Service monapp
status sollte Started melden und Get-Service den Status Running zeigen. Der Dienst erscheint auch in der Konsole Dienste, mit automatischem Start. Starten Sie den VPS neu, um zu prüfen, ob die Anwendung von selbst wiederkommt.
# Nach einer Aktualisierung des Codes
.\monapp.exe restart
# Dienst entfernen
.\monapp.exe stop
.\monapp.exe uninstall
Standardmäßig startet WinSW den Dienst mit dem Konto LocalSystem, das alle Rechte auf der Maschine hat. Die Dokumentation zeigt, wie Sie mit dem Tag
serviceaccountein Konto mit weniger Rechten wählen.
Die Windows-Firewall für Node.js konfigurieren
Der Kundenbereich hat keine Netzwerk-Firewall für VPS. Nur die Windows-Firewall filtert die Verbindungen. Öffnen Sie die Ports in einer PowerShell mit Administratorrechten.
# Port 3000 (Tests)
New-NetFirewallRule -DisplayName "Node.js Dev" -Direction Inbound -Protocol TCP -LocalPort 3000 -Action Allow
# Port 80 (HTTP)
New-NetFirewallRule -DisplayName "Node.js HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
# Port 443 (HTTPS)
New-NetFirewallRule -DisplayName "Node.js HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Prüfen Sie danach die Regeln. Jede sollte in der Spalte Enabled den Wert True zeigen.
Get-NetFirewallRule -DisplayName "Node.js*" | Select Name, Enabled
Öffnen Sie Port 3000 nur für Ihre Tests. In Produktion setzen Sie einen Reverse Proxy wie IIS oder Nginx auf die Ports 80 und 443. Er verteilt die Anfragen auf Ihre Anwendungen, jede auf ihrem eigenen Port (3000, 3001, 3002…). Die Anleitung IIS auf Windows Server installieren beschreibt die Einrichtung von IIS. Für den Rest der Firewall folgen Sie Die Windows Server-Firewall auf einem VPS konfigurieren.
Häufige Fehler beheben
„node“ wird nicht erkannt
PowerShell hat den neuen PATH noch nicht gelesen. Schließen Sie es und öffnen Sie es erneut. Mit nvm-windows führen Sie zusätzlich nvm use lts aus.
„nvm“ wird nicht erkannt
Öffnen Sie ein neues PowerShell-Fenster. Bleibt der Fehler, installieren Sie nvm-windows neu.
Fehler EACCES oder EPERM bei npm install -g
Starten Sie PowerShell als Administrator neu und führen Sie den Befehl erneut aus.
Port 3000 ist bereits belegt
Ein anderer Prozess belegt den Port, oft eine erste Kopie der Anwendung. Ermitteln Sie seine Nummer und beenden Sie ihn.
netstat -ano | findstr :3000
taskkill /PID [PID] /F
Ersetzen Sie [PID] durch die Nummer aus der letzten Spalte.
Der Dienst startet nicht
Lesen Sie monapp.err.log in C:\services\monapp. Prüfen Sie auch den Pfad zu node.exe in der XML-Datei. Ein mit nvm-windows installiertes Node.js sieht der Dienst nicht.
Nach einem Versionswechsel fehlen Module
Jede Node.js-Version hat ihre eigenen globalen Module. Führen Sie nach nvm use im Projektordner erneut npm install aus. Installieren Sie auch PM2 neu, falls Sie es nutzen.
Brauchen Sie Hilfe?
Eröffnen Sie ein Ticket über Tickets › Ticket öffnen oder über die Kachel Support kontaktieren unten auf der VPS-Seite. Wählen Sie im Feld Betreffender Dienst den VPS aus, das spart dem Team Zeit. Sie können Ihre Frage auch auf dem Discord von OuiHeberg stellen.
Windows Server 2025 inklusive Lizenz, Remotedesktop-Zugang und Verwaltung im Kundenbereich.
Angebote ansehen →