Kurz gesagt: Um Node.js zu installieren, fügst du unter Ubuntu oder Debian das Repository von NodeSource hinzu und führst sudo apt install nodejs aus. Das installiert das aktuelle LTS-Release mit npm und npx. Für mehrere Versionen pro Benutzer nimmst du nvm: nvm install --lts. Unter Windows und Windows Server installierst du das LTS-.msi von nodejs.org, npm ist darin schon enthalten. Danach prüfst du mit node -v und npm -v.
sudo apt update && sudo apt install -y ca-certificates curl
curl -fsSL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt install -y nodejs
node -v && npm -vEin einfaches sudo apt install nodejs ohne NodeSource ist die verlockende Abkürzung, und auf einem neuen Server die falsche: Das Paket von Debian 12 selbst ist Node.js 18 (18.20.4 im Paketindex von bookworm), dessen Support beim Node.js-Projekt bereits ausgelaufen ist, und npm ist dort ein eigenes Paket. Der Rest dieser Anleitung behandelt die Wahl der Version, nvm, die offiziellen Binaries, Windows Server, das Update von Node.js und npm und den Dauerbetrieb einer App.
Welche Node.js-Version solltest du installieren?
Bis Node.js 26 erschien alle sechs Monate eine neue Hauptversion. Hauptversionen mit gerader Nummer werden zu LTS-Releases (Long Term Support) und bekommen ab ihrer ersten Veröffentlichung etwa 30 Monate lang Sicherheitskorrekturen; Hauptversionen mit ungerader Nummer sind „Current“-Releases, werden nie LTS und laufen nach etwa acht Monaten aus. Auf einen Server gehört eine LTS-Linie. Der Zeitplan, Stand Oktober 2026, nach dem Release-Plan von Node.js (nodejs.org und das Repository nodejs/Release, das auch jede Änderung an diesem Rhythmus ankündigt):
| Linie | Status | Support-Ende |
|---|---|---|
| Node.js 26 | Current, soll Ende Oktober 2026 LTS werden | April 2029 |
| Node.js 24 (Krypton) | LTS, seit Oktober 2026 in der Maintenance-Phase | 30. April 2028 |
| Node.js 22 (Jod) | LTS, Maintenance-Phase | 30. April 2027 |
| Node.js 25 | Ungerade Nummer, nie LTS | Juni 2026 ausgelaufen |
| Node.js 20 (Iron) | End of Life, kein Support mehr | Am 30. April 2026 ausgelaufen |
| Node.js 18 und älter | End of Life, kein Support mehr | April 2025 oder früher ausgelaufen |
Für eine neue Installation heißt das heute Node.js 24, oder 26, sobald es LTS ist und dein Framework es unterstützt. Termine verschieben sich, also prüf selbst, statt einem Artikel zu vertrauen, auch diesem hier:
nvm ls-remote --lts | tail -n 3 # die neuesten LTS-Releases (braucht nvm, siehe unten)
node -p process.release.lts # LTS-Codename des laufenden node, oder undefinedAuch die Download-Seite auf nodejs.org kennzeichnet den LTS-Build. Der zweite Befehl beantwortet die Frage, ob du gerade ein LTS-Release nutzt: Er gibt den Codenamen aus (Krypton bei Node.js 24, Jod bei 22) und undefined bei einer Current-Linie mit ungerader Nummer.
Welche Installationsmethode passt?
| Methode | Am besten für | Versionen | Updates |
|---|---|---|---|
| NodeSource-apt-Repository | Server und Dienste, alle Benutzer | Eine Hauptversion, systemweit | apt upgrade |
| nvm | Entwicklung, ein einzelner Deploy-Benutzer | Viele nebeneinander, pro Benutzer | nvm install |
| Offizielle Binaries | Andere Distributionen, feste Pfade | Beliebig, dort wo du entpackst | Von Hand |
| MSI-Installer oder winget | Windows und Windows Server | Eine, systemweit | Neueres MSI oder winget upgrade |
| Paket der Distribution | Werkzeuge, die mit einem alten Node.js auskommen | Was das Release mitbringt | apt upgrade, nur Sicherheitskorrekturen |
Misch nicht ohne Grund zwei davon auf einer Maschine: Eine Shell, ein Cronjob und ein Dienst können sonst jeweils ein anderes node erwischen, und genau daher kommen die meisten Probleme der Sorte „im Terminal geht es, in Produktion nicht“.
Wie installiere ich Node.js unter Ubuntu oder Debian?
Nimm NodeSource, das Node.js als apt-Pakete veröffentlicht. Ein einziges Paket, nodejs, enthält node, npm und npx und installiert sie nach /usr/bin. Dort suchen jeder Benutzer, sudo, cron und systemd, und genau das willst du auf einem Server, der einen Dienst betreibt. Willst du auf einer Hauptversion bleiben, statt dem jeweils neuesten LTS zu folgen, nimm das Skript dieser Hauptversion, und lies es, bevor du es als root ausführst:
curl -fsSL https://deb.nodesource.com/setup_24.x -o nodesource_setup.sh
less nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt install -y nodejsDas Skript fügt den Signaturschlüssel von NodeSource und eine apt-Quelle für diese Hauptversion hinzu; ab dann bringt apt upgrade neue 24.x-Releases zusammen mit dem Rest des Systems. Zum Vergleich, was die Distributionen selbst ausliefern:
| Release | apt install nodejs liefert | npm |
|---|---|---|
| Debian 12 | Node.js 18 (18.20.4) | Eigenes npm-Paket (9.2.0) |
| Debian 13 | Node.js 20 | Eigenes Paket |
| Ubuntu 22.04 | Node.js 12 | Eigenes Paket |
| Ubuntu 24.04 | Node.js 18 | Eigenes Paket |
| Ubuntu 26.04 | Node.js 22 | Eigenes Paket |
Nur das Paket von Ubuntu 26.04 ist noch eine LTS-Linie, die Korrekturen vom Node.js-Projekt bekommt. Auf Rocky Linux und AlmaLinux führt AppStream aktuelle Hauptversionen (auf Version 9 als Modul-Streams); die npx-Anleitung (engl.) nennt die dnf-Befehle.
Wie installiere ich Node.js mit nvm?
nvm (Node Version Manager) installiert Node.js nach ~/.nvm, nur für deinen Benutzer, mit beliebig vielen Versionen nebeneinander. Es ist das richtige Werkzeug auf einem Entwicklungsrechner und für einen Deploy-Benutzer, dem eine App gehört; es kommt ganz ohne root aus.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
# neues Terminal öffnen (oder: . ~/.nvm/nvm.sh), dann:
nvm install --lts # neuestes LTS; die erste installierte Version wird Standard
nvm install 22 # eine weitere Hauptversion daneben
nvm use 22 # nur in dieser Shell wechseln
nvm alias default 24 # womit jede neue Shell startetDie URL oben enthält das nvm-Release, das am 12. Oktober 2026 aktuell war; die README im Repository nvm-sh/nvm nennt das neueste. Ein Projekt kann seine Version in einer Datei festlegen: echo 24 > .nvmrc, danach übernimmt nvm use in diesem Verzeichnis sie. Antwortet das neue Terminal mit nvm: command not found, hat der Installer seine Zeilen in eine Datei geschrieben, die deine Shell nicht liest; die Lösung für bash, zsh und SSH-Logins steht in nvm: command not found (engl.).
Wie installiere ich die offiziellen Node.js-Binaries?
nodejs.org veröffentlicht fertig gebaute Archive für Linux auf x64 und arm64. Sie passen zu einer Distribution, die NodeSource nicht abdeckt, zu einem Server ohne apt-Quellen von Drittanbietern oder zu einem festen Installationspfad. Wähl die Datei aus der Prüfsummenliste, dann musst du keine Versionsnummer tippen, und prüf sie vor dem Entpacken:
ARCH=x64
curl -fsSLO https://nodejs.org/dist/latest-v24.x/SHASUMS256.txt
FILE=$(grep -o "node-v[0-9.]*-linux-$ARCH.tar.xz" SHASUMS256.txt)
curl -fsSLO "https://nodejs.org/dist/latest-v24.x/$FILE"
grep "$FILE" SHASUMS256.txt | sha256sum -c -
sudo mkdir -p /opt/node
sudo tar -xJf "$FILE" -C /opt/node --strip-components=1
sudo ln -sf /opt/node/bin/node /opt/node/bin/npm /opt/node/bin/npx /usr/local/bin/
node -vsha256sum -c muss für die Datei OK ausgeben. uname -m verrät die Architektur: x86_64 heißt x64, aarch64 heißt arm64. Befehle, die npm global installiert, landen in /opt/node/bin; nutzt du globale Werkzeuge, nimm dieses Verzeichnis in den PATH auf, wie in PATH ändern (engl.) beschrieben. Scheitert node -v mit version `GLIBC_2.28' not found, ist das Betriebssystem zu alt für aktuelle Builds; prüf die Linux-Version und steig auf ein unterstütztes Release um.
Wie installiere ich Node.js unter Windows und Windows Server?
- Windows 10 und 11:
winget install OpenJS.NodeJS.LTS, oder der LTS-Installer von nodejs.org. - Windows Server 2022 und 2019: winget gehört dort nicht dazu, nimm also den Windows Installer (
.msi). Lade ihn auf Server 2022 mit Edge herunter, oder lass PowerShell den neuesten LTS-Build holen und still installieren:
$ProgressPreference = 'SilentlyContinue'
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
$rel = (Invoke-RestMethod https://nodejs.org/dist/index.json -UseBasicParsing) |
Where-Object { $_.lts } |
Sort-Object { [version]$_.version.TrimStart('v') } -Descending |
Select-Object -First 1
$v = $rel.version
$p = "$env:TEMP\node-$v-x64.msi"
Invoke-WebRequest "https://nodejs.org/dist/$v/node-$v-x64.msi" -OutFile $p -UseBasicParsing
$r = Start-Process msiexec.exe -ArgumentList "/i `"$p`" /qn /norestart" -Wait -PassThru
"Node.js $v, msiexec exit code: $($r.ExitCode)"
Remove-Item $pindex.json ist die maschinenlesbare Liste aller Releases auf nodejs.org; ihr Feld lts enthält bei LTS-Releases den Codenamen. Exit-Code 0 bedeutet, dass die Installation geklappt hat. Das MSI installiert Node.js nach C:\Program Files\nodejs und trägt es in den PATH ein, öffne also ein neues PowerShell-Fenster und prüf mit node -v, npm -v und where.exe node. Die Standard-Ausführungsrichtlinie von Windows Server, RemoteSigned, lässt npm.ps1 laufen; unter Windows 10 und 11 kann PowerShell es verweigern, die Lösung steht in der npx-Anleitung (engl.). Den optionalen Schritt „Tools for Native Modules“ im Installer, der Compiler und Python für Pakete mit C++-Code nachlädt, lässt du aus, bis ein Paket danach verlangt.
Unter macOS funktionieren der .pkg-Installer von nodejs.org, nvm wie oben oder Homebrew. brew install node folgt dem neuesten Release statt dem LTS, und eine versionierte Formel wie node@24 landet nicht von selbst im PATH; die passende PATH-Zeile steht in der npx-Anleitung (engl.).
npm unter Windows installieren
Ein eigenes Installationsprogramm für npm gibt es unter Windows nicht: npm ist Teil von Node.js. Das LTS-MSI von nodejs.org (oder winget install OpenJS.NodeJS.LTS) installiert node, npm und npx zusammen; im Installer ist die Komponente „npm package manager“ standardmäßig ausgewählt, lass sie an. Danach prüfst du in einem neuen Fenster:
npm -v # Version von npm
where.exe npm # welches npm zuerst gefunden wird
npm config get prefix # Ziel für npm install -g, standardmäßig %AppData%\npm- „npm“ wird nicht erkannt. PowerShell meldet dann, die Benennung „npm“ sei nicht als Name eines Cmdlet erkannt worden, die Eingabeaufforderung, der Befehl sei falsch geschrieben oder nicht gefunden worden. Fast immer war das Fenster schon vor der Installation offen: Ein neues Fenster liest den PATH neu ein. Hilft das nicht, zeigt
where.exe node, ob Node.js überhaupt im PATH steht. npm.ps1kann nicht geladen werden. Die Meldung „die Ausführung von Skripts auf diesem System ist deaktiviert“ kommt von der Ausführungsrichtlinie von PowerShell, nicht von npm; die Lösung steht in der npx-Anleitung (engl.).- Globale Pakete.
npm install -glegt sie unter Windows in%AppData%\npmab, und der Installer trägt diesen Ordner in den PATH deines Benutzers ein. Ein Administratorfenster brauchst du dafür nicht.
npm separat zu aktualisieren, ohne Node.js anzufassen, geht auch unter Windows; wie, steht weiter unten im Abschnitt „Wie aktualisiere ich npm?“.
Wie prüfe ich, welche Node.js-Version installiert ist?
node -v # dasselbe wie node --version
npm -v
npx -v
node -p process.release.lts # LTS-Codename, oder undefined
type -a node # jedes node im PATH; das erste läuft (Linux, macOS)
where.exe node # dasselbe unter Windows$ node -v
v25.7.0
$ npm -v
11.10.1
$ node -p process.release.lts
undefinedNode.js 25 ist eine Linie mit ungerader Nummer, deshalb ist process.release.lts hier undefined; unter Node.js 24 gibt derselbe Befehl Krypton aus. Beginnt die Versionsnummer mit einer ungeraden Hauptversion, oder mit 20 oder kleiner, ist das dein Zeichen für ein Update, wie unten beschrieben. Sind zwei Methoden gemischt, etwa NodeSource in /usr/bin und nvm in deinem Home-Verzeichnis, listet type -a node beide auf, und ein systemd-Dienst führt womöglich ein anderes Node aus als deine Shell. Mit nvm zeigt nvm ls jede installierte Version und welche davon Standard ist.
Wie mache ich ein Node.js-Update?
| Installiert mit | Neueres Release, gleiche Hauptversion | Neue Hauptversion |
|---|---|---|
| NodeSource | sudo apt update && sudo apt install --only-upgrade nodejs | Setup-Skript der neuen Hauptversion ausführen (setup_26.x), dann sudo apt install -y nodejs |
| nvm | nvm install 24 | nvm install --lts --reinstall-packages-from=current |
| Offizielle Binaries | Neueres Archiv in ein frisches /opt/node entpacken | Dasselbe, aus latest-v26.x |
| Windows-MSI | Neueres MSI ausführen; es aktualisiert an Ort und Stelle | Dasselbe, oder winget upgrade OpenJS.NodeJS.LTS, wo es winget gibt |
| Paket der Distribution | Sicherheitskorrekturen kommen mit apt upgrade | Zu NodeSource oder nvm wechseln |
nvm install 24 holt das neueste 24.x, auch wenn schon ein älteres 24.x installiert ist. --reinstall-packages-from=current nimmt deine globalen npm-Pakete in die neue Version mit. Danach sorgt nvm alias default 24 (oder nvm alias default 'lts/*', um künftigen LTS-Linien zu folgen) dafür, dass neue Shells sie nutzen, und nvm uninstall 22 entfernt die alte, sobald nichts sie mehr braucht.
Nach einem Upgrade der Hauptversion: native Module neu bauen
Pakete mit kompilierten C++-Teilen (Datenbanktreiber, Bildbibliotheken, bcrypt) sind für genau eine Node.js-ABI gebaut. Nach einem Upgrade der Hauptversion verweigert die App womöglich den Start mit:
Error: The module '/srv/myapp/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 127. This version of Node.js requires
NODE_MODULE_VERSION 137. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).rm -rf node_modules
npm ci # neu installieren, was package-lock.json listet, gebaut für dieses Node
sudo systemctl restart myappnode -p process.versions.modules gibt die ABI-Nummer des laufenden Node.js aus (141 bei Node.js 25 oben).
Wie aktualisiere ich npm?
npm kommt mit Node.js, ein Update von Node.js bringt also auch ein neueres npm mit. Um npm allein zu aktualisieren:
npm view npm engines # welche Node.js-Versionen das neueste npm unterstützt
npm install -g npm@latest # mit nvm oder unter Windows
sudo npm install -g npm@latest # mit NodeSource: npm liegt in /usr/lib/node_modules
npm -vPrüf zuerst die Angabe engines: Jede npm-Hauptversion lässt alte Node.js-Linien fallen, und das neueste npm auf einem alten Node verweigert entweder den Start oder warnt bei jedem Befehl. Dann aktualisierst du besser Node.js selbst, oder du bleibst mit npm install -g npm@11 innerhalb einer Hauptversion. Zeigt npm -v unter Windows danach noch die alte Version, verrät where.exe npm, welche Kopie zuerst läuft; das neuere Node.js-MSI zu installieren ist der einfachste Ausweg.
Wie halte ich eine Node.js-App auf einem Server am Laufen?
node server.js in einer SSH-Sitzung endet, sobald die Sitzung endet. Nimm eine systemd-Unit, die nichts Zusätzliches braucht, oder pm2, einen Prozessmanager aus npm. Entscheide dich für eins davon, nicht für beide.
[Unit]
Description=My Node.js app
After=network-online.target
Wants=network-online.target
[Service]
User=myapp
WorkingDirectory=/srv/myapp
Environment=NODE_ENV=production
ExecStart=/usr/bin/node server.js
Restart=on-failure
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now myapp
journalctl -u myapp -fExecStart braucht einen absoluten Pfad, deshalb ist die NodeSource-Installation in /usr/bin der einfache Fall. Mit nvm ruft die Unit stattdessen nvm-exec auf; wie das geht, steht in nvm: command not found (engl.). Benutzer, Secrets in Environment-Dateien und Neustart-Limits behandelt die Anleitung systemd-Dienst erstellen (engl.). Der Weg mit pm2:
npm install -g pm2 # sudo nur mit NodeSource, nie mit nvm
pm2 start server.js --name myapp
pm2 startup systemd # gibt einen Befehl aus: genau so ausführen
pm2 save # die Liste der Apps, die pm2 beim Boot wiederherstellt
pm2 logs myapppm2 selbst läuft aus einer systemd-Unit, die pm2 startup anlegt und in die es den PATH deines Node.js schreibt. Nach einem Upgrade der Hauptversion mit nvm führst du pm2 unstartup und erneut pm2 startup aus, damit es auf die neue Version zeigt. Eine Web-App lauscht normalerweise auf 127.0.0.1:3000, mit nginx davor für HTTPS, wie in Reverse Proxy mit SSL beschrieben; ein Bot braucht überhaupt keinen offenen Port, siehe Discord-Bot auf einem VPS hosten (engl.).
Häufige Fehler bei der Installation von Node.js
| Meldung | Ursache | Lösung |
|---|---|---|
nvm: command not found | Die Shell hat nvm nicht geladen | Neues Terminal öffnen, dann die Startdatei korrigieren (engl.) |
npm: command not found | nodejs-Paket der Distribution, ohne npm | Zu NodeSource wechseln (engl.) |
EACCES: permission denied, mkdir '/usr/lib/node_modules/…' | npm install -g ohne root bei einem systemweiten Node.js | sudo für diesen einen Befehl, oder nvm |
sudo: npm: command not found | sudo sieht das Node.js von nvm nicht | sudo weglassen; nvm braucht keins |
trying to overwrite '/usr/include/node/common.gypi' | Altes libnode-dev ist liegen geblieben | nodejs, npm und libnode-dev entfernen, dann installieren |
npm WARN EBADENGINE Unsupported engine | Ein Paket will eine andere Node.js-Hauptversion | engines in seiner package.json lesen, diese Hauptversion installieren |
JavaScript heap out of memory | Ein Build hat das Heap-Limit von V8 überschritten | NODE_OPTIONS=--max-old-space-size=2048, dazu Swap |
yarn: command not found | Yarn gehört nicht zu Node.js | Mit Corepack oder npm aktivieren (engl.) |
Node.js auf einem VPS betreiben
Auf einem Linux-VPS mit Ubuntu oder Debian hast du root, also funktioniert jede Methode oben; für einen Server, der nur deine App betreibt, ist NodeSource mit einer systemd-Unit am wenigsten Pflegeaufwand. Für die meisten Node.js-Apps zählt Arbeitsspeicher mehr als CPU, und der Build großer Frontend-Projekte ist meist der Moment mit dem höchsten Bedarf: Bricht npm run build mit „heap out of memory“ oder einfach Killed ab, richte Swap ein (engl.) oder baue auf einem Tarif mit mehr RAM. Der kleinste Standard-KVM-Tarif hat 2 Kerne und 4 GB RAM, genug für eine typische API oder einen Bot. Auf einem Windows-VPS mit Windows Server 2022 oder 2019 nimmst du den MSI-Weg von oben.
Häufige Fragen
Wie installiere ich npm unter Windows?
Gar nicht separat: npm ist Teil von Node.js. Das LTS-MSI von nodejs.org oder winget install OpenJS.NodeJS.LTS installiert node, npm und npx zusammen und trägt sie in den PATH ein. Danach prüfst du in einem neuen Fenster mit npm -v. Wird npm nicht erkannt, war das Fenster meist schon vor der Installation offen.
Wie installiere ich Node.js unter Ubuntu?
Füg das Repository von NodeSource mit dessen Setup-Skript hinzu (setup_lts.x, oder setup_24.x, um auf einer Hauptversion zu bleiben), dann führ sudo apt install nodejs aus. Dieses eine Paket enthält node, npm und npx in /usr/bin. Das nodejs-Paket von Ubuntu selbst ist alt (Node.js 12 auf 22.04, 18 auf 24.04) und liefert npm als eigenes Paket.
Wie mache ich ein Node.js-Update?
Das hängt davon ab, wie du installiert hast. Mit nvm: nvm install --lts --reinstall-packages-from=current. Mit NodeSource aktualisiert sudo apt install --only-upgrade nodejs innerhalb der Hauptversion; für eine neue Hauptversion führst du deren Setup-Skript aus und installierst nodejs erneut. Unter Windows startest du das neuere MSI. Nach einem Upgrade der Hauptversion installierst du node_modules neu, damit native Module neu gebaut werden.