{"id":85024,"date":"2026-06-29T08:00:00","date_gmt":"2026-06-29T15:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=85024"},"modified":"2026-07-07T08:14:28","modified_gmt":"2026-07-07T15:14:28","slug":"hoe-nodejs-uitvoeren-op-een-vps-nl","status":"publish","type":"post","link":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/","title":{"rendered":"Hoe Node.js Uitvoeren op een VPS"},"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 draaien op een VPS betekent het installeren van de huidige Node.js LTS (24.x &#8220;Krypton&#8221; vanaf mei 2026) op een Linux-server die je beheert, en vervolgens je app uitvoeren achter een procesbeheerder en een reverse proxy met HTTPS. Je krijgt een enkele altijd-aan box die langdurige verbindingen, achtergrondtaken en zware berekeningen afhandelt, zonder facturering per functie of koude starts.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Doelconfiguratie:<\/strong> Ubuntu 24.04 LTS + Node 24 via NodeSource of nvm + PM2 (of systemd) + NGINX + Let&#8217;s Encrypt.<\/p>\n\n\n\n\n\t<\/div>\n<\/div>\n\n<p class=\"wp-block-paragraph\">Heroku heeft zijn gratis versie be\u00ebindigd en de minimumprijs verhoogd. Vercel rekent per gebruiker en be\u00ebindigt langlopende taken. Render en Railway schalen de prijs met het verkeer.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Open de meest recente factuur van je hostingprovider. De Node-app, een Postgres-database en een Redis-cache. Drie regelposten, drie sets met waarschuwingen voor overschrijdingen, \u00e9\u00e9n hectische Slack-thread op de dag dat marketing eindelijk een campagne lanceert.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Die rekening is waarom veel teams opnieuw naar de VPS kijken. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/what-is-node-js\/\">Node.js<\/a> zelf <em>maakt het niet uit<\/em> waar het draait. Het enige waar serverless je voor beschermde was erachter komen wat er gebeurt na \u2018npm start\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Laten we kijken naar een productieopstelling-patroon voor <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/nodejs\/\">Node.js<\/a> op een Linux box die je beheert. Als je via SSH in een box kunt inloggen en een configuratiebestand kunt lezen, dan heb je aan het einde een productiestack die je jarenlang kunt draaien met een paar uur onderhoud per maand.<\/p>\n\n\n<h2 id=\"h-when-does-running-node-js-on-a-vps-make-sense\" class=\"wp-block-heading\">Wanneer Is Het Zinvol Om Node.js Op Een VPS Te Draaien?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Een VPS is de juiste thuisbasis voor Node.js wanneer je een langlopend proces hebt, een stack die je wilt consolideren in \u00e9\u00e9n rekening, of een beheerde-runtime factuur die het gemak is ontgroeid.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>In het algemeen zijn er drie goede mogelijkheden:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Langlevende processen:<\/strong> WebSocket servers, queue workers, cron schedulers, MCP servers. Alles wat moet <em>blijven<\/em> draaien en luisteren. De meeste serverloze platformen zijn nog steeds geoptimaliseerd voor kortdurende uitvoeringen en verzoeklevenscycli. Een Node proces op een VPS zit er gewoon.<\/li>\n\n\n\n<li><strong>Kostenconsolidatie:<\/strong> Node app, <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/postgresql\/\">Postgres<\/a>, Redis, plus een kleine build worker leven allemaal op dezelfde 4 GB box. E\u00e9n factuurregel, niet vier.<\/li>\n\n\n\n<li><strong>Apps die PaaS ontgroeid zijn:<\/strong> Functietime-outs op je lange PDF-generatiejob. Prijs per zitplaats voor een team dat eindelijk een vierde ingenieur inhuurde. Een <a target=\"_blank\" href=\"https:\/\/www.heroku.com\/pricing\/\">Heroku<\/a> factuur die de $60 per maand passeert voor een werklast die prima draait op een VPS van $15.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\"><strong>En er zijn drie <\/strong><strong><em>verkeerde<\/em><\/strong><strong> passingen:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statische sites en SSG-content:<\/strong> Een Next.js export, een Astro build, een Gatsby blog. De gratis versie van Vercel is het juiste gereedschap. Een VPS is overbodig.<\/li>\n\n\n\n<li><strong>Schaarse, event-gedreven workloads:<\/strong> AWS Lambda of Cloudflare Workers kosten een paar cent voor een webhook die tien keer per dag draait. Een VPS kost hetzelfde of de app nu druk is of slaapt.<\/li>\n\n\n\n<li><strong>Horizontaal geschaalde real-time apps:<\/strong> Als je WebSocket-server moet uitzenden naar 100.000 gelijktijdige verbindingen, is \u00e9\u00e9n VPS niet het antwoord. Dat is een Kubernetes-cluster, een gedistribueerde edge-infrastructuur of een beheerd real-time platform.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">JavaScript is de meest gebruikte taal in de <a target=\"_blank\" href=\"https:\/\/survey.stackoverflow.co\/2025\/technology\">2025 Stack Overflow Developer Survey<\/a>, en Node.js blijft een van de standaardmanieren waarop ontwikkelaars JavaScript op de backend draaien. Dat zijn heel wat mensen die Node ergens draaien. Dit artikel is voor die groep die het liever op een server draait die ze zelf beheren.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ik heb teams gezien die vier productie Node-services van Heroku naar een enkele 4 GB VPS verplaatsten, met dezelfde uptime, een derde van de rekening en langlevende WebSockets die eindelijk werkten zonder een tijdelijke oplossing.<\/p>\n\n\n<p class=\"wp-block-paragraph\">De migratie bestaat voornamelijk uit een middag van &#8216;apt install&#8217;, een &#8216;pm2 start&#8217; en een DNS-wijziging.<\/p>\n\n\n<h2 id=\"h-what-vps-specs-does-node-js-actually-need\" class=\"wp-block-heading\">Welke VPS-Specificaties Heeft Node.js Daadwerkelijk Nodig?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Node.js zelf is lichtgewicht. Een minimale Express-server kan inactief zijn met minder dan 100 MB aan resident geheugen. Het advies dat &#8220;Node slechts 1 GB nodig heeft&#8221; dat je nog steeds op oudere blogs kunt vinden, is technisch gezien waar en praktisch nutteloos. Tegen de tijd dat je Postgres, Redis, logboeken en een implementatieproces hebt toegevoegd dat niet alleen op hoop is gebaseerd, zit je op een rustige dag al snel boven die limiet.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Realistische dimensionering voor gangbare werklasten:<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Werklast<\/strong><\/th><th><strong>RAM<\/strong><\/th><th><strong>vCPU<\/strong><\/th><th><strong>Opslag<\/strong><\/th><th><strong>Aantekeningen<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Kleine Express API, geen DB op de box<\/td><td>2 GB<\/td><td>1-2<\/td><td>40 GB NVMe<\/td><td>Realistische minimum voor \u00e9\u00e9n productie-app<\/td><\/tr><tr><td>Node API + Postgres + Redis op \u00e9\u00e9n box<\/td><td>4 GB<\/td><td>2<\/td><td>80 GB NVMe<\/td><td>Het ideale punt; de meeste teams belanden hier<\/td><\/tr><tr><td>SSR-zware app (Next.js, Nuxt, Remix)<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>SSR-rendering en build pipelines zijn waar het geheugen naartoe gaat<\/td><\/tr><tr><td>Real-time\/WebSocket-app, gematigde schaal<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>Elke persistente verbinding verbruikt geheugen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Een paar details om vast te leggen voordat je gaat voorzien:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NVMe-opslag is belangrijker dan de ruwe schijfgrootte:<\/strong> Moderne Node-apps raken duizenden kleine bestanden aan tijdens installaties, builds en opstarten. Trage schijven maken afhankelijkheidsinstallaties, koude starts en SSR-rebuilds merkbaar slechter.<\/li>\n\n\n\n<li><strong>KVM-virtualisatie, geen OpenVZ:<\/strong> Oudere OpenVZ-gebaseerde plannen delen een kernel met de host, wat kan leiden tot verouderde kernelversies en incidentele compatibiliteitsproblemen met nieuwere runtimes. De meeste gerenommeerde VPS-aanbieders gebruiken nu alleen KVM, maar het is nog steeds de moeite waard om te controleren.<\/li>\n\n\n\n<li><strong>Swapruimte:<\/strong> Schakel 1-2 GB swap in op kleinere boxes. De V8 heap van Node kan hard schommelen tijdens garbage collection. Zonder swap doodt een tijdelijke piek het proces. Ik heb gezien hoe een box van 4 GB OOM werd tijdens een routine-implementatie omdat iemand swap had uitgeschakeld, denkend dat het een anachronisme uit het Docker-tijdperk was.<\/li>\n\n\n\n<li><strong>Bandbreedte:<\/strong> De meeste moderne VPS-plannen omvatten 1-4 TB aan maandelijkse bandbreedte, genoeg voor bijna alles behalve videohosting. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">Zelfbeheerde VPS-plannen<\/a> bevatten ongemeten bandbreedte, een minder lijn op de capaciteitsplannings-spreadsheet.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Een 4 GB VPS kost ongeveer $15 per maand tegen het markttarief. Dat is 50 cent per dag, of ongeveer \u00e9\u00e9n vliegveldkoffie elke twee weken. Vergeleken met het apart betalen voor app-runtimes, beheerde Postgres en Redis op een PaaS, keren de economische voordelen verrassend snel om.<\/p>\n\n\n<h2 id=\"h-which-node-js-version-should-you-install\" class=\"wp-block-heading\">Welke Node.js Versie Moet Je Installeren?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Installeer <strong>Node.js 24 (codenaam Krypton)<\/strong>. Dit is de huidige actieve LTS-versie, gelanceerd in oktober 2025 en ondersteund tot april 2028 volgens het offici\u00eble <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/about\/previous-releases\">Node.js uitgaveschema<\/a>.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Veel handleidingen wijzen mensen nog steeds op Node 22. Die gidsen zijn niet bijgewerkt. Als je vandaag een nieuwe implementatie start, zet dan je CI-afbeelding en je VPS vast op Node 24.x.<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Versie<\/strong><\/th><th><strong>Codenaam<\/strong><\/th><th><strong>Status<\/strong><\/th><th><strong>EOL<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Node.js 26.x<\/td><td>(geen)<\/td><td>Huidig<\/td><td>Promoveert naar LTS eind 2026<\/td><\/tr><tr><td>Node.js 24.x<\/td><td>Krypton<\/td><td>Actieve LTS<\/td><td>April 2028<\/td><\/tr><tr><td>Node.js 22.x<\/td><td>Jodium<\/td><td>Onderhouds-LTS<\/td><td>April 2027<\/td><\/tr><tr><td>Node.js 20.x<\/td><td>Ijzer<\/td><td>Einde van levensduur |<\/td><td>Bereikte EOL 30 april 2026. Niet gebruiken.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Een paar vuistregels:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Gebruik geen huidige (niet-LTS) releases in productie:<\/strong> Node 26 bestaat voor het testen van toekomstige compatibiliteit en nieuwe runtimefuncties, niet voor de app waarvan je inkomsten afhankelijk zijn.<\/li>\n\n\n\n<li><strong>Node 22 is de terugvaloptie als een kritieke afhankelijkheid nog steeds niet compatibel is met Node 24:<\/strong> De meeste van het ecosysteem stabiliseerden binnen enkele maanden na de LTS-promotie.<\/li>\n\n\n\n<li><strong>Zet je Node-versie overal vast:<\/strong> Je CI-afbeelding, Dockerfile, .nvmrc en productie VPS moeten allemaal overeenkomen. &#8220;Werkt op mijn machine&#8221; wordt snel duur zodra native modules deel uitmaken van het gesprek.<\/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 Overwegen<\/strong><\/a><strong>?<\/strong> Het is sneller bij sommige werkbelastingen en echt indrukwekkend, maar het ecosysteem is nog kleiner, en het productietraject is korter dan dat van Node. Voor de meeste teams wint saai.<\/p>\n\n\n<p class=\"wp-block-paragraph\">NodeSource, dat de apt en yum repositories beheert waar veel productieteams Node van installeren, benadrukt verbeteringen in de 24.x lijn, beginnend met een nieuwere V8-motor. Node 24 levert nu ook volwassen gereedschappen zoals ingebouwde node &#8211;watch en een stabiele native testrunner (node: test), die beide gestabiliseerd zijn in de 20\u201322 lijnen en hier worden voortgezet. Het is niets opzienbarends. Het verwijdert gewoon elke maand een beetje operationele wrijving.<\/p>\n\n\n<h2 id=\"h-how-do-you-install-node-js-on-a-vps\" class=\"wp-block-heading\">Hoe Installeer Je Node.js Op Een VPS?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Je hebt twee realistische installatiepaden. Kies op basis van of de server \u00e9\u00e9n Node-app of meerdere draait.<\/p>\n\n\n<h3 id=\"h-nodesource-for-a-single-app-server\" class=\"wp-block-heading\">NodeSource Voor Een Single-App Server<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Dit is het eenvoudigste productiepad. E\u00e9n installatiescript en \u00e9\u00e9n <strong><code>apt install<\/code><\/strong> geven je de huidige Node 24 LTS lijn als een systeempakket, en toekomstige beveiligingsupdates verlopen via normale pakketupgrades.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Op Ubuntu of 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\">Controleer de installatie:<\/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=\"Terminalopdrachten die Node.js versie 24.14.0 en npm versie 11.9.0 ge\u00efnstalleerd op DreamHost tonen.\" 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\">Je zou een Node 24.x release moeten zien.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Instructies voor RHEL-familie distributies (yum\/dnf) zijn te vinden in de offici\u00eble NodeSource distributies repository.<\/p>\n\n\n<h3 id=\"h-nvm-for-per-project-version-switching\" class=\"wp-block-heading\">nvm voor Per-Project Versie Schakeling<\/h3>\n\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/github.com\/nvm-sh\/nvm\">nvm<\/a> (Node Version Manager) installeert Node in je thuismap en laat verschillende projecten verschillende Node-versies draaien. Nuttig als je meerdere apps op dezelfde server host of geen sudo-toegang hebt.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Draai dit als je app-gebruiker, niet 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\">Herlaad je shell, en installeer dan 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\udc49Een belangrijke regel: <\/strong>Gebruik <code>sudo \u2018npm install -g\u2019<\/code> niet voor applicatieafhankelijkheden.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Globale installaties zijn meestal gereserveerd voor machine-niveau CLI-tools zoals pm2, typescript of nodemon. De afhankelijkheden van je app horen in package.json en moeten vanuit de projectmap worden ge\u00efnstalleerd met npm ci.<\/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>\u00c9\u00e9n Node-versie per server<\/td><td>Meerdere Node-versies per server<\/td><\/tr><tr><td>Ge\u00efnstalleerd voor het hele systeem, draait als elke gebruiker<\/td><td>Per gebruiker ge\u00efnstalleerd<\/td><\/tr><tr><td>Auto-updates met <code>\u2018apt\u2019<\/code><\/td><td>Handmatig beheerd<\/td><\/tr><tr><td>Vereist <code>sudo<\/code><\/td><td>Geen <code>sudo<\/code> vereist<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Als je het niet zeker weet, begin dan met NodeSource. De meeste servers voor \u00e9\u00e9n specifiek doel hebben geen per-project Node versiewisseling nodig.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49<strong>DreamHost Zelfbeheerde VPS-gebruikers: <\/strong>De Node-app die beschikbaar is bij provisioning wordt geleverd met Node 22 LTS \u2014 nog steeds ondersteund tot april 2027. Om Node 24 te gebruiken, volg de NodeSource of nvm stappen hierboven na provisioning.<\/p>\n\n\n<h2 id=\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\" class=\"wp-block-heading\">Moet Je PM2 Of Systemd Gebruiken Om Je App Draaiende Te Houden?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Beide werken. Het eerlijke antwoord is welke jouw team prettig vindt. PM2 is het ontwikkelaarsvriendelijke pad. systemd is het Unix-geori\u00ebnteerde pad. Beide lossen dezelfde drie problemen op: herstarten bij crash, starten bij opstarten en gracieus afsluiten bij \u2018SIGTERM\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Als je helemaal opnieuw begint, is hier hoe je kunt kiezen:<\/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>Installatietijd<\/td><td>3 minuten<\/td><td>10 minuten<\/td><\/tr><tr><td>Clustermodus (meerdere kernen)<\/td><td>Ingebouwd<\/td><td>Niet ingebouwd (start N eenheden)<\/td><\/tr><tr><td>Logrotatie<\/td><td>Module: <code>'pm2-logrotate'<\/code><\/td><td>Ingebouwd via <code>'journalctl'<\/code><\/td><\/tr><tr><td>Herladen zonder downtime<\/td><td><code>'pm2 herladen'<\/code><\/td><td>Meestal handmatig afgehandeld met rollende herstarts of meerdere eenheden<\/td><\/tr><tr><td>Geheugenoverhead (daemon)<\/td><td>Kleine daemon overhead<\/td><td>Geen (geen extra daemon)<\/td><\/tr><tr><td>Beste voor<\/td><td>Enkele box, JS-shop, snelle iteratie<\/td><td>Meerdere app-boxen, comfort voor operationele teams<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">De <a target=\"_blank\" href=\"https:\/\/pm2.keymetrics.io\/docs\/usage\/quick-start\/\">PM2 snelle start<\/a> is precies dat, snel:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>npm install -g pm2\npm2 start app.js --name api\npm2 startup    # geeft de systemd opstartopdracht weer om uit te voeren\npm2 save       # slaat de huidige proceslijst op<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">PM2 wordt dan het enige waar je mee praat: &#8216;<code>pm2 logs<\/code>,&#8217; &#8216;<code>pm2 reload api<\/code>,&#8217; &#8216;<code>pm2 monit<\/code>.&#8217;<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Ook goed om te weten:<\/strong> &#8216;<code>pm2 startup<\/code>&#8216; schrijft een systemd-eenheid, dus de PM2-configuratie gebruikt <em>daadwerkelijk<\/em> systemd onder de motorkap.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Een minimale systemd-eenheid voor direct Node-beheer op \u2018\/etc\/systemd\/system\/api.service\u2019:<\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Unit]<br>Beschrijving=Mijn Node API<br>Na=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>Voer dan &#8216;<code>systemctl enable --now api<\/code>&#8216; uit. Logs zijn te vinden in &#8216;<code>journalctl -u api -f<\/code>&#8216;.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Als je al PM2 gebruikt en het werkt, migreer dan niet naar systemd alleen omdat iemand op Hacker News dat zei. Het geheugen van de PM2 daemon is niet de reden waarom je ervan zou migreren.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Migreer wanneer je een echte reden hebt, zoals het draaien van een half dozijn Node-processen waar elke megabyte telt, of het verzenden naar een ops-omgeving waar elke andere service een systemd-eenheid is, en PM2 opvalt als de vreemde eend in de bijt.<\/p>\n\n\n<h2 id=\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\" class=\"wp-block-heading\">Hoe Plaats Je NGINX (of Caddy) Voor Je 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 fungeert als reverse proxy tussen clientverzoeken en 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\">Je wilt een reverse proxy voor Node om vijf redenen: HTTPS-be\u00ebindiging, gzip\/brotli compressie, statische assetverlening, meerdere apps op dezelfde server draaien en makkelijkere snelheidsbeperking. Node <em>kan<\/em> dit allemaal doen. NGINX en Caddy doen het beter, en ze laten je event loop niet crashen als er iets misgaat.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Kies NGINX als iemand in je team er al bekend mee is. Kies Caddy als je <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/ultimate-guide-ssl-tls\/\">HTTPS<\/a> wilt in drie regels configuratie en je tevreden bent met een kleiner geavanceerd-configuratie-ecosysteem.<\/p>\n\n\n<h3 id=\"h-minimal-nginx-config\" class=\"wp-block-heading\">Minimale NGINX Configuratie<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Plaats dit proxyblok in <strong>\/etc\/nginx\/sites-available\/api<\/strong>, maak een symlink naar <strong><code>sites-enabled<\/code><\/strong>, en voer dan <strong><code>nginx -t &amp;&amp; systemctl reload nginx<\/code><\/strong> uit.<\/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\">De &#8216;Upgrade&#8217; en &#8216;Connection&#8217; headers zijn de regels die WebSocket-ondersteuning bieden. <a target=\"_blank\" href=\"https:\/\/nginx.org\/en\/docs\/http\/websocket.html\">De eigen documentatie van NGINX geeft aan<\/a> dat Upgrade een hop-by-hop header is, dus het vereist expliciete afhandeling bij het proxien van WebSocket-verkeer.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Laat ze staan als je app nu WebSockets gebruikt, of dat later misschien doet. Socket.IO, GraphQL-abonnementen via WebSockets en een verrassend aantal &#8220;gewone&#8221; realtime functies zijn afhankelijk van die upgrade-handdruk.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Het meest voorkomende productieprobleem dat ik zie in Node-opstellingen is een Socket.IO-server achter <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216431827-Nginx-overview\">NGINX<\/a> zonder die twee regels. Verbindingen mislukken sporadisch, ontwikkelaars geven Socket.IO de schuld, en het eigenlijke probleem is meestal de proxyconfiguratie.<\/p>\n\n\n<h3 id=\"h-minimal-caddyfile\" class=\"wp-block-heading\">Minimale Caddyfile<\/h3>\n\n\n<p class=\"wp-block-paragraph\">De <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/quick-starts\/reverse-proxy\">Caddy reverse proxy snelstart<\/a> versie van hetzelfde:<\/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\">Dat is het hele bestand. Zolang het domein naar de server wijst en poorten 80\/443 bereikbaar zijn, regelt Caddy automatisch HTTPS-provisies en vernieuwingen. Caddy&#8217;s documentatie zegt <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/automatic-https\">automatische HTTPS-provisies<\/a> TLS-certificaten voor sites en houdt deze vernieuwd; de snelstartgids voor de reverse proxy merkt ook op dat HTTPS automatisch is wanneer Caddy de hostnaam kent.<\/p>\n\n\n<h3 id=\"h-bind-node-to-localhost-not-0-0-0-0\" class=\"wp-block-heading\">Koppel Node Aan localhost, Niet Aan 0.0.0.0<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Welke proxy je ook kiest, configureer je Node-applicatie om te luisteren op 127.0.0.1:3000, niet op 0.0.0.0:3000. Het enige dat met het openbare internet verbonden moet zijn op een Node-box is de proxy. Combineer dit met UFW, de gangbare firewall frontend van Ubuntu, om alles te weigeren behalve poorten 22, 80 en 443.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>ufw standaard weiger binnenkomend\nufw toestaan 22\/tcp\nufw toestaan 80\/tcp\nufw toestaan 443\/tcp\nufw inschakelen<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Als SSH draait op een aangepaste poort, sta die poort toe voordat je UFW inschakelt.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Verbind vanaf dag \u00e9\u00e9n met localhost. De vergadering waar iemand toegeeft &#8220;de app was blootgesteld omdat Node verbond met 0.0.0.0&#8221; is niet een vergadering die je wilt hebben.<\/p>\n\n\n<h2 id=\"h-how-do-you-set-up-https-for-your-node-js-app\" class=\"wp-block-heading\">Hoe Stel Je HTTPS In Voor Je Node.js App?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Gebruik <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216539558-Let-s-Encrypt-SSL-certificate-overview\">Let&#8217;s Encrypt<\/a>. Het is gratis, geautomatiseerd en vertrouwd door elke browser. Er zijn twee paden, afhankelijk van welke proxy je hebt gekozen.<\/p>\n\n\n<h3 id=\"h-nginx-certbot\" class=\"wp-block-heading\">NGINX + Certbot<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Wijs een A-record toe aan je VPS IP en wacht tot de DNS zich heeft verspreid.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Installeer 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\">Start:<\/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 werkt je NGINX-configuratie bij en herlaadt de server automatisch.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Op moderne Ubuntu-versies wordt de verlenging automatisch afgehandeld door een systemd-timer die door het Certbot-pakket is ge\u00efnstalleerd.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Open <strong>https:\/\/api.example.com<\/strong> en bevestig het sloticoon.<\/p>\n\n\n<p class=\"wp-block-paragraph\">De <a target=\"_blank\" href=\"https:\/\/certbot.eff.org\/instructions?ws=nginx&amp;os=snap\">offici\u00eble Certbot documentatie<\/a> behandelt ook de snap-gebaseerde installatieroute als jouw distropakket verouderd is.<\/p>\n\n\n<h3 id=\"h-caddy\" class=\"wp-block-heading\">Caddy<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Voeg het domein toe aan het Caddyfile (het voorbeeld hierboven heeft het al), en herstart dan Caddy. Zolang het domein correct oplost en de poorten 80\/443 bereikbaar zijn, wordt het certificaat automatisch verstrekt bij de eerste start. Er is geen Certbot.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Zet TLS niet stop in Node zelf voor productie.<\/strong><\/p>\n\n\n<p class=\"wp-block-paragraph\">Node&#8217;s https module werkt perfect, maar reverse proxies zoals NGINX en Caddy zijn speciaal gebouwd voor TLS-terminatie. Ze bieden je OCSP-stapeling, moderne standaardcijfers, automatische certificaatvernieuwing, HTTP\/2-ondersteuning en \u2014 in het geval van Caddy \u2014 HTTP\/3-ondersteuning standaard.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Kun je dat allemaal rechtstreeks in Node afhandelen? Zeker. Je zou gewoon infrastructuur herbouwen die je proxy al uiterst goed oplost.<\/p>\n\n\n<h2 id=\"h-what-does-a-production-ready-node-js-setup-actually-look-like\" class=\"wp-block-heading\">Hoe Ziet Een Productieklare Node.js Setup Eruit?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Acht dingen bijten mensen in productie. De meeste staan niet in installatiehandleidingen omdat ze niet passen in het &#8220;installeer Node, draai app&#8221; verhaal. Ze vormen het verschil tussen een app die de tweede maand overleeft en een die dat niet doet.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NODE_ENV=production:<\/strong> De meest gemiste stap. In veel Node frameworks en bibliotheken schakelt het gedrag alleen geschikt voor ontwikkeling uit en activeert het optimalisaties voor productie. Express bijvoorbeeld, slaat gecompileerde weergavesjablonen op en geeft compactere fouten in productie &#8211; zijn eigen documentatie noemt een prestatieverbetering tot 3x. Stel de &#8216;env var&#8217; overal in.<\/li>\n\n\n\n<li><strong>Graceful shutdown:<\/strong> Wanneer jouw VPS opnieuw opstart of PM2 &#8216;SIGTERM&#8217; stuurt, heeft je app een paar seconden om lopende verzoeken te verwerken, databaseverbindingen te sluiten en schoon af te sluiten. Stel een &#8216;process.on(&#8216;SIGTERM&#8217;, &#8230;)&#8217; handler in. PM2&#8217;s standaard shutdown timing hangt af van configuratie en omgeving, dus ga er niet vanuit dat je altijd veel tijd hebt om op te ruimen.<\/li>\n\n\n\n<li><strong>Logrotatie:<\/strong> PM2&#8217;s \u2018pm2-logrotate\u2019 module regelt dit voor PM2. Het systemd-journaal handelt het af voor directe systemd-eenheden. Zonder rotatie, vullen je logs de schijf in een kwart van de tijd die je zou verwachten.<\/li>\n\n\n\n<li><strong>.env discipline:<\/strong> Geef nooit geheimen vrij, log ze nooit. Gebruik \u2018dotenv\u2019 voor lokale ontwikkeling. In productie, stel env vars in via je systemd-eenheids \u2018Environment=\u2019 of je PM2 ecosysteembestand. De dag dat je per ongeluk \u2018console.log(process.env)\u2019 doet, is de dag dat je elke referentie roteert.<\/li>\n\n\n\n<li><strong>Een reverse proxy voor Node:<\/strong> Verbind Node met localhost; laat NGINX of Caddy het openbare internet onder ogen zien.<\/li>\n\n\n\n<li><strong>Een firewall:<\/strong> UFW weigert alles behalve 22, 80, 443. SSH verplaatsen van poort 22 stopt geen vastberaden aanvaller, maar het vermindert aanzienlijk de automatische brute-force ruis en ongewenste auth logs.<\/li>\n\n\n\n<li><strong>Monitoring:<\/strong> Een healthcheck-endpoint dat je monitoringtool elke minuut controleert. PM2 heeft ingebouwde basisfuncties. Voor iets serieus, gebruik Prometheus en Grafana, of gebruik een gehoste uptime service zoals <a target=\"_blank\" href=\"https:\/\/betterstack.com\/\">Better Stack<\/a> of <a target=\"_blank\" href=\"https:\/\/uptimerobot.com\/\">UptimeRobot<\/a>. Je wilt weten dat je app niet werkt <em>voordat<\/em> een klant het je vertelt.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Onderhoudsschatting voor de bovenstaande stack: \u00e9\u00e9n tot drie uur per maand.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Apt-updates, incidentele afhankelijkheidsverhogingen en een driemaandelijks overzicht van het logboekvolume. Dat is de ruil voor de kosten- en controlevoordelen.<\/p>\n\n\n<h2 id=\"h-when-is-a-vps-the-wrong-choice-for-node-js\" class=\"wp-block-heading\">Wanneer Is Een VPS De Verkeerde Keuze Voor Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Een VPS is de verkeerde keuze als je werklast bedoeld is voor iets anders. Wees eerlijk over welke kant je op gaat voordat je provisioneert.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statische Sites En Ssg-Inhoud:<\/strong> Next.js export, Astro, Gatsby en een Eleventy blog. Platforms zoals Vercel, Netlify of Cloudflare Pages bieden je wereldwijd gecachte statische hosting, Git-gebaseerde deployments en automatische herbouwen standaard. Een VPS is meestal overbodige infrastructuur voor puur statische inhoud.<\/li>\n\n\n\n<li><strong>Sparse, Event-Driven Workloads: <\/strong>Cloudflare Workers en AWS Lambda zijn goedkoop voor webhooks die tien keer per dag draaien.&nbsp;<\/li>\n\n\n\n<li><strong>Real-Time Apps Die Meer Dan 100.000 Gelijktijdige Verbindingen Nodig Hebben:<\/strong> E\u00e9n VPS schaalt niet horizontaal. Je hebt orkestratie nodig (Kubernetes, ECS, Nomad) of een beheerd real-time platform zoals Ably of Pusher.<\/li>\n\n\n\n<li><strong>Compliance-Intensieve Gereguleerde Workloads:<\/strong> HIPAA, PCI-DSS Level 1, FedRAMP. Een beheerd PaaS met ingebouwde compliance-certificeringen bespaart auditproblemen. Zelf-hosting compliance op een VPS is een project van meerdere kwartalen dat je waarschijnlijk niet wilt.<\/li>\n\n\n\n<li><strong>Geen <\/strong><a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/linux-distros\/\"><strong>Linux<\/strong><\/a><strong> Comfort \u2014 En Geen Zin Om Dit Op Te Bouwen: <\/strong>Platforms zoals Render, Railway en DigitalOcean App Platform bevinden zich ergens tussen ruwe VPS hosting en volledig beheerd PaaS. Tools zoals <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/dokploy\/\">Dokploy<\/a> voegen Heroku-stijl deployment workflows toe aan je eigen VPS-infrastructuur. Je behoudt nog steeds veel van de kosten- en controlevoordelen zonder diep vertrouwd te raken met iptables, systemd internals, of reverse-proxy debugging om 1 uur &#8216;s nachts.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Er is geen schaamte in een van die antwoorden. De beste technische beslissing is degene die overeenkomt met je werklast.<\/p>\n\n\n<h2 id=\"h-picking-your-node-stack-and-moving-in\" class=\"wp-block-heading\">Je Node Stack Kiezen En Verhuizen<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Open die hostingfactuur nog een keer.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Je staat op het punt om een verrassende hoeveelheid ervan te vervangen door \u00e9\u00e9n VPS-factuur.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49De stack:<\/strong> Ubuntu 24.04 LTS, Node 24, PM2 (of systemd), NGINX (of Caddy), Let&#8217;s Encrypt via Certbot (of Caddy&#8217;s ingebouwde).<\/p>\n\n\n<p class=\"wp-block-paragraph\">Start de kleinste VPS-plan dat voldoet aan de RAM die je hebt berekend, installeer Node, draai je app op &#8216;127.0.0.1,&#8217; richt NGINX erop, en wijzig je DNS.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Als de app een implementatie, een herstart en een nachtelijke run zonder problemen overleeft, ben je al een heel eind op weg.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Het overige is onderhoud. Een uur of twee per maand, af en toe een &#8216;apt upgrade&#8217; venster, een driemaandelijkse afhankelijkheidsverhoging. Dat is de afspraak die je hebt gemaakt toen je een per-stoel factuur inruilde voor een vaste, en DreamHost\u2019s Self-Managed VPS Stack 4 is waar je kunt beginnen.<\/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\">Veelgestelde Vragen Over Het Draaien Van Node.js Op Een VPS<\/h2>\n\n\n<h3 id=\"h-can-i-run-node-js-on-any-vps\" class=\"wp-block-heading\">Kan Ik Node.js Op Elke VPS Draaien?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">De meeste moderne VPS-plannen draaien prima op Node.js. Moderne op KVM gebaseerde VPS-plannen met een 64-bit Linux-distributie zijn de veiligste standaard voor huidige Node.js-releases.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Oudere OpenVZ-gebaseerde plannen hebben soms kernelbeperkingen die nieuwere Node-versies breken. Als je tussen aanbieders kiest, vraag dan of ze op KVM zijn gebaseerd.<\/p>\n\n\n<h3 id=\"h-how-much-ram-does-node-js-need-on-a-vps\" class=\"wp-block-heading\">Hoeveel RAM heeft Node.js nodig op een VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Een minimale Express-server draait stationair ruim onder de 100 MB, maar een realistische productieapp met middleware, logboeken en een connectiepool draait doorgaans in het bereik van 150-300 MB.<\/p>\n\n\n<p class=\"wp-block-paragraph\">De realistische minimumvereiste voor \u00e9\u00e9n productie-app is 2 GB; het optimale punt voor een Node + Postgres + Redis stack is 4 GB. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">DreamHost&#8217;s Self-Managed VPS<\/a> Stack 4 (4 GB) kan de meeste productie Node werklasten aan. Stap over naar Stack 8 (8 GB) voor SSR-zware of real-time apps.<\/p>\n\n\n<h3 id=\"h-what-s-the-current-node-js-lts-version\" class=\"wp-block-heading\">Wat Is De Huidige Node.js LTS Versie?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">De huidige actieve LTS is Node.js 24.x (&#8220;Krypton&#8221;), gepromoveerd op 28 oktober 2025 en ondersteund tot april 2028. Node.js 22.x (&#8220;Jod&#8221;) is in onderhouds-LTS tot april 2027 als een afhankelijkheid achterwaartse compatibiliteit vereist. <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/blog\/release\/v26.0.0\">Node.js 26 is gelanceerd op 5 mei 2026<\/a>, als huidig en zal in oktober 2026 tot LTS worden bevorderd.<\/p>\n\n\n<p class=\"wp-block-paragraph\">De meeste productieteams houden zich aan LTS-releases, tenzij ze specifiek nieuwere runtimefuncties nodig hebben.<\/p>\n\n\n<h3 id=\"h-do-i-need-pm2-if-i-have-systemd\" class=\"wp-block-heading\">Heb Ik PM2 Nodig Als Ik Systemd Heb?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Nee, je hebt niet beide nodig. PM2 en systemd lossen hetzelfde probleem op: ervoor zorgen dat je Node-app blijft draaien bij crashes en herstarts. Veel op Node gerichte teams kiezen PM2 vanwege de ingebouwde clustering, logbeheer en herlaadtools.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Teams die al systemd-eenheden gebruiken voor alles kiezen voor systemd.<\/p>\n\n\n<h3 id=\"h-why-put-nginx-in-front-of-node-js\" class=\"wp-block-heading\">Waarom NGINX voor Node.js plaatsen?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">NGINX (of Caddy) voor Node.js centraliseert TLS-be\u00ebindiging, compressie, het serveren van statische assets en snelheidsbeperking in software die specifiek is ontworpen voor proxying en webserving.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Het stelt je ook in staat om meerdere Node-apps op dezelfde VPS te draaien zonder poortconflicten. In productie luistert Node naar localhost; NGINX staat tegenover het openbare internet.<\/p>\n\n\n<h3 id=\"h-is-node-js-on-a-vps-cheaper-than-heroku-or-vercel\" class=\"wp-block-heading\">Is Node.js op een VPS goedkoper dan Heroku of Vercel?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Ja, vaak. Een 4 GB VPS valt doorgaans ergens in de $15-$25\/maand range op markttarief en kan app runtime, database, en cache kosten die apart gefactureerd worden op veel PaaS platforms consolideren.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Vercel Pro prijzen zijn gebaseerd op het aantal plaatsen, en serverloze platforms leggen nog steeds uitvoeringsduurlimieten op, afhankelijk van de runtime en het plan.<\/p>\n\n\n<p class=\"wp-block-paragraph\">De afspraak is dat je zelf de operaties beheert, ongeveer \u00e9\u00e9n tot drie uur per maand.<\/p>\n\n\n<h3 id=\"h-can-i-run-multiple-node-apps-on-one-vps\" class=\"wp-block-heading\">Kan ik meerdere Node apps draaien op \u00e9\u00e9n VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Ja, en het is de meest voorkomende reden waarom teams overstappen van PaaS naar een VPS. Draai elke app op zijn eigen interne poort (3000, 3001, 3002) en leid verkeer om met NGINX serverblokken op basis van hostnaam. PM2 beheert ze allemaal als afzonderlijke processen; systemd gebruikt \u00e9\u00e9n unit-bestand per app.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Een 4 GB VPS kan vaak meerdere lichte Node-services samen met een kleine databasewerklast aan.<\/p>\n\n\n<h3 id=\"h-can-i-run-node-js-on-dreamhost-shared-hosting\" class=\"wp-block-heading\">Kan Ik Node.js Draaien Op DreamHost Shared Hosting?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Nee. Node.js heeft persistente processen, pakketinstallaties op rootniveau en directe poortbinding nodig, die geen van alle door shared hosting worden geboden. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">DreamHost&#8217;s Self-Managed VPS-plannen<\/a> (Stack 4 en hoger) zijn geschikt voor Node-werklasten met volledige root-toegang, NVMe-opslag en ongemeten bandbreedte.<\/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\": \"Kan ik Node.js op elke VPS draaien?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"De meeste moderne VPS-plannen draaien prima Node.js. De vereiste is KVM (of vergelijkbare volledige virtualisatie) en een 64-bit Linux-kernel. Oudere OpenVZ-gebaseerde plannen hebben soms kernelbeperkingen die nieuwere Node-versies breken. Als je tussen providers kiest, vraag dan of ze KVM-gebaseerd zijn.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Hoeveel RAM heeft Node.js nodig op een VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Een minimale Express-server is inactief goed onder de 100 MB, maar een realistische productie-app met middleware, logboekregistratie en een verbindingenpool draait meestal in het bereik van 150-300 MB. Het realistische minimum voor \u00e9\u00e9n productie-app is 2 GB; het ideale punt voor een Node + Postgres + Redis stack is 4 GB. DreamHost's Self-Managed VPS Stack 4 (4 GB) kan de meeste productie-Node werklasten aan. Stap over naar Stack 8 (8 GB) voor SSR-zware of realtime apps.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Wat is de huidige Node.js LTS-versie?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"De huidige Actieve LTS is Node.js 24.x ('Krypton'), gepromoveerd op 28 oktober 2025 en ondersteund tot april 2028. Node.js 22.x ('Jod') is in Onderhouds-LTS tot april 2027 als een kritieke afhankelijkheid achterwaartse compatibiliteit vereist. Node.js 26 is gelanceerd op 5 mei 2026 als Current en promoveert naar LTS in oktober 2026. Draai geen Current (niet-LTS) releases in productie.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Heb ik PM2 nodig als ik systemd heb?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Nee, je hebt niet beide nodig. PM2 en systemd lossen hetzelfde probleem op, het draaiende houden van je Node-app door crashes en herstarts. De meeste teams kiezen PM2 vanwege de gemakken van cluster-modus, log-rotatie en zero-downtime-reload direct uit de doos. Teams die al systemd-eenheden voor alles beheren, kiezen systemd. Gebruik wat je team prettig vindt.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Waarom NGINX voor Node.js zetten?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"NGINX (of Caddy) voor Node.js verzorgt TLS-terminatie, gzip- en brotli-compressie, statische assetlevering en snelheidsbeperking effici\u00ebnter dan Node zelf. Het stelt je ook in staat om meerdere Node-apps op dezelfde VPS te draaien zonder poortconflicten. In productie luistert Node op localhost; NGINX staat tegenover het publieke internet. Dit is het standaard productiepatroon, geen optionele optimalisatie.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Is Node.js op een VPS goedkoper dan Heroku of Vercel?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Ja, vaak wel. Een 4 GB VPS kost in de range van $15-$25 per maand en vervangt een Heroku Basic dyno plus Heroku Postgres plus Heroku Redis stack die vaak in de $25-$60 per maand valt. Vercel Pro begint bij $20 per zitplaats met functietijdslimieten. De afweging is dat je zelf de operaties afhandelt, ongeveer \u00e9\u00e9n tot drie uur per maand aan onderhoud.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Kan ik meerdere Node-apps op \u00e9\u00e9n VPS draaien?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Ja, en dat is de meest voorkomende reden dat teams van PaaS overstappen naar een VPS. Draai elke app op zijn eigen interne poort (3000, 3001, 3002) en routeer verkeer met NGINX-serverblokken op basis van hostnaam. PM2 beheert ze allemaal als afzonderlijke processen; systemd zou \u00e9\u00e9n unitbestand per app gebruiken. Een 4 GB VPS kan comfortabel drie of vier kleine Node-services plus een database draaien.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Kan ik Node.js draaien op DreamHost shared hosting?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Nee. Node.js heeft persistente processen, root-niveau pakketinstallaties en directe poortbinding nodig, waarvan geen enkele shared hosting biedt. DreamHost's Self-Managed VPS plannen (Stack 4 en hoger) passen bij Node werklasten met volledige root-toegang, NVMe-opslag en ongemeten bandbreedte.\"<br \/>\n          }<br \/>\n        }<br \/>\n      ]<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"HowTo\",<br \/>\n      \"name\": \"Hoe Node.js op een VPS te draaien\",<br \/>\n      \"step\": [<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Installeer Node.js 24 LTS\",<br \/>\n          \"text\": \"Op Ubuntu of Debian, voer uit: curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | bash -, vervolgens apt install -y nodejs. Verifieer met node -v. Gebruik nvm in plaats daarvan als je per-project versiewisseling nodig hebt.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Zet een procesbeheerder op\",<br \/>\n          \"text\": \"Installeer PM2 met npm install -g pm2, vervolgens pm2 start app.js --name api, pm2 startup, pm2 save. Of schrijf een systemd unit op \/etc\/systemd\/system\/api.service en voer systemctl enable --now api uit.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Installeer NGINX en configureer een reverse proxy\",<br \/>\n          \"text\": \"Installeer NGINX met apt install nginx. Maak een serverblok in \/etc\/nginx\/sites-available\/api met proxy_pass http:\/\/127.0.0.1:3000 en de WebSocket upgrade headers. Maak een symlink naar sites-enabled en herlaad.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Bind Node aan localhost en schakel een firewall in\",<br \/>\n          \"text\": \"Configureer je Node-app om te luisteren op 127.0.0.1:3000 in plaats van 0.0.0.0:3000. Schakel UFW in met standaard deny incoming, laat dan poorten 22, 80 en 443 toe.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Configureer HTTPS met Let's Encrypt\",<br \/>\n          \"text\": \"Wijs een A-record toe aan je VPS IP. Installeer Certbot met apt install certbot python3-certbot-nginx, voer vervolgens certbot --nginx -d jouwdomein.com uit. Certbot installeert een systemd timer die het certificaat automatisch vernieuwt.\"<br \/>\n        }<br \/>\n      ]<br \/>\n    }<br \/>\n  ]<br \/>\n}<br \/>\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Draai Node.js op een VPS met volledige controle: geen koude starts, geen functie-timeouts, geen facturering per zitplaats. Huidige LTS, PM2 versus systemd, NGINX met Let&#8217;s 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":"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost","_yoast_wpseo_opengraph-description":"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met Let's Encrypt.","_yoast_wpseo_twitter-title":"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost","_yoast_wpseo_twitter-description":"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met Let's Encrypt.","toc_headlines":"[[\"h-when-does-running-node-js-on-a-vps-make-sense\",\"Wanneer Is Het Zinvol Om Node.js Op Een VPS Te Draaien?\"],[\"h-what-vps-specs-does-node-js-actually-need\",\"Welke VPS-Specificaties Heeft Node.js Daadwerkelijk Nodig?\"],[\"h-which-node-js-version-should-you-install\",\"Welke Node.js Versie Moet Je Installeren?\"],[\"h-how-do-you-install-node-js-on-a-vps\",\"Hoe Installeer Je Node.js Op Een VPS?\"],[\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\",\"Moet Je PM2 Of Systemd Gebruiken Om Je App Draaiende Te Houden?\"],[\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\",\"Hoe Plaats Je NGINX (of Caddy) Voor Je Node App?\"],[\"h-how-do-you-set-up-https-for-your-node-js-app\",\"Hoe Stel Je HTTPS In Voor Je Node.js App?\"],[\"h-what-does-a-production-ready-node-js-setup-actually-look-like\",\"Hoe Ziet Een Productieklare Node.js Setup Eruit?\"],[\"h-when-is-a-vps-the-wrong-choice-for-node-js\",\"Wanneer Is Een VPS De Verkeerde Keuze Voor Node.js?\"],[\"h-picking-your-node-stack-and-moving-in\",\"Je Node Stack Kiezen En Verhuizen\"],[\"h-frequently-asked-questions-about-running-node-js-on-a-vps\",\"Veelgestelde Vragen Over Het Draaien Van Node.js Op Een VPS\"]]","hide_toc":false,"show_updated_at":"0","footnotes":""},"categories":[14932,14936,14938],"tags":[],"class_list":["post-85024","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials-nl","category-vps-hosting-nl","category-web-hosting-nl"],"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>Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost<\/title>\n<meta name=\"description\" content=\"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met 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\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost\" \/>\n<meta property=\"og:description\" content=\"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met Let&#039;s Encrypt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/\" \/>\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:14:28+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=\"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost\" \/>\n<meta name=\"twitter:description\" content=\"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met 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=\"17 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost","description":"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met 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\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/","og_locale":"en_US","og_type":"article","og_title":"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost","og_description":"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met Let's Encrypt.","og_url":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/","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:14:28+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":"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost","twitter_description":"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met Let's Encrypt.","twitter_creator":"@http:\/\/twitter.com\/dallas","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Dallas Kashuba","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#article","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/"},"author":{"name":"Dallas Kashuba","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814"},"headline":"Hoe Node.js Uitvoeren op een VPS","datePublished":"2026-06-29T15:00:00+00:00","dateModified":"2026-07-07T15:14:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/"},"wordCount":3623,"publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","articleSection":["Handleidingen","VPS Hosting","Web Hosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/","url":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/","name":"Hoe Node.js Uit Te Voeren Op Een VPS - DreamHost","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#primaryimage"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#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:14:28+00:00","description":"Draai Node.js op een VPS met volledige controle: geen koude starts, geen functietime-outs, geen kosten per plaats. Huidige LTS, PM2 vs. systemd, NGINX met Let's Encrypt.","breadcrumb":{"@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#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\/nl\/hoe-nodejs-uitvoeren-op-een-vps-nl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hoe Node.js Uitvoeren op een VPS"}]},{"@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":"nl","translations":{"nl":85024,"it":85083,"en":83809,"pt":84966,"es":84969,"uk":84978,"pl":84985,"ru":84999,"fr":85022,"de":85053},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85024","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\/85024\/revisions"}],"predecessor-version":[{"id":85317,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85024\/revisions\/85317"}],"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=85024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=85024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=85024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}