{"id":85053,"date":"2026-06-29T08:00:00","date_gmt":"2026-06-29T15:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=85053"},"modified":"2026-07-07T08:23:48","modified_gmt":"2026-07-07T15:23:48","slug":"wie-man-nodejs-auf-einem-vps-ausfuhrt-de","status":"publish","type":"post","link":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/","title":{"rendered":"Wie Man Node.js auf einem VPS Ausf\u00fchrt"},"content":{"rendered":"<div class=\"tldr-block\" style=\"display: none;\">\n\t<div class=\"svg\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 119.25 37.8\">\n\t<g>\n\t\t<g>\n\t\t\t<path fill=\"#ffffff\" d=\"M23.4,6.93h-8.1v24.57h-7.2V6.93H0V0h23.4v6.93Z\" \/>\n\t\t\t<path fill=\"#ffffff\" d=\"M45,24.57v6.93h-18.45V0h7.2v24.57h11.25Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M90.9,15.75c0,8.91-6.61,15.75-15.3,15.75h-12.6V0h12.6c8.68,0,15.3,6.84,15.3,15.75ZM83.97,15.75c0-5.4-3.42-8.82-8.37-8.82h-5.4v17.64h5.4c4.95,0,8.37-3.42,8.37-8.82Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M105.57,21.15h-3.42v10.35h-7.2V0h12.6c5.98,0,10.8,4.81,10.8,10.8,0,3.87-2.34,7.38-5.81,9.13l6.71,11.56h-7.74l-5.94-10.35ZM102.15,14.85h5.4c1.98,0,3.6-1.75,3.6-4.05s-1.62-4.05-3.6-4.05h-5.4v8.1Z\" \/>\n\t\t<\/g>\n\t\t<path\n\t\t\tfill=\"#0173ec\"\n\t\t\td=\"M53.97,37.8h-5.4l1.8-13.27h7.2l-3.6,13.27ZM49.02,12.55c0-2.34,1.93-4.27,4.27-4.27s4.27,1.94,4.27,4.27-1.93,4.27-4.27,4.27-4.27-1.94-4.27-4.27Z\"\n\t\t \/>\n\t<\/g>\n<\/svg>\n\t<\/div>\n\t<div class=\"tldr-wrap\">\n\t\t\n\n<p class=\"wp-block-paragraph\">Node.js auf einem VPS auszuf\u00fchren bedeutet, die aktuelle Node.js LTS (24.x &#8220;Krypton&#8221; Stand Mai 2026) auf einem Linux-Server, den Du kontrollierst, zu installieren, dann Deine App hinter einem Prozessmanager und einem Reverse-Proxy mit HTTPS laufen zu lassen. Du erh\u00e4ltst eine einzelne, immer aktive Box, die langanhaltende Verbindungen, Hintergrundjobs und intensive Rechenleistung handhabt, ohne Abrechnung pro Funktion oder Kaltstarts.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zielkonfiguration:<\/strong> Ubuntu 24.04 LTS + Node 24 \u00fcber NodeSource oder nvm + PM2 (oder systemd) + NGINX + Let&#8217;s Encrypt.<\/p>\n\n\n\n\n\t<\/div>\n<\/div>\n\n<p class=\"wp-block-paragraph\">Heroku hat seine kostenlose Stufe abgeschafft und den Preis angehoben. Vercel berechnet pro Platz und beendet lang laufende Jobs. Render und Railway staffeln ihre Preise nach Verkehrsaufkommen.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\u00d6ffne die aktuellste Rechnung von deinem Hosting-Anbieter. Die Node-App, eine Postgres-Datenbank und ein Redis-Cache. Drei Posten, drei S\u00e4tze von \u00dcberschreitungswarnungen, ein hektischer Slack-Thread am Tag, an dem das Marketing endlich eine Kampagne startet.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Deshalb werfen viele Teams einen erneuten Blick auf das VPS. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/what-is-node-js\/\">Node.js<\/a> selbst ist es <em>egal<\/em>, wo es ausgef\u00fchrt wird. Das einzige, vor dem Serverless dich sch\u00fctzte, war herauszufinden, was nach dem \u2018npm start\u2019 passiert.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Lass uns ein Produktions-Setup-Muster f\u00fcr <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/nodejs\/\">Node.js<\/a> auf einem Linux-Server betrachten, den Du kontrollierst. Wenn Du Dich per SSH auf einen Server einloggen und eine Konfigurationsdatei lesen kannst, wirst Du am Ende einen Produktionsstack haben, den Du jahrelang mit ein paar Stunden Wartung pro Monat betreiben kannst.<\/p>\n\n\n<h2 id=\"h-when-does-running-node-js-on-a-vps-make-sense\" class=\"wp-block-heading\">Wann Macht Es Sinn, Node.js Auf Einem VPS Zu Betreiben?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Ein VPS ist das richtige Zuhause f\u00fcr Node.js, wenn Du einen dauerhaften Prozess hast, einen Stack, den Du auf eine Rechnung konsolidieren m\u00f6chtest, oder eine verwaltete Laufzeitumgebung, die die Bequemlichkeit \u00fcberschritten hat.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Allgemein gesprochen gibt es drei gute M\u00f6glichkeiten:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Langlebige Prozesse:<\/strong> WebSocket-Server, Warteschlangenarbeiter, Cron-Job-Planer, MCP-Server. Alles, was <em>dauerhaft<\/em> laufen und zuh\u00f6ren muss. Die meisten serverlosen Plattformen optimieren noch immer um kurzlebige Ausf\u00fchrungen und Anforderungslebenszyklen. Ein Node-Prozess auf einem VPS sitzt einfach da.<\/li>\n\n\n\n<li><strong>Kostenkonsolidierung:<\/strong> Node-App, <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/postgresql\/\">Postgres<\/a>, Redis, plus ein kleiner Build-Arbeiter, alle leben auf derselben 4 GB Box. Eine Rechnungszeile, nicht vier.<\/li>\n\n\n\n<li><strong>Apps, die PaaS entwachsen sind:<\/strong> Funktionstimeouts bei deinem langen PDF-Erstellungsauftrag. Preise pro Sitzplatz in einem Team, das schlie\u00dflich einen vierten Ingenieur eingestellt hat. Eine <a target=\"_blank\" href=\"https:\/\/www.heroku.com\/pricing\/\">Heroku<\/a>-Rechnung, die \u00fcber 60 $ pro Monat f\u00fcr eine Arbeitslast steigt, die auf einem 15 $ VPS einwandfrei l\u00e4uft.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\"><strong>Und es gibt drei <\/strong><strong><em>falsche<\/em><\/strong><strong> Passungen:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statische Seiten und SSG-Inhalte:<\/strong> Ein Next.js-Export, ein Astro-Build, ein Gatsby-Blog. Die kostenlose Version von Vercel ist das richtige Werkzeug. Ein VPS ist \u00fcbertrieben.<\/li>\n\n\n\n<li><strong>Sporadische, ereignisgesteuerte Arbeitslasten:<\/strong> AWS Lambda oder Cloudflare Workers kosten nur wenige Cents f\u00fcr einen Webhook, der zehnmal am Tag ausgef\u00fchrt wird. Ein VPS kostet gleich viel, egal ob die App besch\u00e4ftigt ist oder schl\u00e4ft.<\/li>\n\n\n\n<li><strong>Horizontal skalierte Echtzeit-Apps:<\/strong> Wenn dein WebSocket-Server 100.000 gleichzeitige Verbindungen verteilen muss, ist ein VPS nicht die Antwort. Das ist ein Kubernetes-Cluster, eine verteilte Edge-Infrastruktur oder eine verwaltete Echtzeit-Plattform.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">JavaScript ist die am h\u00e4ufigsten verwendete Sprache in der <a target=\"_blank\" href=\"https:\/\/survey.stackoverflow.co\/2025\/technology\">2025 Stack Overflow Entwicklerumfrage<\/a>, und Node.js bleibt eine der Standardmethoden, mit denen Entwickler JavaScript im Backend ausf\u00fchren. Das sind viele Personen, die Node irgendwo ausf\u00fchren. Dieser Artikel ist f\u00fcr den Teil von ihnen, der es vorziehen w\u00fcrde, es auf einem Server zu betreiben, den sie selbst kontrollieren.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ich habe gesehen, wie Teams vier Produktions-Node-Dienste von Heroku auf einen einzigen 4 GB VPS umgezogen haben, mit der gleichen Betriebszeit, einem Drittel der Rechnung und langlebigen WebSockets, die endlich ohne Umweg funktionierten.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Die Migration besteht haupts\u00e4chlich aus einem Nachmittag mit \u201aapt install\u2018, einem \u201apm2 start\u2018 und einer DNS-\u00c4nderung.<\/p>\n\n\n<h2 id=\"h-what-vps-specs-does-node-js-actually-need\" class=\"wp-block-heading\">Welche VPS-Spezifikationen Ben\u00f6tigt Node.js Wirklich?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Node.js selbst ist leichtgewichtig. Ein minimaler Express-Server kann im Leerlauf gut unter 100 MB Arbeitsspeicher verbleiben. Der Rat \u201eNode ben\u00f6tigt nur 1 GB\u201c, den man immer noch auf \u00e4lteren Blogs findet, ist technisch korrekt und praktisch nutzlos. Bis du Postgres, Redis, Protokolle und einen Bereitstellungsprozess hinzugef\u00fcgt hast, der nicht nur auf Hoffnung basiert, \u00fcberschreitest du bereits an einem ruhigen Tag diese Grenze.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Realistische Gr\u00f6\u00dfen f\u00fcr h\u00e4ufige Arbeitslasten:<\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Arbeitslast<\/strong><\/th><th><strong>RAM<\/strong><\/th><th><strong>vCPU<\/strong><\/th><th><strong>Speicher<\/strong><\/th><th><strong>Notizen<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Kleine Express-API, keine DB auf dem Server<\/td><td>2 GB<\/td><td>1-2<\/td><td>40 GB NVMe<\/td><td>Realistische Untergrenze f\u00fcr eine Produktions-App<\/td><\/tr><tr><td>Node API + Postgres + Redis auf einem Server<\/td><td>4 GB<\/td><td>2<\/td><td>80 GB NVMe<\/td><td>Der ideale Mittelweg; hier landen die meisten Teams<\/td><\/tr><tr><td>SSR-intensive App (Next.js, Nuxt, Remix)<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>SSR-Rendering und Build-Pipelines sind die Speicherfresser<\/td><\/tr><tr><td>Echtzeit\/WebSocket-App, moderater Ma\u00dfstab<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>Jede dauerhafte Verbindung verbraucht Speicher<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Einige Details, die Du kl\u00e4ren solltest, bevor Du provisions:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NVMe-Speicher Ist Wichtiger Als Reine Festplattengr\u00f6\u00dfe:<\/strong> Moderne Node-Apps greifen w\u00e4hrend der Installation, beim Aufbau und beim Start auf Tausende von kleinen Dateien zu. Langsame Festplatten verschlechtern sp\u00fcrbar die Installation von Abh\u00e4ngigkeiten, Kaltstarts und SSR-Neuaufbauten.<\/li>\n\n\n\n<li><strong>KVM-Virtualisierung, Nicht OpenVZ:<\/strong> \u00c4ltere OpenVZ-basierte Pl\u00e4ne teilen sich einen Kernel mit dem Host, was veraltete Kernel-Versionen und gelegentliche Kompatibilit\u00e4tsprobleme mit neueren Laufzeiten bedeuten kann. Die meisten renommierten VPS-Anbieter sind jetzt nur noch KVM, aber es lohnt sich immer noch, dies zu \u00fcberpr\u00fcfen.<\/li>\n\n\n\n<li><strong>Swap-Speicher:<\/strong> Aktiviere 1-2 GB Swap auf kleineren Boxen. Der V8-Speicherhaufen von Node kann w\u00e4hrend der M\u00fcllsammlung stark schwanken. Ohne Swap f\u00fchrt ein vor\u00fcbergehender Spitzenwert zum Absturz des Prozesses. Ich habe gesehen, wie eine 4 GB Box w\u00e4hrend eines routinem\u00e4\u00dfigen Deployments einen OOM-Fehler hatte, weil jemand Swap deaktiviert hatte, da er es f\u00fcr ein Anachronismus der Docker-\u00c4ra hielt.<\/li>\n\n\n\n<li><strong>Bandbreite:<\/strong> Die meisten modernen VPS-Pl\u00e4ne beinhalten 1-4 TB monatliche Bandbreite, genug f\u00fcr fast alles au\u00dfer Videohosting. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">Selbstverwaltete VPS-Pl\u00e4ne<\/a> beinhalten ungemessene Bandbreite, eine weniger Zeile auf dem Kapazit\u00e4tsplanungs-Worksheet.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Ein 4 GB VPS kostet etwa 15 $ pro Monat zum Marktpreis. Das sind 50 Cent pro Tag oder etwa einen Flughafenkaffee alle zwei Wochen. Verglichen mit den Kosten f\u00fcr separat verwaltete App-Runtimes, Managed Postgres und Redis auf einer PaaS, \u00e4ndern sich die wirtschaftlichen Vorteile \u00fcberraschend schnell.<\/p>\n\n\n<h2 id=\"h-which-node-js-version-should-you-install\" class=\"wp-block-heading\">Welche Node.js-Version Solltest Du Installieren?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Installiere <strong>Node.js 24 (Codename Krypton)<\/strong>. Es ist die aktuelle aktive LTS-Version, die im Oktober 2025 eingef\u00fchrt und gem\u00e4\u00df dem offiziellen <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/about\/previous-releases\">Node.js-Ver\u00f6ffentlichungsplan<\/a> bis April 2028 unterst\u00fctzt wird.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Viele Anleitungen verweisen immer noch auf Node 22. Diese Anleitungen wurden nicht aktualisiert. Wenn Du heute eine neue Bereitstellung beginnst, fixiere Dein CI-Image und Dein VPS auf Node 24.x.<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Version<\/strong><\/th><th><strong>Codename<\/strong><\/th><th><strong>Status<\/strong><\/th><th><strong>EOL<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Node.js 26.x<\/td><td>(keiner)<\/td><td>Aktuell<\/td><td>Wird Ende 2026 zu LTS<\/td><\/tr><tr><td>Node.js 24.x<\/td><td>Krypton<\/td><td>Aktives LTS<\/td><td>April 2028<\/td><\/tr><tr><td>Node.js 22.x<\/td><td>Jod<\/td><td>Wartungs-LTS<\/td><td>April 2027<\/td><\/tr><tr><td>Node.js 20.x<\/td><td>Eisen<\/td><td>Ende des Lebenszyklus<\/td><td>EOL erreicht am 30. April 2026. Nicht verwenden.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Ein paar Faustregeln:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Verwende keine aktuellen (nicht-LTS) Versionen in der Produktion: <\/strong>Node 26 dient dem Testen zuk\u00fcnftiger Kompatibilit\u00e4t und neuer Laufzeitfunktionen, nicht f\u00fcr die App, von der deine Einnahmen abh\u00e4ngen.<\/li>\n\n\n\n<li><strong>Node 22 ist die Ausweichoption, falls eine kritische Abh\u00e4ngigkeit noch nicht mit der Kompatibilit\u00e4t von Node 24 aufgeholt hat: <\/strong>Die meisten Teile des \u00d6kosystems stabilisierten sich innerhalb weniger Monate nach der LTS-Promotion.<\/li>\n\n\n\n<li><strong>Fixiere deine Node-Version \u00fcberall: <\/strong>Dein CI-Image, Dockerfile, .nvmrc und produktives VPS sollten alle \u00fcbereinstimmen. \u201eFunktioniert auf meinem Rechner\u201c wird schnell teuer, sobald native Module ins Spiel kommen.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">\ud83e\udd14<a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/bun-vs-node\/\"><strong>Bun in Betracht ziehen<\/strong><\/a><strong>?<\/strong> Es ist bei einigen Arbeitslasten schneller und wirklich beeindruckend, aber das \u00d6kosystem ist noch kleiner und die Erfolgsgeschichte in der Produktion k\u00fcrzer als bei Node. F\u00fcr die meisten Teams gewinnt das Bew\u00e4hrte.<\/p>\n\n\n<p class=\"wp-block-paragraph\">NodeSource, das die apt und yum Repositories pflegt, von denen viele Produktionsteams Node installieren, hebt Verbesserungen in der 24.x-Linie hervor, beginnend mit einer neueren V8-Engine. Node 24 liefert jetzt auch ausgereifte Werkzeuge wie eingebautes node &#8211;watch und einen stabilen nativen Test Runner (node: test), die beide in den Linien 20\u201322 stabilisiert wurden und hier weitergef\u00fchrt werden. Nichts davon ist auff\u00e4llig. Es reduziert einfach jeden Monat ein wenig den operativen Aufwand.<\/p>\n\n\n<h2 id=\"h-how-do-you-install-node-js-on-a-vps\" class=\"wp-block-heading\">Wie Installierst Du Node.js Auf Einem VPS?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Du hast zwei realistische Installationswege. W\u00e4hle je nachdem, ob der Server eine Node-Anwendung oder mehrere ausf\u00fchrt.<\/p>\n\n\n<h3 id=\"h-nodesource-for-a-single-app-server\" class=\"wp-block-heading\">NodeSource F\u00fcr Einen Einzel-App-Server<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Dies ist der einfachste Produktionspfad. Ein Einrichtungsskript und ein <strong><code>apt install<\/code><\/strong> beschaffen dir die aktuelle Node 24 LTS Reihe als Systempaket, und zuk\u00fcnftige Sicherheitsupdates flie\u00dfen durch normale Paket-Upgrades.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Auf Ubuntu oder Debian:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | bash -\napt install -y nodejs<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u00dcberpr\u00fcfe die Installation:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>node -v\nnpm -v<\/code><\/pre>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"2560\" height=\"1344\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-scaled.webp\" alt=\"Terminalbefehle zeigen Node.js-Version 24.14.0 und npm-Version 11.9.0 installiert auf DreamHost.\" class=\"wp-image-83813 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-scaled.webp 2560w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-300x158.webp 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1024x538.webp 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-768x403.webp 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1536x806.webp 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-2048x1075.webp 2048w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-600x315.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1200x630.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-730x383.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1460x767.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-784x412.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1568x823.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-877x460.webp 877w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1754x921.webp 1754w\" data-sizes=\"(max-width: 2560px) 100vw, 2560px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/1344;\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Du solltest eine Node 24.x Ver\u00f6ffentlichung sehen.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Anweisungen f\u00fcr die RHEL-Familien-Distribution (yum\/dnf) befinden sich im offiziellen NodeSource-Distributionsrepository.<\/p>\n\n\n<h3 id=\"h-nvm-for-per-project-version-switching\" class=\"wp-block-heading\">nvm f\u00fcr Versionswechsel pro Projekt<\/h3>\n\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/github.com\/nvm-sh\/nvm\">nvm<\/a> (Node Version Manager) installiert Node in Deinem Home-Verzeichnis und erm\u00f6glicht es verschiedenen Projekten, unterschiedliche Node-Versionen zu verwenden. N\u00fctzlich, wenn Du mehrere Apps auf demselben Server hostest oder keinen Sudo-Zugang hast.<\/p>\n\n\n<p class=\"wp-block-paragraph\">F\u00fchre dies als Deinen App-Benutzer aus, nicht als Root:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.40.5\/install.sh | bash<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Lade deine Shell neu, dann installiere Node 24:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>nvm install 24\nnvm use 24\nnvm alias default 24<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Eine wichtige Regel: <\/strong>Verwende nicht <code>sudo \u2018npm install -g\u2019<\/code> f\u00fcr Anwendungsabh\u00e4ngigkeiten.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Globale Installationen sind normalerweise f\u00fcr maschinen\u00fcbergreifende CLI-Tools wie pm2, typescript oder nodemon reserviert. Deine App-Abh\u00e4ngigkeiten geh\u00f6ren in die package.json und sollten vom Projektverzeichnis aus mit npm ci installiert werden.<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>NodeSource<\/strong><\/th><th><strong>nvm<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Eine Node-Version pro Server<\/td><td>Mehrere Node-Versionen pro Server<\/td><\/tr><tr><td>Systemweit installiert, l\u00e4uft als beliebiger Nutzer<\/td><td>Pro Nutzer installiert<\/td><\/tr><tr><td>Auto-Updates mit <code>\u2018apt\u2019<\/code><\/td><td>Manuell verwaltet<\/td><\/tr><tr><td>Erfordert <code>sudo<\/code><\/td><td>Kein <code>sudo<\/code> erforderlich<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Wenn du dir unsicher bist, starte mit NodeSource. Die meisten Produktionsserver mit einem einzigen Zweck ben\u00f6tigen keinen projektbezogenen Wechsel der Node-Version.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49<strong>DreamHost Selbstverwaltete VPS-Nutzer: <\/strong>Die bei der Bereitstellung verf\u00fcgbare Node-App wird mit Node 22 LTS ausgeliefert \u2014 noch unterst\u00fctzt bis April 2027. Um Node 24 zu verwenden, nutze die NodeSource- oder nvm-Schritte oben nach der Bereitstellung.<\/p>\n\n\n<h2 id=\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\" class=\"wp-block-heading\">Solltest Du PM2 Oder Systemd Verwenden, Um Deine App Am Laufen Zu Halten?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Beide funktionieren. Die ehrliche Antwort ist, welche dein Team bevorzugt. PM2 ist der entwicklerfreundliche Weg. systemd ist der Unix-native Weg. Beide l\u00f6sen dieselben drei Probleme: Neustart bei Absturz, Start bei Boot und sanftes Herunterfahren bei \u2018SIGTERM\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Wenn Du neu anf\u00e4ngst, so w\u00e4hlst Du aus:<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th><strong>PM2<\/strong><\/th><th><strong>systemd<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Einrichtungszeit<\/td><td>3 Minuten<\/td><td>10 Minuten<\/td><\/tr><tr><td>Clustermodus (Mehr-Kern)<\/td><td>Integriert<\/td><td>Nicht integriert (Starte N Einheiten)<\/td><\/tr><tr><td>Log-Rotation<\/td><td>Modul: <code>\u2018pm2-logrotate\u2019<\/code><\/td><td>Integriert \u00fcber <code>\u2018journalctl\u2019<\/code><\/td><\/tr><tr><td>Neuladen ohne Ausfallzeit<\/td><td><code>\u2018pm2 reload\u2019<\/code><\/td><td>\u00dcblicherweise manuell gehandhabt mit rollenden Neustarts oder mehreren Einheiten<\/td><\/tr><tr><td>Speicherbedarf (D\u00e4mon)<\/td><td>Kleiner D\u00e4mon-Overhead<\/td><td>Keiner (kein zus\u00e4tzlicher D\u00e4mon)<\/td><\/tr><tr><td>Am besten f\u00fcr<\/td><td>Einzelbox, JS-Shop, schnelle Iteration<\/td><td>Mehr-App-Boxen, Wohlf\u00fchlen des Operations-Teams<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Der <a target=\"_blank\" href=\"https:\/\/pm2.keymetrics.io\/docs\/usage\/quick-start\/\">PM2 Schnellstart<\/a> ist genau das, schnell:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>npm install -g pm2\npm2 start app.js --name api\npm2 startup    # gibt den systemd-Startbefehl aus, der ausgef\u00fchrt werden soll\npm2 save       # speichert die aktuelle Prozessliste<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">PM2 wird dann zum einzigen, mit dem Du sprichst: \u201a<code>pm2 logs<\/code>\u2018, \u201a<code>pm2 reload api<\/code>\u2018, \u201a<code>pm2 monit<\/code>\u2018.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Auch wissenswert:<\/strong> &#8216;<code>pm2 startup<\/code>&#8216; schreibt eine systemd-Einheit, sodass die PM2-Konfiguration <em>tats\u00e4chlich<\/em> systemd unter der Haube verwendet.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ein minimales systemd-Unit f\u00fcr die direkte Node-Verwaltung unter &#8216;\/etc\/systemd\/system\/api.service&#8217;:<\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Unit]<br>Beschreibung=Meine Node API<br>Nach=network.target<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Service]<br>Type=simple<br>User=app<br>WorkingDirectory=\/var\/www\/api<br>ExecStart=\/usr\/bin\/node server.js<br>Restart=on-failure<br>RestartSec=5<br>Environment=NODE_ENV=production<br>StandardOutput=journal<br>StandardError=journal<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Install]<br>WantedBy=multi-user.target<\/code><br>Dann \u2018<code>systemctl enable --now api<\/code>.\u2019 Protokolle findest Du in \u2018<code>journalctl -u api -f<\/code>.\u2019<\/p>\n\n\n<p class=\"wp-block-paragraph\">Wenn Du bereits PM2 verwendest und es funktioniert, migriere nicht zu systemd nur weil jemand auf Hacker News es gesagt hat. Der Speicher des PM2-D\u00e4mons ist nicht der Grund, warum Du von ihm weg migrieren w\u00fcrdest.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Migriere, wenn Du einen echten Grund hast, beispielsweise wenn Du ein halbes Dutzend Node-Prozesse betreibst, bei denen jeder Megabyte z\u00e4hlt, oder in eine Betriebsumgebung versendest, in der jeder andere Dienst eine systemd-Einheit ist und PM2 als die ungew\u00f6hnliche Ausnahme hervorsticht.<\/p>\n\n\n<h2 id=\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\" class=\"wp-block-heading\">Wie Setzt Du NGINX (oder Caddy) Vor Deine Node-App?<\/h2>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1099\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node.webp\" alt=\"NGINX fungiert als Reverse-Proxy zwischen den Anfragen der Clients und dem Node.js-App-Backend.\" class=\"wp-image-83812 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-300x206.webp 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1024x703.webp 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-768x528.webp 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1536x1055.webp 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-600x412.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1200x824.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-730x501.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1460x1003.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-784x539.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1568x1077.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-877x602.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1099;\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Du m\u00f6chtest einen Reverse-Proxy vor Node aus f\u00fcnf Gr\u00fcnden: HTTPS-Terminierung, gzip\/brotli-Kompression, Auslieferung von statischen Assets, mehrere Apps auf demselben Server betreiben und einfacheres Ratenlimiting. Node <em>kann<\/em> all diese Dinge tun. NGINX und Caddy machen sie besser, und sie st\u00fcrzen deine Ereignisschleife nicht ab, wenn etwas nicht funktioniert.<\/p>\n\n\n<p class=\"wp-block-paragraph\">W\u00e4hle NGINX, wenn jemand in deinem Team es bereits kennt. W\u00e4hle Caddy, wenn du <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/ultimate-guide-ssl-tls\/\">HTTPS<\/a> in drei Zeilen Konfiguration m\u00f6chtest und du mit einem kleineren fortgeschrittenen Konfigurations-\u00d6kosystem zufrieden bist.<\/p>\n\n\n<h3 id=\"h-minimal-nginx-config\" class=\"wp-block-heading\">Minimale NGINX-Konfiguration<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Platziere diesen Proxy-Block in <strong>\/etc\/nginx\/sites-available\/api<\/strong>, erstelle einen Symlink zu <strong><code>sites-enabled<\/code><\/strong>, dann <strong><code>nginx -t &amp;&amp; systemctl reload nginx<\/code><\/strong>.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name api.example.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_cache_bypass $http_upgrade;\n    }\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die &#8216;Upgrade&#8217;- und &#8216;Connection&#8217;-\u00dcberschriften sind die WebSocket-Unterst\u00fctzungslinien. <a target=\"_blank\" href=\"https:\/\/nginx.org\/en\/docs\/http\/websocket.html\">Die eigenen Dokumente von NGINX weisen darauf hin<\/a>, dass Upgrade ein Hop-by-Hop-Header ist, daher ben\u00f6tigt es eine explizite Behandlung, wenn WebSocket-Traffic weitergeleitet wird.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Lass sie drin, wenn Deine App jetzt WebSockets verwendet oder sp\u00e4ter verwenden k\u00f6nnte. Socket.IO, GraphQL-Abonnements \u00fcber WebSockets und eine \u00fcberraschende Anzahl von \u201eregul\u00e4ren\u201c Echtzeitfunktionen h\u00e4ngen von diesem Upgrade-Handshake ab.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Der weitaus h\u00e4ufigste Produktionsfehler, den ich in Node-Setups sehe, ist ein Socket.IO-Server hinter <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216431827-Nginx-overview\">NGINX<\/a> ohne diese beiden Zeilen. Verbindungen schlagen gelegentlich fehl, Entwickler geben Socket.IO die Schuld, und das eigentliche Problem liegt meistens in der Proxy-Konfiguration.<\/p>\n\n\n<h3 id=\"h-minimal-caddyfile\" class=\"wp-block-heading\">Minimale Caddyfile<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Die <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/quick-starts\/reverse-proxy\">Caddy Reverse-Proxy Schnellstart<\/a> Version desselben:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>api.example.com {\n    reverse_proxy 127.0.0.1:3000\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Das ist die gesamte Datei. Solange die Domain auf den Server zeigt und die Ports 80\/443 erreichbar sind, stellt Caddy HTTPS automatisch bereit und erneuert es. Caddys Dokumentation besagt, dass <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/automatic-https\">automatisches HTTPS<\/a> TLS-Zertifikate f\u00fcr Websites bereitstellt und diese erneuert; auch die Schnellstartanleitung f\u00fcr den Reverse-Proxy weist darauf hin, dass HTTPS automatisch ist, wenn Caddy den Hostname kennt.<\/p>\n\n\n<h3 id=\"h-bind-node-to-localhost-not-0-0-0-0\" class=\"wp-block-heading\">Node An localhost Binden, Nicht An 0.0.0.0<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Welchen Proxy Du auch w\u00e4hlst, konfiguriere deine Node-App so, dass sie auf 127.0.0.1:3000 und nicht auf 0.0.0.0:3000 h\u00f6rt. Das Einzige, was dem \u00f6ffentlichen Internet auf einem Node-Box gegen\u00fcberstehen sollte, ist der Proxy. Kombiniere dies mit UFW, Ubuntus g\u00e4ngiger Firewall-Frontend, um alles au\u00dfer den Ports 22, 80 und 443 zu blockieren.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>ufw standardm\u00e4\u00dfig eingehende Verbindungen verweigern\nufw erlaube 22\/tcp\nufw erlaube 80\/tcp\nufw erlaube 443\/tcp\nufw aktivieren<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wenn SSH auf einem benutzerdefinierten Port l\u00e4uft, erlaube diesen Port, bevor UFW aktiviert wird.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Binde von Anfang an an localhost. Das Meeting, bei dem jemand zugibt, dass \u201edie App exponiert war, weil Node an 0.0.0.0 gebunden war\u201c, ist kein Meeting, das Du haben m\u00f6chtest.<\/p>\n\n\n<h2 id=\"h-how-do-you-set-up-https-for-your-node-js-app\" class=\"wp-block-heading\">Wie Richtest Du HTTPS F\u00fcr Deine Node.js-App Ein?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Nutze <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216539558-Let-s-Encrypt-SSL-certificate-overview\">Let&#8217;s Encrypt<\/a>. Es ist kostenlos, automatisiert und von jedem Browser vertraut. Es gibt zwei Wege, abh\u00e4ngig davon, welchen Proxy Du gew\u00e4hlt hast.<\/p>\n\n\n<h3 id=\"h-nginx-certbot\" class=\"wp-block-heading\">NGINX + Certbot<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Richte einen A-Eintrag auf deine VPS-IP aus und warte, bis die DNS sich verbreitet hat.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Installiere Certbot:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>apt install certbot python3-certbot-nginx<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Starte:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>certbot --nginx -d api.example.com<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Certbot aktualisiert deine NGINX-Konfiguration und l\u00e4dt den Server automatisch neu.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Auf modernen Ubuntu-Versionen wird die Erneuerung automatisch durch einen systemd-Timer gehandhabt, der vom Certbot-Paket installiert wird.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\u00d6ffne <strong>https:\/\/api.example.com<\/strong> und best\u00e4tige das Schloss-Symbol.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Die <a target=\"_blank\" href=\"https:\/\/certbot.eff.org\/instructions?ws=nginx&amp;os=snap\">offiziellen Certbot-Dokumentationen<\/a> behandeln auch den Snap-basierten Installationspfad, falls dein Distributionspaket veraltet ist.<\/p>\n\n\n<h3 id=\"h-caddy\" class=\"wp-block-heading\">Caddy<\/h3>\n\n\n<p class=\"wp-block-paragraph\">F\u00fcge die Domain zur Caddydatei hinzu (das obige Beispiel enth\u00e4lt sie bereits), dann starte Caddy neu. Solange die Domain korrekt aufgel\u00f6st wird und die Ports 80\/443 erreichbar sind, wird das Zertifikat automatisch beim ersten Start bereitgestellt. Es gibt keinen Certbot.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Beende TLS in Node selbst nicht f\u00fcr die Produktion.<\/strong><\/p>\n\n\n<p class=\"wp-block-paragraph\">Node&#8217;s https-Modul funktioniert einwandfrei, aber Reverse-Proxies wie NGINX und Caddy sind speziell f\u00fcr die TLS-Terminierung entwickelt. Sie bieten dir OCSP-Stapling, moderne Chiffre-Standards, automatische Zertifikatserneuerung, HTTP\/2-Unterst\u00fctzung und \u2014 im Fall von Caddy \u2014 HTTP\/3-Unterst\u00fctzung direkt ab Werk.<\/p>\n\n\n<p class=\"wp-block-paragraph\">K\u00f6nntest Du das alles direkt in Node handhaben? Sicher. Du w\u00fcrdest einfach eine Infrastruktur neu aufbauen, die Dein Proxy bereits sehr gut l\u00f6st.<\/p>\n\n\n<h2 id=\"h-what-does-a-production-ready-node-js-setup-actually-look-like\" class=\"wp-block-heading\">Wie Sieht Ein Produktionsfertiges Node.js-Setup Eigentlich Aus?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Acht Dinge bei\u00dfen Menschen in der Produktion. Die meisten davon sind nicht in Installationsanleitungen enthalten, weil sie nicht in das Schema \u201eNode installieren, App ausf\u00fchren\u201c passen. Sie sind der Unterschied zwischen einer App, die den zweiten Monat \u00fcberlebt, und einer, die es nicht tut.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NODE_ENV=production:<\/strong> Der am h\u00e4ufigsten \u00fcbersehene Schritt. In vielen Node-Frameworks und -Bibliotheken deaktiviert es verhaltensweisen, die nur in der Entwicklung vorhanden sind und aktiviert Optimierungen f\u00fcr die Produktion. Express beispielsweise speichert kompilierte Vorlagen im Cache und gibt knappere Fehlermeldungen in der Produktionsumgebung zur\u00fcck \u2014 die eigenen Dokumentationen sprechen von einer bis zu 3-fachen Leistungsverbesserung. Setze die \u2018env var\u2019 \u00fcberall.<\/li>\n\n\n\n<li><strong>Graceful shutdown:<\/strong> Wenn dein VPS neu startet oder PM2 \u2018SIGTERM\u2019 sendet, hat deine App ein paar Sekunden Zeit, um laufende Anfragen abzuarbeiten, Datenbankverbindungen zu schlie\u00dfen und sauber zu beenden. Richte einen \u2018process.on(&#8216;SIGTERM&#8217;, &#8230;)&#8217;-Handler ein. Die Standardabschaltzeit von PM2 h\u00e4ngt von der Konfiguration und Umgebung ab, also gehe nicht davon aus, dass du immer viel Zeit zum Aufr\u00e4umen hast.&nbsp;<\/li>\n\n\n\n<li><strong>Log-Rotation:<\/strong> PM2&#8217;s \u2018pm2-logrotate\u2019 Modul k\u00fcmmert sich darum f\u00fcr PM2. Das systemd-Journal handhabt es f\u00fcr direkte systemd-Einheiten. Ohne Rotation f\u00fcllen deine Logs die Festplatte in einem Viertel der erwarteten Zeit.<\/li>\n\n\n\n<li><strong>.env Disziplin:<\/strong> Niemals Geheimnisse einreichen, niemals protokollieren. Verwende \u2018dotenv\u2019 f\u00fcr lokale Entwicklung. In der Produktion, setze Umgebungsvariablen \u00fcber \u2018Environment=\u2019 deiner systemd-Einheit oder deine PM2-\u00d6kosystemdatei. Der Tag, an dem du \u2018console.log(process.env)\u2019 aus Versehen machst, ist der Tag, an dem du jede Anmeldeinformation rotierst.<\/li>\n\n\n\n<li><strong>Ein umgekehrter Proxy vor Node:<\/strong> Binde Node an localhost; lass NGINX oder Caddy das \u00f6ffentliche Internet bedienen.<\/li>\n\n\n\n<li><strong>Eine Firewall:<\/strong> UFW lehnt alles ab au\u00dfer 22, 80, 443. SSH von Port 22 zu verschieben, wird einen entschlossenen Angreifer nicht stoppen, aber es reduziert drastisch den automatisierten Brute-Force-L\u00e4rm und Junk-Auth-Protokolle.<\/li>\n\n\n\n<li><strong>\u00dcberwachung:<\/strong> Ein Healthcheck-Endpunkt, den dein \u00dcberwachungstool jede Minute abruft. PM2 hat grundlegende Funktionen integriert. F\u00fcr alles Ernsthaftes, betreibe Prometheus und Grafana oder nutze einen gehosteten Uptime-Dienst wie <a target=\"_blank\" href=\"https:\/\/betterstack.com\/\">Better Stack<\/a> oder <a target=\"_blank\" href=\"https:\/\/uptimerobot.com\/\">UptimeRobot<\/a>. Du willst wissen, dass deine App offline ist, <em>bevor<\/em> ein Kunde es dir sagt.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Wartungssch\u00e4tzung f\u00fcr den oben genannten Stack: ein bis drei Stunden pro Monat.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Apt-Aktualisierungen, gelegentliche Abh\u00e4ngigkeitsaktualisierungen und ein viertelj\u00e4hrlicher Blick auf das Protokollvolumen. Das ist der Tausch f\u00fcr die Kosten- und Kontrollvorteile.<\/p>\n\n\n<h2 id=\"h-when-is-a-vps-the-wrong-choice-for-node-js\" class=\"wp-block-heading\">Wann Ist Ein VPS Die Falsche Wahl F\u00fcr Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Ein VPS ist die falsche Wahl, wenn deine Arbeitslast f\u00fcr etwas anderes ausgelegt ist. Sei ehrlich dar\u00fcber, auf welcher Seite du stehst, bevor du bereitstellst.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statische Seiten und SSG-Inhalte:<\/strong> Next.js-Export, Astro, Gatsby und ein Eleventy-Blog. Plattformen wie Vercel, Netlify oder Cloudflare Pages bieten weltweit gecachtes statisches Hosting, Git-basierte Deployments und automatische Neubauten direkt aus der Box. Ein VPS ist normalerweise keine notwendige Infrastruktur f\u00fcr rein statische Inhalte.<\/li>\n\n\n\n<li><strong>Sporadische, ereignisgesteuerte Workloads: <\/strong>Cloudflare Workers und AWS Lambda sind kosteng\u00fcnstig f\u00fcr Webhooks, die zehnmal pro Tag ausgef\u00fchrt werden.&nbsp;<\/li>\n\n\n\n<li><strong>Echtzeit-Apps, die 100.000+ gleichzeitige Verbindungen ben\u00f6tigen:<\/strong> Ein VPS skaliert nicht horizontal. Du ben\u00f6tigst Orchestrierung (Kubernetes, ECS, Nomad) oder eine verwaltete Echtzeit-Plattform wie Ably oder Pusher.<\/li>\n\n\n\n<li><strong>Compliance-intensive regulierte Workloads:<\/strong> HIPAA, PCI-DSS Level 1, FedRAMP. Eine verwaltete PaaS mit integrierten Compliance-Zertifizierungen erspart Pr\u00fcfungsschmerzen. Compliance selbst auf einem VPS zu hosten ist ein mehrquartaliges Projekt, das Du wahrscheinlich nicht m\u00f6chtest.<\/li>\n\n\n\n<li><strong>Keine <\/strong><a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/linux-distros\/\"><strong>Linux<\/strong><\/a><strong>-Kenntnisse \u2014 und kein Interesse, diese zu entwickeln: <\/strong>Plattformen wie Render, Railway und DigitalOcean App Platform liegen irgendwo zwischen rohem VPS-Hosting und vollst\u00e4ndig verwaltetem PaaS. Werkzeuge wie <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/dokploy\/\">Dokploy<\/a> f\u00fcgen Heroku-artige Bereitstellungsworkflows auf deiner eigenen VPS-Infrastruktur hinzu. Du erh\u00e4ltst immer noch viele der Kosten- und Kontrollvorteile, ohne dich tiefgehend mit iptables, Systemd-Interna oder Reverse-Proxy-Debugging um 1 Uhr morgens befassen zu m\u00fcssen.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Es gibt keinen Grund, sich f\u00fcr eine dieser Antworten zu sch\u00e4men. Die beste technische Entscheidung ist die, die zu deiner Arbeitslast passt.<\/p>\n\n\n<h2 id=\"h-picking-your-node-stack-and-moving-in\" class=\"wp-block-heading\">Deinen Node-Stack Ausw\u00e4hlen Und Einziehen<\/h2>\n\n\n<p class=\"wp-block-paragraph\">\u00d6ffne diese Hosting-Rechnung noch einmal.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Du wirst eine \u00fcberraschend gro\u00dfe Menge davon durch eine einzelne VPS-Rechnung ersetzen.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Der Stapel:<\/strong> Ubuntu 24.04 LTS, Node 24, PM2 (oder systemd), NGINX (oder Caddy), Let&#8217;s Encrypt \u00fcber Certbot (oder integriert in Caddy).<\/p>\n\n\n<p class=\"wp-block-paragraph\">Richte den kleinsten VPS-Tarif ein, der zu dem von dir berechneten RAM passt, installiere Node, betreibe deine App auf &#8216;127.0.0.1&#8217;, richte NGINX darauf aus und wechsle deine DNS.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Wenn die App ein Deployment, einen Neustart und einen n\u00e4chtlichen Lauf ohne Probleme \u00fcbersteht, bist Du fast am Ziel.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Der Rest ist Wartung. Eine oder zwei Stunden im Monat, gelegentlich ein &#8216;apt upgrade&#8217; Fenster, ein viertelj\u00e4hrliches Abh\u00e4ngigkeitsupdate. Das ist der Deal, den Du gemacht hast, als Du eine pro-Sitz-Rechnung gegen eine Pauschalrechnung getauscht hast, und DreamHosts Selbstverwaltetes VPS Stack 4 ist der Punkt, an dem Du starten kannst.<\/p>\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a-877x522.webp 1x, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a.webp 2x\"  \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/hosting\/vps\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>VPS<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tOwn Your Entire Stack. Apps, AI, Databases, and More.\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tKeep every credential and conversation on a server you control, with NVMe speed and unmetered bandwidth built in.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Explore VPS Hosting Plans                    <\/a>\n\n\t<\/div>\n<\/div>\n\n<h2 id=\"h-frequently-asked-questions-about-running-node-js-on-a-vps\" class=\"wp-block-heading\">H\u00e4ufig gestellte Fragen zum Betrieb von Node.js auf einem VPS<\/h2>\n\n\n<h3 id=\"h-can-i-run-node-js-on-any-vps\" class=\"wp-block-heading\">Kann Ich Node.js Auf Jedem VPS Ausf\u00fchren?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Die meisten modernen VPS-Pl\u00e4ne f\u00fchren Node.js problemlos aus. Moderne auf KVM basierende VPS-Pl\u00e4ne mit einem 64-Bit Linux-Distro sind die sicherste Standardwahl f\u00fcr aktuelle Node.js-Versionen.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\u00c4ltere OpenVZ-basierte Pl\u00e4ne haben manchmal Kernel-Beschr\u00e4nkungen, die neuere Node-Versionen beeintr\u00e4chtigen. Wenn Du zwischen Anbietern w\u00e4hlst, frage, ob sie auf KVM basieren.<\/p>\n\n\n<h3 id=\"h-how-much-ram-does-node-js-need-on-a-vps\" class=\"wp-block-heading\">Wie viel RAM ben\u00f6tigt Node.js auf einem VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Ein minimaler Express-Server ist im Leerlauf deutlich unter 100 MB, aber eine realistische Produktions-App mit Middleware, Protokollierung und einer Verbindungspool liegt typischerweise im Bereich von 150-300 MB.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Das realistische Minimum f\u00fcr eine Produktions-App betr\u00e4gt 2 GB; der Idealfall f\u00fcr einen Node + Postgres + Redis Stack ist 4 GB. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">DreamHosts selbstverwaltetes VPS<\/a> Stack 4 (4 GB) bew\u00e4ltigt die meisten Produktions-Workloads von Node. Wechsle zu Stack 8 (8 GB) f\u00fcr SSR-intensive oder Echtzeit-Apps.<\/p>\n\n\n<h3 id=\"h-what-s-the-current-node-js-lts-version\" class=\"wp-block-heading\">Was ist die aktuelle Node.js LTS-Version?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Die aktuelle aktive LTS ist Node.js 24.x (&#8220;Krypton&#8221;), eingef\u00fchrt am 28. Oktober 2025 und unterst\u00fctzt bis April 2028. Node.js 22.x (&#8220;Jod&#8221;) befindet sich in der Wartungs-LTS bis April 2027, falls eine Abh\u00e4ngigkeit eine R\u00fcckw\u00e4rtskompatibilit\u00e4t erfordert. <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/blog\/release\/v26.0.0\">Node.js 26 wurde am 5. Mai 2026 gestartet<\/a> und wird im Oktober 2026 zu LTS bef\u00f6rdert.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Die meisten Produktionsteams halten sich an LTS-Versionen, es sei denn, sie ben\u00f6tigen speziell neuere Laufzeitfunktionen.<\/p>\n\n\n<h3 id=\"h-do-i-need-pm2-if-i-have-systemd\" class=\"wp-block-heading\">Brauche ich PM2, wenn ich systemd habe?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Nein, Du brauchst nicht beides. PM2 und systemd l\u00f6sen das gleiche Problem: Sie halten Deine Node-App auch bei Abst\u00fcrzen und Neustarts am Laufen. Viele auf Node spezialisierte Teams w\u00e4hlen PM2 wegen des integrierten Clusterings, der Protokollverwaltung und der Reload-Tools.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Teams, die bereits systemd-Einheiten f\u00fcr alles andere verwenden, w\u00e4hlen systemd.<\/p>\n\n\n<h3 id=\"h-why-put-nginx-in-front-of-node-js\" class=\"wp-block-heading\">Warum NGINX vor Node.js setzen?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">NGINX (oder Caddy) vor Node.js zentralisiert die TLS-Beendigung, Komprimierung, das Bereitstellen statischer Assets und die Ratenbegrenzung in einer speziell f\u00fcr das Proxying und Web-Hosting entwickelten Software.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Es erm\u00f6glicht Dir auch, mehrere Node-Apps auf demselben VPS ohne Portkonflikte auszuf\u00fchren. In der Produktion h\u00f6rt Node auf localhost; NGINX steht dem \u00f6ffentlichen Internet gegen\u00fcber.<\/p>\n\n\n<h3 id=\"h-is-node-js-on-a-vps-cheaper-than-heroku-or-vercel\" class=\"wp-block-heading\">Ist Node.js auf einem VPS g\u00fcnstiger als bei Heroku oder Vercel?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Ja, oft. Ein 4 GB VPS liegt \u00fcblicherweise im Bereich von 15 bis 25 Dollar pro Monat und kann die getrennt berechneten Kosten f\u00fcr App-Laufzeit, Datenbank und Cache auf vielen PaaS-Plattformen zusammenfassen.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Vercel Pro-Preise basieren auf Sitzen, und serverlose Plattformen legen weiterhin Ausf\u00fchrungsdauerbeschr\u00e4nkungen abh\u00e4ngig von Laufzeit und Plan fest.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Der Handel besteht darin, dass Du die Operationen selbst durchf\u00fchrst, etwa ein bis drei Stunden pro Monat.<\/p>\n\n\n<h3 id=\"h-can-i-run-multiple-node-apps-on-one-vps\" class=\"wp-block-heading\">Kann ich mehrere Node-Apps auf einem VPS ausf\u00fchren?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Ja, und es ist der h\u00e4ufigste Grund, warum Teams von PaaS zu einem VPS wechseln. F\u00fchre jede App auf ihrem eigenen internen Port (3000, 3001, 3002) aus und leite den Verkehr mit NGINX-Serverbl\u00f6cken nach Hostname um. PM2 verwaltet alle als separate Prozesse; systemd verwendet eine Einheitsdatei pro App.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ein 4 GB VPS kann oft mehrere leichtgewichtige Node-Dienste zusammen mit einer kleinen Datenbank-Workload bew\u00e4ltigen.<\/p>\n\n\n<h3 id=\"h-can-i-run-node-js-on-dreamhost-shared-hosting\" class=\"wp-block-heading\">Kann Ich Node.js Auf DreamHost Shared Hosting Ausf\u00fchren?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Nein. Node.js ben\u00f6tigt persistente Prozesse, Paketinstallationen auf Root-Ebene und direktes Port-Binding, die alle vom Shared Hosting nicht bereitgestellt werden. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">DreamHosts selbstverwaltete VPS-Pl\u00e4ne<\/a> (Stack 4 und h\u00f6her) eignen sich f\u00fcr Node-Workloads mit vollem Root-Zugriff, NVMe-Speicher und unbegrenzter Bandbreite.<\/p>\n\n\n\n<p><script type=\"application\/ld+json\"><br \/>\n{<br \/>\n  \"@context\": \"https:\/\/schema.org\",<br \/>\n  \"@graph\": [<br \/>\n    {<br \/>\n      \"@type\": \"FAQPage\",<br \/>\n      \"mainEntity\": [<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Kann ich Node.js auf einem beliebigen VPS ausf\u00fchren?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Die meisten modernen VPS-Pl\u00e4ne f\u00fchren Node.js problemlos aus. Voraussetzung ist KVM (oder eine \u00e4hnliche vollst\u00e4ndige Virtualisierung) und ein 64-Bit-Linux-Kernel. \u00c4ltere auf OpenVZ basierende Pl\u00e4ne haben manchmal Kernel-Einschr\u00e4nkungen, die neuere Node-Versionen beeintr\u00e4chtigen. Wenn du zwischen Anbietern w\u00e4hlst, frage, ob sie auf KVM basieren.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Wie viel RAM ben\u00f6tigt Node.js auf einem VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Ein minimaler Express-Server l\u00e4uft im Leerlauf gut unter 100 MB, aber eine realistische Produktions-App mit Middleware, Protokollierung und einer Verbindungs-Pool l\u00e4uft typischerweise im Bereich von 150-300 MB. Das realistische Minimum f\u00fcr eine Produktions-App ist 2 GB; der optimale Bereich f\u00fcr einen Node + Postgres + Redis-Stack ist 4 GB. DreamHosts VPS Stack 4 (4 GB) handhabt die meisten Produktions-Node-Workloads. Wechsel zu Stack 8 (8 GB) f\u00fcr SSR-lastige oder Echtzeit-Apps.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Was ist die aktuelle Node.js LTS-Version?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Die aktuelle Active LTS ist Node.js 24.x ('Krypton'), eingef\u00fchrt am 28. Oktober 2025 und unterst\u00fctzt bis April 2028. Node.js 22.x ('Jod') befindet sich in Maintenance LTS bis April 2027, falls eine kritische Abh\u00e4ngigkeit R\u00fcckw\u00e4rtskompatibilit\u00e4t erfordert. Node.js 26 wurde am 5. Mai 2026 als Current eingef\u00fchrt und wird im Oktober 2026 zu LTS bef\u00f6rdert. F\u00fchre keine Current (nicht-LTS) Versionen in der Produktion aus.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Brauche ich PM2, wenn ich systemd habe?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Nein, du brauchst nicht beides. PM2 und systemd l\u00f6sen das gleiche Problem, sie halten deine Node-App durch Abst\u00fcrze und Neustarts am Laufen. Die meisten Teams w\u00e4hlen PM2 f\u00fcr die Bequemlichkeiten wie Cluster-Modus, Log-Rotation und Zero-Downtime-Reload direkt aus der Box. Teams, die bereits systemd-Einheiten f\u00fcr alles andere verwalten, w\u00e4hlen systemd. Verwende das, womit dein Team vertraut ist.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Warum NGINX vor Node.js setzen?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"NGINX (oder Caddy) vor Node.js \u00fcbernimmt die TLS-Terminierung, Gzip- und Brotli-Kompression, das Ausliefern statischer Assets und das Rate-Limiting effizienter als Node selbst. Es erm\u00f6glicht auch, mehrere Node-Apps auf demselben VPS ohne Portkonflikte zu betreiben. In der Produktion h\u00f6rt Node auf localhost; NGINX steht dem \u00f6ffentlichen Internet gegen\u00fcber. Dies ist das standardm\u00e4\u00dfige Produktionsmuster, keine optionale Optimierung.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Ist Node.js auf einem VPS g\u00fcnstiger als Heroku oder Vercel?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Ja, oft. Ein 4 GB VPS kostet im Bereich von $15-$25 pro Monat und ersetzt ein Heroku Basic Dyno plus Heroku Postgres plus Heroku Redis Stack, der h\u00e4ufig im Bereich von $25-$60 pro Monat liegt. Vercel Pro beginnt bei $20 pro Sitz mit Funktions-Timeouts. Der Handel besteht darin, dass du dich selbst um den Betrieb k\u00fcmmerst, etwa ein bis drei Stunden pro Monat f\u00fcr Wartung.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Kann ich mehrere Node-Apps auf einem VPS ausf\u00fchren?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Ja, und das ist der h\u00e4ufigste Grund, warum Teams von PaaS zu einem VPS wechseln. Betreibe jede App auf ihrem eigenen internen Port (3000, 3001, 3002) und leite den Verkehr mit NGINX Server-Bl\u00f6cken basierend auf dem Hostnamen um. PM2 verwaltet alle als separate Prozesse; systemd w\u00fcrde eine Unit-Datei pro App verwenden. Ein 4 GB VPS f\u00fchrt bequem drei oder vier kleine Node-Dienste plus eine Datenbank aus.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Kann ich Node.js auf DreamHost Shared Hosting ausf\u00fchren?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Nein. Node.js ben\u00f6tigt persistente Prozesse, Installationen von Paketen auf Root-Ebene und direkte Portbindung, die das Shared Hosting nicht bietet. DreamHosts selbstverwaltete VPS-Pl\u00e4ne (Stack 4 und h\u00f6her) passen zu Node-Workloads mit vollst\u00e4ndigem Root-Zugriff, NVMe-Speicher und unbegrenzter Bandbreite.\"<br \/>\n          }<br \/>\n        }<br \/>\n      ]<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"HowTo\",<br \/>\n      \"name\": \"Wie man Node.js auf einem VPS ausf\u00fchrt\",<br \/>\n      \"step\": [<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Installiere Node.js 24 LTS\",<br \/>\n          \"text\": \"Auf Ubuntu oder Debian, f\u00fchre aus: curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | bash -, dann apt install -y nodejs. \u00dcberpr\u00fcfe mit node -v. Verwende nvm stattdessen, wenn du pro Projekt Versionsschaltung ben\u00f6tigst.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Richte einen Prozessmanager ein\",<br \/>\n          \"text\": \"Installiere PM2 mit npm install -g pm2, dann pm2 start app.js --name api, pm2 startup, pm2 save. Oder schreibe eine systemd-Unit in \/etc\/systemd\/system\/api.service und f\u00fchre systemctl enable --now api aus.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Installiere NGINX und konfiguriere einen Reverse-Proxy\",<br \/>\n          \"text\": \"Installiere NGINX mit apt install nginx. Erstelle einen Server-Block in \/etc\/nginx\/sites-available\/api mit proxy_pass http:\/\/127.0.0.1:3000 und den WebSocket-Upgrade-Headern. Erstelle eine Symlink zu sites-enabled und lade neu.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Binde Node an localhost und aktiviere eine Firewall\",<br \/>\n          \"text\": \"Konfiguriere deine Node-App, um auf 127.0.0.1:3000 statt auf 0.0.0.0:3000 zu h\u00f6ren. Aktiviere UFW mit default deny incoming, dann erlaube Ports 22, 80 und 443.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Konfiguriere HTTPS mit Let's Encrypt\",<br \/>\n          \"text\": \"Weise einen A-Record auf deine VPS-IP zu. Installiere Certbot mit apt install certbot python3-certbot-nginx, dann f\u00fchre certbot --nginx -d deine-domain.com aus. Certbot installiert einen systemd-Timer, der das Zertifikat automatisch erneuert.\"<br \/>\n        }<br \/>\n      ]<br \/>\n    }<br \/>\n  ]<br \/>\n}<br \/>\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine kalten Starts, keine Funktionszeit\u00fcberschreitungen, keine Rechnungen pro Sitzplatz. Aktuelle LTS, PM2 vs. systemd, NGINX mit Let\u2019s Encrypt.<\/p>\n","protected":false},"author":2,"featured_media":83811,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_opengraph-title":"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost","_yoast_wpseo_opengraph-description":"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let's Encrypt.","_yoast_wpseo_twitter-title":"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost","_yoast_wpseo_twitter-description":"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let's Encrypt.","toc_headlines":"[[\"h-when-does-running-node-js-on-a-vps-make-sense\",\"Wann Macht Es Sinn, Node.js Auf Einem VPS Zu Betreiben?\"],[\"h-what-vps-specs-does-node-js-actually-need\",\"Welche VPS-Spezifikationen Ben\u00f6tigt Node.js Wirklich?\"],[\"h-which-node-js-version-should-you-install\",\"Welche Node.js-Version Solltest Du Installieren?\"],[\"h-how-do-you-install-node-js-on-a-vps\",\"Wie Installierst Du Node.js Auf Einem VPS?\"],[\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\",\"Solltest Du PM2 Oder Systemd Verwenden, Um Deine App Am Laufen Zu Halten?\"],[\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\",\"Wie Setzt Du NGINX (oder Caddy) Vor Deine Node-App?\"],[\"h-how-do-you-set-up-https-for-your-node-js-app\",\"Wie Richtest Du HTTPS F\u00fcr Deine Node.js-App Ein?\"],[\"h-what-does-a-production-ready-node-js-setup-actually-look-like\",\"Wie Sieht Ein Produktionsfertiges Node.js-Setup Eigentlich Aus?\"],[\"h-when-is-a-vps-the-wrong-choice-for-node-js\",\"Wann Ist Ein VPS Die Falsche Wahl F\u00fcr Node.js?\"],[\"h-picking-your-node-stack-and-moving-in\",\"Deinen Node-Stack Ausw\u00e4hlen Und Einziehen\"],[\"h-frequently-asked-questions-about-running-node-js-on-a-vps\",\"H\u00e4ufig gestellte Fragen zum Betrieb von Node.js auf einem VPS\"]]","hide_toc":false,"show_updated_at":"0","footnotes":""},"categories":[14495,14505,14497],"tags":[],"class_list":["post-85053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials-de","category-vps-hosting-de","category-webhosting-de"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost<\/title>\n<meta name=\"description\" content=\"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let&#039;s Encrypt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost\" \/>\n<meta property=\"og:description\" content=\"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let&#039;s Encrypt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-29T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T15:23:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1920\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Dallas Kashuba\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost\" \/>\n<meta name=\"twitter:description\" content=\"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let&#039;s Encrypt.\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/dallas\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dallas Kashuba\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost","description":"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let's Encrypt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/","og_locale":"en_US","og_type":"article","og_title":"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost","og_description":"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let's Encrypt.","og_url":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2026-06-29T15:00:00+00:00","article_modified_time":"2026-07-07T15:23:48+00:00","og_image":[{"width":2560,"height":1920,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","type":"image\/webp"}],"author":"Dallas Kashuba","twitter_card":"summary_large_image","twitter_title":"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost","twitter_description":"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let's Encrypt.","twitter_creator":"@http:\/\/twitter.com\/dallas","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Dallas Kashuba","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#article","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/"},"author":{"name":"Dallas Kashuba","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814"},"headline":"Wie Man Node.js auf einem VPS Ausf\u00fchrt","datePublished":"2026-06-29T15:00:00+00:00","dateModified":"2026-07-07T15:23:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/"},"wordCount":3733,"publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","articleSection":["Tutorials","VPS Hosting","Webhosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/","url":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/","name":"Wie Man Node.js Auf Einem VPS Ausf\u00fchrt - DreamHost","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#primaryimage"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","datePublished":"2026-06-29T15:00:00+00:00","dateModified":"2026-07-07T15:23:48+00:00","description":"F\u00fchre Node.js auf einem VPS mit voller Kontrolle aus: keine Kaltstarts, keine Funktions-Timeouts, keine nutzerbasierten Rechnungen. Aktuelles LTS, PM2 vs. systemd, NGINX mit Let's Encrypt.","breadcrumb":{"@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#primaryimage","url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","contentUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","width":2560,"height":1920,"caption":"How To Run Node.js on a VPS"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dreamhost.com\/blog\/de\/wie-man-nodejs-auf-einem-vps-ausfuhrt-de\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Wie Man Node.js auf einem VPS Ausf\u00fchrt"}]},{"@type":"WebSite","@id":"https:\/\/www.dreamhost.com\/blog\/#website","url":"https:\/\/www.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814","name":"Dallas Kashuba","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","caption":"Dallas Kashuba"},"description":"Dallas Kashuba co-founded DreamHost while attending Harvey Mudd College and has spent nearly three decades building infrastructure at scale. Today he serves as an advisor, board member, and investor for various tech startups, with a consistent focus on user privacy, open source, and data portability. When he's not thinking about the Open Web, he's probably making music. Follow Dallas on X.","sameAs":["http:\/\/www.idallas.com\/","https:\/\/x.com\/http:\/\/twitter.com\/dallas"],"url":"https:\/\/www.dreamhost.com\/blog\/author\/dallas\/"}]}},"lang":"de","translations":{"de":85053,"it":85083,"en":83809,"pt":84966,"es":84969,"uk":84978,"pl":84985,"ru":84999,"fr":85022,"nl":85024},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":3,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85053\/revisions"}],"predecessor-version":[{"id":85348,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85053\/revisions\/85348"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/83811"}],"wp:attachment":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=85053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=85053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=85053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}