{"id":84985,"date":"2026-06-29T08:00:00","date_gmt":"2026-06-29T15:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=84985"},"modified":"2026-07-07T08:26:14","modified_gmt":"2026-07-07T15:26:14","slug":"jak-uruchomic-nodejs-na-vps-pl","status":"publish","type":"post","link":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/","title":{"rendered":"Jak Uruchomi\u0107 Node.js na 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\">Uruchamianie Node.js na VPS oznacza instalacj\u0119 aktualnej wersji LTS Node.js (24.x &#8220;Krypton&#8221; na maj 2026) na serwerze Linux, kt\u00f3rym zarz\u0105dzasz, a nast\u0119pnie uruchamianie aplikacji za pomoc\u0105 mened\u017cera proces\u00f3w i odwrotnej serwery proxy z HTTPS. Otrzymujesz pojedyncze, zawsze w\u0142\u0105czone urz\u0105dzenie, kt\u00f3re obs\u0142uguje d\u0142ugotrwa\u0142e po\u0142\u0105czenia, zadania w tle i intensywne obliczenia bez rozliczania na funkcj\u0119 lub op\u00f3\u017anie\u0144 startowych.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Docelowa konfiguracja:<\/strong> Ubuntu 24.04 LTS + Node 24 przez NodeSource lub nvm + PM2 (lub systemd) + NGINX + Let&#8217;s Encrypt.<\/p>\n\n\n\n\n\t<\/div>\n<\/div>\n\n<p class=\"wp-block-paragraph\">Heroku zlikwidowa\u0142o swoj\u0105 darmow\u0105 wersj\u0119 i podnios\u0142o minimaln\u0105 op\u0142at\u0119. Vercel pobiera op\u0142aty za ka\u017cdego u\u017cytkownika i przerywa d\u0142ugotrwa\u0142e zadania. Render i Railway skaluj\u0105 cen\u0119 w zale\u017cno\u015bci od ruchu.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Otw\u00f3rz najnowszy rachunek od swojego dostawcy hostingu. Aplikacja Node, baza danych Postgres i pami\u0119\u0107 podr\u0119czna Redis. Trzy pozycje, trzy zestawy ostrze\u017ce\u0144 o przekroczeniu limitu, jeden gor\u0105czkowy w\u0105tek na Slacku w dniu, gdy marketing w ko\u0144cu uruchamia kampani\u0119.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ten rachunek to pow\u00f3d, dla kt\u00f3rego wiele zespo\u0142\u00f3w ponownie przygl\u0105da si\u0119 VPS. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/what-is-node-js\/\">Node.js<\/a> sam w sobie nie <em>zale\u017cy<\/em> gdzie dzia\u0142a. Jedyn\u0105 rzecz\u0105, przed kt\u00f3r\u0105 chroni\u0142o ci\u0119 serverless, by\u0142o odkrycie, co dzieje si\u0119 po \u2018npm start\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Przyjrzyjmy si\u0119 wzorcowi konfiguracji produkcyjnej dla <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/nodejs\/\">Node.js<\/a> na serwerze Linux, kt\u00f3ry kontrolujesz. Je\u015bli potrafisz po\u0142\u0105czy\u0107 si\u0119 z serwerem przez SSH i przeczyta\u0107 plik konfiguracyjny, na ko\u0144cu b\u0119dziesz mia\u0142 stos produkcyjny, kt\u00f3ry mo\u017cesz uruchamia\u0107 przez lata przy kilku godzinach konserwacji miesi\u0119cznie.<\/p>\n\n\n<h2 id=\"h-when-does-running-node-js-on-a-vps-make-sense\" class=\"wp-block-heading\">Kiedy Uruchamianie Node.js Na VPS Ma Sens?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">VPS to odpowiednie miejsce dla Node.js, gdy masz proces d\u0142ugotrwa\u0142y, stos technologiczny, kt\u00f3ry chcesz skonsolidowa\u0107 w jednej fakturze, lub zarz\u0105dzan\u0105 wersj\u0119 \u015brodowiska wykonawczego, kt\u00f3ra przeros\u0142a swoj\u0105 wygod\u0119.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Og\u00f3lnie rzecz bior\u0105c, istniej\u0105 trzy dobre dopasowania:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Procesy d\u0142ugotrwa\u0142e:<\/strong> Serwery WebSocket, pracownicy kolejki, harmonogramy Cron, serwery MCP. Wszystko, co musi <em>pozosta\u0107<\/em> w\u0142\u0105czone i nas\u0142uchiwa\u0107. Wi\u0119kszo\u015b\u0107 platform serwerowych wci\u0105\u017c optymalizuje kr\u00f3tkotrwa\u0142e wykonanie i cykle \u017cycia \u017c\u0105da\u0144. Proces Node na VPS po prostu siedzi.<\/li>\n\n\n\n<li><strong>Konsolidacja koszt\u00f3w:<\/strong> Aplikacja Node, <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/postgresql\/\">Postgres<\/a>, Redis, plus ma\u0142y pracownik budowlany, wszyscy mieszkaj\u0105 na tym samym boxie 4 GB. Jedna linia rachunku, nie cztery.<\/li>\n\n\n\n<li><strong>Aplikacje, kt\u00f3re przeros\u0142y PaaS:<\/strong> Limit czasowy funkcji przy d\u0142ugim zadaniu generowania PDF. Cena za miejsce w zespole, kt\u00f3ry w ko\u0144cu zatrudni\u0142 czwartego in\u017cyniera. Faktura z <a target=\"_blank\" href=\"https:\/\/www.heroku.com\/pricing\/\">Heroku<\/a> przekraczaj\u0105ca 60 dolar\u00f3w miesi\u0119cznie za obci\u0105\u017cenie, kt\u00f3re dzia\u0142a dobrze na VPS za 15 dolar\u00f3w.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\"><strong>A istniej\u0105 trzy <\/strong><strong><em>nieprawid\u0142owe<\/em><\/strong><strong> dopasowania:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statyczne strony i tre\u015bci SSG:<\/strong> Eksport Next.js, kompilacja Astro, blog Gatsby. Darmowy plan Vercel to odpowiednie narz\u0119dzie. VPS to przesada.<\/li>\n\n\n\n<li><strong>Rzadkie, sterowane zdarzeniami obci\u0105\u017cenia:<\/strong> AWS Lambda lub Cloudflare Workers kosztuj\u0105 grosze za webhook, kt\u00f3ry uruchamia si\u0119 dziesi\u0119\u0107 razy dziennie. VPS kosztuje tyle samo, niezale\u017cnie od tego, czy aplikacja jest zaj\u0119ta, czy \u015bpi.<\/li>\n\n\n\n<li><strong>Skalowane poziomo aplikacje czasu rzeczywistego:<\/strong> Je\u015bli Tw\u00f3j serwer WebSocket musi obs\u0142u\u017cy\u0107 100 000 r\u00f3wnoczesnych po\u0142\u0105cze\u0144, jedno VPS nie jest odpowiedzi\u0105. To klaster Kubernetes, rozproszona infrastruktura edge lub zarz\u0105dzana platforma czasu rzeczywistego.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">JavaScript jest najcz\u0119\u015bciej u\u017cywanym j\u0119zykiem w <a target=\"_blank\" href=\"https:\/\/survey.stackoverflow.co\/2025\/technology\">Ankiecie Deweloper\u00f3w Stack Overflow 2025<\/a>, a Node.js pozostaje jednym z domy\u015blnych sposob\u00f3w, w jaki deweloperzy uruchamiaj\u0105 JavaScript na backendzie. To naprawd\u0119 du\u017co os\u00f3b u\u017cywaj\u0105cych Node gdzie\u015b. Ten artyku\u0142 jest dla tych, kt\u00f3rzy byliby szcz\u0119\u015bliwsi, mog\u0105c uruchomi\u0107 go na serwerze, kt\u00f3rym sami zarz\u0105dzaj\u0105.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Obserwowa\u0142em, jak zespo\u0142y przenosi\u0142y cztery produkcyjne us\u0142ugi Node z Heroku na jeden 4 GB VPS, z tak\u0105 sam\u0105 dost\u0119pno\u015bci\u0105, za jedn\u0105 trzeci\u0105 ceny, oraz z d\u0142ugotrwa\u0142ymi WebSockets, kt\u00f3re wreszcie dzia\u0142a\u0142y bez obej\u015bcia.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Migracja to g\u0142\u00f3wnie popo\u0142udnie sp\u0119dzone na &#8216;apt install&#8217;, &#8216;pm2 start&#8217; i zmianie DNS.<\/p>\n\n\n<h2 id=\"h-what-vps-specs-does-node-js-actually-need\" class=\"wp-block-heading\">Jakie Specyfikacje VPS S\u0105 Naprawd\u0119 Potrzebne Dla Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Node.js jest sam w sobie lekki. Minimalny serwer Express mo\u017ce spokojnie zu\u017cywa\u0107 poni\u017cej 100 MB pami\u0119ci RAM. Rada \u201eNode potrzebuje tylko 1 GB\u201d, kt\u00f3r\u0105 wci\u0105\u017c mo\u017cna znale\u017a\u0107 na starszych blogach, jest technicznie prawdziwa, ale praktycznie bezu\u017cyteczna. Do czasu, gdy dodasz Postgres, Redis, dzienniki i proces wdra\u017cania, kt\u00f3ry nie jest trzymany razem tylko nadziej\u0105, ju\u017c przekraczasz t\u0119 warto\u015b\u0107 nawet w spokojny dzie\u0144.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Rzeczywiste wymiary dla typowych obci\u0105\u017ce\u0144:<\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Obci\u0105\u017cenie<\/strong><\/th><th><strong>RAM<\/strong><\/th><th><strong>vCPU<\/strong><\/th><th><strong>Pami\u0119\u0107<\/strong><\/th><th><strong>Notatki<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Ma\u0142e API Express, brak bazy danych na serwerze<\/td><td>2 GB<\/td><td>1-2<\/td><td>40 GB NVMe<\/td><td>Rzeczywiste minimum dla jednej aplikacji produkcyjnej<\/td><\/tr><tr><td>Node API + Postgres + Redis na jednym serwerze<\/td><td>4 GB<\/td><td>2<\/td><td>80 GB NVMe<\/td><td>\u015arodkowy punkt; tu l\u0105duje wi\u0119kszo\u015b\u0107 zespo\u0142\u00f3w<\/td><\/tr><tr><td>Aplikacja z intensywnym SSR (Next.js, Nuxt, Remix)<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>Renderowanie SSR i \u0142a\u0144cuchy kompilacji zu\u017cywaj\u0105 pami\u0119\u0107<\/td><\/tr><tr><td>Aplikacja w czasie rzeczywistym\/WebSocket, \u015brednia skala<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>Ka\u017cde trwa\u0142e po\u0142\u0105czenie zu\u017cywa pami\u0119\u0107<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Kilka szczeg\u00f3\u0142\u00f3w do ustalenia przed uruchomieniem:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Znaczenie pami\u0119ci NVMe jest wi\u0119ksze ni\u017c surowa wielko\u015b\u0107 dysku:<\/strong> Wsp\u00f3\u0142czesne aplikacje Node dotykaj\u0105 tysi\u0119cy ma\u0142ych plik\u00f3w podczas instalacji, budowy i uruchamiania. Wolne dyski pogarszaj\u0105 instalacje zale\u017cno\u015bci, zimne starty i przebudowy SSR.<\/li>\n\n\n\n<li><strong>Wirtualizacja KVM, a nie OpenVZ:<\/strong> Starsze plany oparte na OpenVZ dziel\u0105 j\u0105dro z hostem, co mo\u017ce oznacza\u0107 przestarza\u0142e wersje j\u0105dra i okazjonalne b\u00f3le g\u0142owy zwi\u0105zane z kompatybilno\u015bci\u0105 z nowszymi \u015brodowiskami uruchomieniowymi. Wi\u0119kszo\u015b\u0107 renomowanych dostawc\u00f3w VPS obecnie oferuje tylko KVM, ale warto to sprawdzi\u0107.<\/li>\n\n\n\n<li><strong>Przestrze\u0144 wymiany (swap):<\/strong> W\u0142\u0105cz 1-2 GB przestrzeni wymiany na mniejszych maszynach. Stos V8 Node mo\u017ce mocno waha\u0107 si\u0119 podczas zbierania \u015bmieci. Bez swapu, przej\u015bciowy szczyt obci\u0105\u017cenia zabija proces. Obserwowa\u0142em, jak maszyna z 4 GB RAM zosta\u0142a OOM podczas rutynowego wdra\u017cania, poniewa\u017c kto\u015b wy\u0142\u0105czy\u0142 swap, my\u015bl\u0105c, \u017ce to anachronizm ery Docker.<\/li>\n\n\n\n<li><strong>Przepustowo\u015b\u0107:<\/strong> Wi\u0119kszo\u015b\u0107 nowoczesnych plan\u00f3w VPS obejmuje 1-4 TB miesi\u0119cznej przepustowo\u015bci, wystarczaj\u0105co na prawie wszystko, opr\u00f3cz hostingu wideo. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">Plany VPS zarz\u0105dzane samodzielnie<\/a> obejmuj\u0105 nieograniczon\u0105 przepustowo\u015b\u0107, co jest jednym punktem mniej w arkuszu kalkulacyjnym planowania pojemno\u015bci.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">4 GB VPS kosztuje oko\u0142o 15 dolar\u00f3w miesi\u0119cznie przy obecnych cenach rynkowych. To 50 cent\u00f3w dziennie, czyli mniej wi\u0119cej jedna kawa na lotnisku co dwa tygodnie. W por\u00f3wnaniu do osobnego p\u0142acenia za \u015brodowiska uruchomieniowe aplikacji, zarz\u0105dzane Postgres i Redis na platformie PaaS, ekonomia zmienia si\u0119 zaskakuj\u0105co szybko.<\/p>\n\n\n<h2 id=\"h-which-node-js-version-should-you-install\" class=\"wp-block-heading\">Kt\u00f3r\u0105 Wersj\u0119 Node.js Powiniene\u015b Zainstalowa\u0107?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Zainstaluj <strong>Node.js 24 (nazwa kodowa Krypton)<\/strong>. To obecnie aktywna wersja LTS, promowana w pa\u017adzierniku 2025 roku i wspierana do kwietnia 2028 roku zgodnie z oficjalnym <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/about\/previous-releases\">harmonogramem wyda\u0144 Node.js<\/a>.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Wiele poradnik\u00f3w nadal kieruje u\u017cytkownik\u00f3w do Node 22. Te przewodniki nie zosta\u0142y zaktualizowane. Je\u015bli zaczynasz now\u0105 instalacj\u0119 dzisiaj, przypnij sw\u00f3j obraz CI i VPS do Node 24.x.<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Wersja<\/strong><\/th><th><strong>Kryptonim<\/strong><\/th><th><strong>Status<\/strong><\/th><th><strong>Koniec wsparcia<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Node.js 26.x<\/td><td>(brak)<\/td><td>Aktualny<\/td><td>Zostanie LTS pod koniec 2026 roku<\/td><\/tr><tr><td>Node.js 24.x<\/td><td>Krypton<\/td><td>Aktywny LTS<\/td><td>Kwiecie\u0144 2028<\/td><\/tr><tr><td>Node.js 22.x<\/td><td>Jod<\/td><td>LTS w trybie utrzymania<\/td><td>Kwiecie\u0144 2027<\/td><\/tr><tr><td>Node.js 20.x<\/td><td>\u017belazo<\/td><td>Koniec \u017cycia |<\/td><td>Koniec wsparcia 30 kwietnia 2026. Nie u\u017cywaj.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Kilka praktycznych zasad:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nie u\u017cywaj obecnych wyda\u0144 (nie-LTS) w produkcji: <\/strong>Node 26 s\u0142u\u017cy do testowania przysz\u0142ej kompatybilno\u015bci i nowych funkcji \u015brodowiska uruchomieniowego, a nie dla aplikacji, od kt\u00f3rej zale\u017c\u0105 twoje przychody.<\/li>\n\n\n\n<li><strong>Node 22 to opcja awaryjna, je\u017celi kluczowa zale\u017cno\u015b\u0107 wci\u0105\u017c nie jest kompatybilna z Node 24: <\/strong>Wi\u0119kszo\u015b\u0107 ekosystemu ustabilizowa\u0142a si\u0119 w ci\u0105gu kilku miesi\u0119cy od promocji LTS.<\/li>\n\n\n\n<li><strong>Przypnij swoj\u0105 wersj\u0119 Node wsz\u0119dzie: <\/strong>Obraz CI, Dockerfile, .nvmrc i produkcyjny VPS powinny by\u0107 zgodne. \u201eDzia\u0142a na moim komputerze\u201d szybko staje si\u0119 kosztowne, gdy w gr\u0119 wchodz\u0105 natywne modu\u0142y.<\/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>Rozwa\u017casz Bun<\/strong><\/a><strong>?<\/strong> Jest szybszy przy niekt\u00f3rych obci\u0105\u017ceniach i naprawd\u0119 robi wra\u017cenie, ale ekosystem jest nadal mniejszy, a okres sprawdzania w produkcji kr\u00f3tszy ni\u017c w przypadku Node&#8217;a. Dla wi\u0119kszo\u015bci zespo\u0142\u00f3w, nudne rozwi\u0105zania wygrywaj\u0105.<\/p>\n\n\n<p class=\"wp-block-paragraph\">NodeSource, kt\u00f3ry utrzymuje repozytoria apt i yum, z kt\u00f3rych wiele zespo\u0142\u00f3w produkcyjnych instaluje Node, podkre\u015bla ulepszenia w linii 24.x, zaczynaj\u0105c od nowszego silnika V8. Node 24 dostarcza r\u00f3wnie\u017c ju\u017c dojrza\u0142e narz\u0119dzia takie jak wbudowany node &#8211;watch i stabilny natywny modu\u0142 testuj\u0105cy (node: test), kt\u00f3re ustabilizowa\u0142y si\u0119 w liniach 20\u201322 i s\u0105 kontynuowane tutaj. Nic z tego nie jest efektowne. Po prostu co miesi\u0105c usuwa troch\u0119 operacyjnego tarcia.<\/p>\n\n\n<h2 id=\"h-how-do-you-install-node-js-on-a-vps\" class=\"wp-block-heading\">Jak Zainstalowa\u0107 Node.js na VPS?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Masz dwie realistyczne \u015bcie\u017cki instalacji. Wybierz w zale\u017cno\u015bci od tego, czy serwer uruchamia jedn\u0105 aplikacj\u0119 Node czy kilka.<\/p>\n\n\n<h3 id=\"h-nodesource-for-a-single-app-server\" class=\"wp-block-heading\">NodeSource Dla Serwera Jednoaplikacyjnego<\/h3>\n\n\n<p class=\"wp-block-paragraph\">To jest najprostsza \u015bcie\u017cka produkcyjna. Jeden skrypt instalacyjny i jedno polecenie <strong><code>apt install<\/code><\/strong> instaluj\u0105 aktualn\u0105 lini\u0119 LTS Node 24 jako pakiet systemowy, a przysz\u0142e aktualizacje bezpiecze\u0144stwa s\u0105 dostarczane poprzez normalne uaktualnienia pakiet\u00f3w.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Na Ubuntu lub Debianie:<\/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\">Sprawd\u017a instalacj\u0119:<\/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=\"Komendy terminala wy\u015bwietlaj\u0105ce wersj\u0119 Node.js 24.14.0 i wersj\u0119 npm 11.9.0 zainstalowane na 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\">Powiniene\u015b zobaczy\u0107 wersj\u0119 Node 24.x.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Instrukcje dla dystrybucji z rodziny RHEL (yum\/dnf) znajduj\u0105 si\u0119 w oficjalnym repozytorium dystrybucji NodeSource.<\/p>\n\n\n<h3 id=\"h-nvm-for-per-project-version-switching\" class=\"wp-block-heading\">nvm do Zmiany Wersji dla Poszczeg\u00f3lnych Projekt\u00f3w<\/h3>\n\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/github.com\/nvm-sh\/nvm\">nvm<\/a> (Node Version Manager) instaluje Node w twoim katalogu domowym i pozwala r\u00f3\u017cnym projektom korzysta\u0107 z r\u00f3\u017cnych wersji Node. Przydatne, je\u015bli hostujesz wiele aplikacji na tym samym serwerze lub nie masz dost\u0119pu sudo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Uruchom to jako u\u017cytkownik aplikacji, nie jako 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\">Od\u015bwie\u017c swoje shell, a nast\u0119pnie zainstaluj 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\udc49Jedna wa\u017cna zasada: <\/strong>Nie u\u017cywaj <code>sudo 'npm install -g'<\/code> dla zale\u017cno\u015bci aplikacji.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Instalacje globalne s\u0105 zazwyczaj zarezerwowane dla narz\u0119dzi CLI na poziomie maszyny takich jak pm2, typescript czy nodemon. Zale\u017cno\u015bci Twojej aplikacji powinny znajdowa\u0107 si\u0119 w package.json i powinny by\u0107 instalowane z katalogu projektu przy u\u017cyciu 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>Jedna wersja Node na serwer<\/td><td>Wiele wersji Node na serwer<\/td><\/tr><tr><td>Zainstalowany na ca\u0142ym systemie, dzia\u0142a jako dowolny u\u017cytkownik<\/td><td>Zainstalowany dla pojedynczego u\u017cytkownika<\/td><\/tr><tr><td>Automatyczne aktualizacje z <code>\u2018apt\u2019<\/code><\/td><td>Zarz\u0105dzane r\u0119cznie<\/td><\/tr><tr><td>Wymaga <code>sudo<\/code><\/td><td>Nie wymaga <code>sudo<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli nie jeste\u015b pewien, zacznij od NodeSource. Wi\u0119kszo\u015b\u0107 serwer\u00f3w produkcyjnych o jednym przeznaczeniu nie wymaga prze\u0142\u0105czania wersji Node dla ka\u017cdego projektu.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49<strong>U\u017cytkownicy DreamHost VPS zarz\u0105dzanego samodzielnie: <\/strong>Aplikacja Node dost\u0119pna podczas konfiguracji jest dostarczana z Node 22 LTS \u2014 obs\u0142ugiwana jest do kwietnia 2027. Aby uruchomi\u0107 Node 24, u\u017cyj krok\u00f3w NodeSource lub nvm wymienionych powy\u017cej po konfiguracji.<\/p>\n\n\n<h2 id=\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\" class=\"wp-block-heading\">Czy Powiniene\u015b U\u017cy\u0107 PM2 czy systemd, Aby Twoja Aplikacja Dzia\u0142a\u0142a?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Obie opcje s\u0105 dobre. Szczera odpowied\u017a brzmi: kt\u00f3ra jest bardziej komfortowa dla twojego zespo\u0142u. PM2 to \u015bcie\u017cka przyjazna dla programisty. systemd to \u015bcie\u017cka rodem z Unix. Oba rozwi\u0105zuj\u0105 te same trzy problemy: restart po awarii, uruchomienie przy starcie systemu i \u0142agodne zamkni\u0119cie przy \u2018SIGTERM\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli zaczynasz od nowa, oto jak wybra\u0107:<\/p>\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>Czas konfiguracji<\/td><td>3 minuty<\/td><td>10 minut<\/td><\/tr><tr><td>Tryb klastra (wielordzeniowy)<\/td><td>Z wbudowanym<\/td><td>Brak wbudowanego (uruchom N jednostek)<\/td><\/tr><tr><td>Rotacja log\u00f3w<\/td><td>Modu\u0142: <code>\u2018pm2-logrotate\u2019<\/code><\/td><td>Wbudowane przez <code>\u2018journalctl\u2019<\/code><\/td><\/tr><tr><td>Prze\u0142adowanie bez przestoj\u00f3w<\/td><td><code>\u2018pm2 reload\u2019<\/code><\/td><td>Zazwyczaj obs\u0142ugiwane r\u0119cznie przez restarty rolowane lub wiele jednostek<\/td><\/tr><tr><td>Obci\u0105\u017cenie pami\u0119ci (demon)<\/td><td>Ma\u0142e obci\u0105\u017cenie demona<\/td><td>Brak (brak dodatkowego demona)<\/td><\/tr><tr><td>Najlepsze dla<\/td><td>Pojedyncza skrzynka, JS-shop, szybka iteracja<\/td><td>Wieloaplikacyjne skrzynki, komfort zespo\u0142u operacyjnego<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/pm2.keymetrics.io\/docs\/usage\/quick-start\/\">Szybki start PM2<\/a> jest dok\u0142adnie tym, czym sugeruje nazwa &#8211; szybki:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>npm install -g pm2\npm2 start app.js --name api\npm2 startup    # wy\u015bwietla polecenie uruchamiania systemd\npm2 save       # zapisuje aktualn\u0105 list\u0119 proces\u00f3w<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">PM2 staje si\u0119 jedynym, z kt\u00f3rym rozmawiasz: &#8216;<code>pm2 logs<\/code>&#8216;, &#8216;<code>pm2 reload api<\/code>&#8216;, &#8216;<code>pm2 monit<\/code>&#8216;.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Warto r\u00f3wnie\u017c wiedzie\u0107:<\/strong> \u2018<code>pm2 startup<\/code>\u2019 tworzy jednostk\u0119 systemd, wi\u0119c konfiguracja PM2 <em>faktycznie<\/em> u\u017cywa systemd pod spodem.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Minimalna jednostka systemd do bezpo\u015bredniego zarz\u0105dzania Node w \u2018\/etc\/systemd\/system\/api.service\u2019:<\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Unit]<br>Description=M\u00f3j API Node<br>After=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>Nast\u0119pnie \u2018<code>systemctl enable --now api<\/code>.\u2019 Dzienniki znajduj\u0105 si\u0119 w \u2018<code>journalctl -u api -f<\/code>.\u2019<\/p>\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli ju\u017c u\u017cywasz PM2 i wszystko dzia\u0142a, nie przechod\u017a na systemd tylko dlatego, \u017ce kto\u015b na Hacker News tak powiedzia\u0142. Pami\u0119\u0107 demona PM2 nie jest powodem, dla kt\u00f3rego mia\u0142by\u015b od niego odej\u015b\u0107.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Migruj, gdy masz prawdziwy pow\u00f3d, na przyk\u0142ad uruchamianie p\u00f3\u0142 tuzina proces\u00f3w Node, gdzie liczy si\u0119 ka\u017cdy megabajt, lub przenoszenie do \u015brodowiska operacyjnego, gdzie ka\u017cda inna us\u0142uga to jednostka systemd, a PM2 wyr\u00f3\u017cnia si\u0119 jako nietypowa.<\/p>\n\n\n<h2 id=\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\" class=\"wp-block-heading\">Jak Umie\u015bci\u0107 NGINX (lub Caddy) Przed Twoj\u0105 Aplikacj\u0105 Node?<\/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 dzia\u0142a jako odwrotny serwer proxy mi\u0119dzy zapytaniami klienta a backendem aplikacji Node.js.\" 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\">Chcesz mie\u0107 reverse proxy przed Node z pi\u0119ciu powod\u00f3w: zako\u0144czenie HTTPS, kompresja gzip\/brotli, obs\u0142uga statycznych zasob\u00f3w, uruchamianie wielu aplikacji na tym samym serwerze oraz \u0142atwiejsze ograniczanie szybko\u015bci. Node <em>mo\u017ce<\/em> wykona\u0107 wszystkie te czynno\u015bci. NGINX i Caddy robi\u0105 to lepiej, i nie obci\u0105\u017caj\u0105 twojej p\u0119tli zdarze\u0144, gdy co\u015b zaczyna dzia\u0142a\u0107 nieprawid\u0142owo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Wybierz NGINX, je\u015bli kto\u015b w twoim zespole ju\u017c go zna. Wybierz Caddy, je\u015bli chcesz <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/ultimate-guide-ssl-tls\/\">HTTPS<\/a> w trzech liniach konfiguracji i nie przeszkadza ci mniejszy ekosystem zaawansowanych konfiguracji.<\/p>\n\n\n<h3 id=\"h-minimal-nginx-config\" class=\"wp-block-heading\">Minimalna Konfiguracja NGINX<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Umie\u015b\u0107 ten blok proxy w <strong>\/etc\/nginx\/sites-available\/api<\/strong>, utw\u00f3rz symlink do <strong><code>sites-enabled<\/code><\/strong>, a nast\u0119pnie <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\">Nag\u0142\u00f3wki \u2018Upgrade\u2019 i \u2018Connection\u2019 to linie obs\u0142uguj\u0105ce WebSocket. <a target=\"_blank\" href=\"https:\/\/nginx.org\/en\/docs\/http\/websocket.html\">W\u0142asna dokumentacja NGINX wskazuje<\/a>, \u017ce Upgrade jest nag\u0142\u00f3wkiem hop-by-hop, wi\u0119c wymaga wyra\u017anej obs\u0142ugi podczas przekazywania ruchu WebSocket.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Zostaw je, je\u015bli twoja aplikacja u\u017cywa teraz WebSockets, lub mo\u017ce u\u017cywa\u0107 ich p\u00f3\u017aniej. Socket.IO, subskrypcje GraphQL przez WebSockets i zaskakuj\u0105ca liczba \u201ezwyk\u0142ych\u201d funkcji w czasie rzeczywistym zale\u017cy od tego ulepszenia u\u015bcisku d\u0142oni.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Najcz\u0119stszym b\u0142\u0119dem produkcyjnym, kt\u00f3ry widz\u0119 w konfiguracjach Node, jest serwer Socket.IO za <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216431827-Nginx-overview\">NGINX<\/a> bez tych dw\u00f3ch linii. Po\u0142\u0105czenia zawodz\u0105 sporadycznie, programi\u015bci obwiniaj\u0105 Socket.IO, a rzeczywistym problemem jest zazwyczaj konfiguracja proxy.<\/p>\n\n\n<h3 id=\"h-minimal-caddyfile\" class=\"wp-block-heading\">Minimalny Caddyfile<\/h3>\n\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/quick-starts\/reverse-proxy\">Szybki start reverse proxy Caddy<\/a> wersja tej samej rzeczy:<\/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\">To ca\u0142y plik. Dop\u00f3ki domena wskazuje na serwer i porty 80\/443 s\u0105 dost\u0119pne, Caddy automatycznie przydziela i odnawia HTTPS. Dokumentacja Caddy m\u00f3wi, \u017ce <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/automatic-https\">automatyczne przydzielanie HTTPS<\/a> zapewnia certyfikaty TLS dla stron i utrzymuje je w odnowionym stanie; szybki start serwera proxy r\u00f3wnie\u017c zauwa\u017ca, \u017ce HTTPS jest automatyczny, gdy Caddy zna nazw\u0119 hosta.<\/p>\n\n\n<h3 id=\"h-bind-node-to-localhost-not-0-0-0-0\" class=\"wp-block-heading\">Przypisz W\u0119ze\u0142 do localhost, a Nie do 0.0.0.0<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Niezale\u017cnie od wybranego proxy, skonfiguruj swoj\u0105 aplikacj\u0119 Node tak, aby nas\u0142uchiwa\u0142a na 127.0.0.1:3000, a nie na 0.0.0.0:3000. Jedynym elementem, kt\u00f3ry powinien by\u0107 wystawiony na publiczny internet w serwerze Node, jest proxy. Po\u0142\u0105cz to z UFW, popularnym frontendem firewalla w Ubuntu, aby zablokowa\u0107 wszystko opr\u00f3cz port\u00f3w 22, 80 i 443.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>ufw default deny incoming\nufw allow 22\/tcp\nufw allow 80\/tcp\nufw allow 443\/tcp\nufw enable<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli SSH dzia\u0142a na niestandardowym porcie, zezw\u00f3l na ten port przed w\u0142\u0105czeniem UFW.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Przypisz do localhosta od pierwszego dnia. Spotkanie, na kt\u00f3rym kto\u015b przyznaje \u201eaplikacja by\u0142a nara\u017cona, poniewa\u017c Node przypisa\u0142 si\u0119 do 0.0.0.0\u201d, to nie jest spotkanie, na kt\u00f3rym chcesz by\u0107.<\/p>\n\n\n<h2 id=\"h-how-do-you-set-up-https-for-your-node-js-app\" class=\"wp-block-heading\">Jak Ustawi\u0107 HTTPS dla Twojej Aplikacji Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Korzystaj z <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216539558-Let-s-Encrypt-SSL-certificate-overview\">Let&#8217;s Encrypt<\/a>. Jest to darmowe, zautomatyzowane i zaufane przez ka\u017cd\u0105 przegl\u0105dark\u0119. Istniej\u0105 dwie \u015bcie\u017cki, w zale\u017cno\u015bci od wybranego proxy.<\/p>\n\n\n<h3 id=\"h-nginx-certbot\" class=\"wp-block-heading\">NGINX + Certbot<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Skieruj rekord A na adres IP swojego VPS i poczekaj, a\u017c DNS si\u0119 zaktualizuje.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Zainstaluj 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\">Uruchom:<\/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 aktualizuje twoj\u0105 konfiguracj\u0119 NGINX i automatycznie prze\u0142adowuje serwer.<\/p>\n\n\n<p class=\"wp-block-paragraph\">W nowoczesnych wersjach Ubuntu, odnowienie certyfikatu jest obs\u0142ugiwane automatycznie przez timer systemd zainstalowany przez pakiet Certbot.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Otw\u00f3rz <strong>https:\/\/api.example.com<\/strong> i potwierd\u017a ikon\u0119 k\u0142\u00f3dki.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/certbot.eff.org\/instructions?ws=nginx&amp;os=snap\">Oficjalna dokumentacja Certbot<\/a> r\u00f3wnie\u017c omawia \u015bcie\u017ck\u0119 instalacji opart\u0105 na snap, je\u015bli pakiet twojej dystrybucji jest przestarza\u0142y.<\/p>\n\n\n<h3 id=\"h-caddy\" class=\"wp-block-heading\">Caddy<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Dodaj domen\u0119 do Caddyfile (przyk\u0142ad powy\u017cej ju\u017c to uwzgl\u0119dnia), a nast\u0119pnie zrestartuj Caddy. O ile domena rozpoznaje si\u0119 poprawnie i porty 80\/443 s\u0105 dost\u0119pne, certyfikat zostanie automatycznie przypisany przy pierwszym uruchomieniu. Nie ma Certbota.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Nie ko\u0144cz TLS w samym Node dla produkcji.<\/strong><\/p>\n\n\n<p class=\"wp-block-paragraph\">Modu\u0142 https w Node dzia\u0142a doskonale, ale reverse proxy takie jak NGINX i Caddy s\u0105 stworzone specjalnie do zako\u0144czenia TLS. Oferuj\u0105 one OCSP stapling, nowoczesne domy\u015blne szyfry, automatyczne odnawianie certyfikat\u00f3w, wsparcie dla HTTP\/2, a w przypadku Caddy \u2014 wsparcie dla HTTP\/3 od razu po wyj\u0119ciu z pude\u0142ka.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Czy m\u00f3g\u0142by\u015b obs\u0142u\u017cy\u0107 wszystko bezpo\u015brednio w Node? Oczywi\u015bcie. Po prostu odbudowywa\u0142by\u015b infrastruktur\u0119, kt\u00f3r\u0105 Tw\u00f3j proxy ju\u017c doskonale rozwi\u0105zuje.<\/p>\n\n\n<h2 id=\"h-what-does-a-production-ready-node-js-setup-actually-look-like\" class=\"wp-block-heading\">Jak Wygl\u0105da Gotowe Do Produkcji \u015arodowisko Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Osiem rzeczy gryzie ludzi w produkcji. Wi\u0119kszo\u015b\u0107 z nich nie znajduje si\u0119 w instrukcjach instalacyjnych, poniewa\u017c nie pasuj\u0105 do schematu &#8220;zainstaluj Node, uruchom aplikacj\u0119&#8221;. To r\u00f3\u017cnica mi\u0119dzy aplikacj\u0105, kt\u00f3ra przetrwa drugi miesi\u0105c, a tak\u0105, kt\u00f3ra tego nie zrobi.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NODE_ENV=production:<\/strong> Najcz\u0119\u015bciej pomijany krok. W wielu frameworkach i bibliotekach Node, dezaktywuje on zachowania dost\u0119pne tylko w trybie deweloperskim i aktywuje optymalizacje produkcyjne. Na przyk\u0142ad, Express keszuje skompilowane szablony widok\u00f3w i zwraca bardziej zwi\u0119z\u0142e b\u0142\u0119dy w produkcji \u2014 jego w\u0142asna dokumentacja podaje nawet do 3-krotn\u0105 popraw\u0119 wydajno\u015bci. Ustaw zmienn\u0105 \u015brodowiskow\u0105 wsz\u0119dzie.<\/li>\n\n\n\n<li><strong>Graceful shutdown:<\/strong> Kiedy tw\u00f3j VPS uruchamia si\u0119 ponownie lub PM2 wysy\u0142a \u2018SIGTERM\u2019, twoja aplikacja ma kilka sekund na obs\u0142u\u017cenie bie\u017c\u0105cych \u017c\u0105da\u0144, zamkni\u0119cie po\u0142\u0105cze\u0144 z baz\u0105 danych i czyste zako\u0144czenie. Skonfiguruj obs\u0142ug\u0119 \u2018process.on(&#8216;SIGTERM&#8217;, &#8230;)\u2019. Domy\u015blne czasowanie zako\u0144czenia przez PM2 zale\u017cy od konfiguracji i \u015brodowiska, wi\u0119c nie zak\u0142adaj, \u017ce zawsze b\u0119dziesz mia\u0142 du\u017co czasu na sprz\u0105tanie.&nbsp;<\/li>\n\n\n\n<li><strong>Rotacja log\u00f3w:<\/strong> Modu\u0142 \u2018pm2-logrotate\u2019 od PM2 zajmuje si\u0119 tym dla PM2. Dziennik systemowy systemd zajmuje si\u0119 tym dla bezpo\u015brednich jednostek systemd. Bez rotacji, twoje logi zape\u0142niaj\u0105 dysk w jednej czwartej oczekiwanego czasu.<\/li>\n\n\n\n<li><strong>Dyscyplina .env:<\/strong> Nigdy nie zapisuj sekret\u00f3w, nigdy ich nie loguj. U\u017cyj \u2018dotenv\u2019 dla lokalnego dev. W produkcji, ustaw zmienne \u015brodowiskowe przez jednostk\u0119 systemd \u2018Environment=\u2019 lub plik ekosystemu PM2. Dzie\u0144, w kt\u00f3rym przypadkowo zrobisz \u2018console.log(process.env)\u2019 to dzie\u0144, w kt\u00f3rym musisz zmieni\u0107 wszystkie dane uwierzytelniaj\u0105ce.<\/li>\n\n\n\n<li><strong>Odwr\u00f3cony proxy przed Node: <\/strong>Przypisz Node do localhost; pozw\u00f3l NGINX lub Caddy sta\u0107 przodem do publicznego internetu.<\/li>\n\n\n\n<li><strong>Firewall:<\/strong> UFW blokuje wszystko opr\u00f3cz 22, 80, 443. Przeniesienie SSH z portu 22 nie zatrzyma zdeterminowanego atakuj\u0105cego, ale znacznie zmniejsza ilo\u015b\u0107 automatycznych atak\u00f3w si\u0142owych i niechcianych log\u00f3w autoryzacyjnych.<\/li>\n\n\n\n<li><strong>Monitorowanie:<\/strong> Punkt ko\u0144cowy kontroli zdrowia, kt\u00f3ry twoje narz\u0119dzie monitoruj\u0105ce sprawdza co minut\u0119. PM2 ma wbudowane podstawy. Dla czego\u015b powa\u017cniejszego, uruchom Prometheus i Grafana, lub u\u017cyj hostowanej us\u0142ugi dost\u0119pno\u015bci jak <a target=\"_blank\" href=\"https:\/\/betterstack.com\/\">Better Stack<\/a> lub <a target=\"_blank\" href=\"https:\/\/uptimerobot.com\/\">UptimeRobot<\/a>. Chcesz wiedzie\u0107, \u017ce twoja aplikacja nie dzia\u0142a <em>zanim<\/em> klient ci o tym powie.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Przewidywany czas konserwacji dla powy\u017cszego stosu: od jednej do trzech godzin miesi\u0119cznie.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Aktualizacje Apt, okazjonalne zwi\u0119kszenia zale\u017cno\u015bci, oraz kwartalne spojrzenie na obj\u0119to\u015b\u0107 dziennik\u00f3w. To wymiana za oszcz\u0119dno\u015bci i zyski kontrolne.<\/p>\n\n\n<h2 id=\"h-when-is-a-vps-the-wrong-choice-for-node-js\" class=\"wp-block-heading\">Kiedy VPS Jest Z\u0142ym Wyborem Dla Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">VPS to z\u0142y wyb\u00f3r, gdy twoje obci\u0105\u017cenia s\u0105 stworzone do czego\u015b innego. B\u0105d\u017a szczery wobec siebie, zanim dokonasz konfiguracji.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statyczne strony i tre\u015bci SSG:<\/strong> eksport Next.js, Astro, Gatsby oraz blog Eleventy. Platformy takie jak Vercel, Netlify czy Cloudflare Pages oferuj\u0105 globalnie buforowany hosting statyczny, wdro\u017cenia oparte na Git oraz automatyczne przebudowy &#8220;od razu&#8221;. VPS jest zazwyczaj niepotrzebn\u0105 infrastruktur\u0105 dla czysto statycznych tre\u015bci.<\/li>\n\n\n\n<li><strong>Rzadkie, nap\u0119dzane zdarzeniami obci\u0105\u017cenia:<\/strong> Cloudflare Workers i AWS Lambda s\u0105 niedrogie dla webhook\u00f3w uruchamianych dziesi\u0119\u0107 razy dziennie.<\/li>\n\n\n\n<li><strong>Aplikacje w czasie rzeczywistym wymagaj\u0105ce 100 000+ r\u00f3wnoczesnych po\u0142\u0105cze\u0144:<\/strong> Jeden VPS nie skaluje si\u0119 poziomo. B\u0119dziesz potrzebowa\u0107 orkiestracji (Kubernetes, ECS, Nomad) lub zarz\u0105dzanej platformy czasu rzeczywistego takiej jak Ably czy Pusher.<\/li>\n\n\n\n<li><strong>Obci\u0105\u017cenia regulowane z wysokimi wymogami zgodno\u015bci:<\/strong> HIPAA, PCI-DSS poziom 1, FedRAMP. Zarz\u0105dzane PaaS z wbudowanymi certyfikatami zgodno\u015bci oszcz\u0119dza b\u00f3l audytu. Samodzielne hostowanie zgodno\u015bci na VPS to projekt na wiele kwarta\u0142\u00f3w, kt\u00f3rego prawdopodobnie nie chcesz.<\/li>\n\n\n\n<li><strong>Brak <\/strong><a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/linux-distros\/\"><strong>obeznania z Linuxem<\/strong><\/a><strong> \u2014 i brak ch\u0119ci do zdobywania go:<\/strong> Platformy takie jak Render, Railway i DigitalOcean App Platform znajduj\u0105 si\u0119 gdzie\u015b pomi\u0119dzy surowym hostingiem VPS a w pe\u0142ni zarz\u0105dzanym PaaS. Narz\u0119dzia takie jak <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/dokploy\/\">Dokploy<\/a> dodaj\u0105 przep\u0142ywy pracy w stylu Heroku na w\u0142asnej infrastrukturze VPS. Nadal uzyskujesz wiele korzy\u015bci kosztowych i kontrolnych bez potrzeby g\u0142\u0119bokiego zapoznania si\u0119 z iptables, wn\u0119trzno\u015bciami systemd czy debugowaniem odwrotnego proxy o 1 w nocy.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Nie ma wstydu w \u017cadnej z tych odpowiedzi. Najlepsza decyzja techniczna to taka, kt\u00f3ra odpowiada Twojemu obci\u0105\u017ceniu.<\/p>\n\n\n<h2 id=\"h-picking-your-node-stack-and-moving-in\" class=\"wp-block-heading\">Wyb\u00f3r Twojego Stosu Node i Przeprowadzka<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Otw\u00f3rz jeszcze raz t\u0119 faktur\u0119 za hosting.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Za chwil\u0119 zast\u0105pisz znaczn\u0105 jego cz\u0119\u015b\u0107 jednym rachunkiem VPS.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Stos:<\/strong> Ubuntu 24.04 LTS, Node 24, PM2 (lub systemd), NGINX (lub Caddy), Let&#8217;s Encrypt przez Certbot (lub wbudowane w Caddy).<\/p>\n\n\n<p class=\"wp-block-paragraph\">Uruchom najmniejszy plan VPS, kt\u00f3ry spe\u0142nia wymagania pami\u0119ci RAM, kt\u00f3re okre\u015bli\u0142e\u015b, zainstaluj Node, uruchom swoj\u0105 aplikacj\u0119 na \u2018127.0.0.1\u2019, skieruj na ni\u0105 NGINX i zmie\u0144 swoje DNS.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli aplikacja przetrwa wdro\u017cenie, restart i nocne dzia\u0142anie bez problem\u00f3w, jeste\u015b ju\u017c prawie na miejscu.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Reszta to konserwacja. Godzina lub dwie miesi\u0119cznie, okazjonalne okno \u201eapt upgrade\u201d, kwartalna aktualizacja zale\u017cno\u015bci. To umowa, kt\u00f3r\u0105 zawar\u0142e\u015b, gdy zamieni\u0142e\u015b rachunek za licencj\u0119 na jednego u\u017cytkownika na rachunek rycza\u0142towy, a DreamHost\u2019s Self-Managed VPS Stack 4 to miejsce, gdzie mo\u017cesz zacz\u0105\u0107.<\/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\">Najcz\u0119\u015bciej Zadawane Pytania O Uruchamianie Node.js Na VPS<\/h2>\n\n\n<h3 id=\"h-can-i-run-node-js-on-any-vps\" class=\"wp-block-heading\">Czy mog\u0119 uruchomi\u0107 Node.js na dowolnym VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Wi\u0119kszo\u015b\u0107 nowoczesnych plan\u00f3w VPS dzia\u0142a poprawnie z Node.js. Nowoczesne plany VPS oparte na KVM z 64-bitow\u0105 dystrybucj\u0105 Linuxa s\u0105 najbezpieczniejszym domy\u015blnym wyborem dla obecnych wyda\u0144 Node.js.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Starsze plany oparte na OpenVZ czasami maj\u0105 ograniczenia kernela, kt\u00f3re uniemo\u017cliwiaj\u0105 dzia\u0142anie nowszych wersji Node. Je\u015bli wybierasz mi\u0119dzy dostawcami, zapytaj, czy korzystaj\u0105 z KVM.<\/p>\n\n\n<h3 id=\"h-how-much-ram-does-node-js-need-on-a-vps\" class=\"wp-block-heading\">Ile RAM potrzebuje Node.js na VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Minimalny serwer Express w stanie bezczynno\u015bci zu\u017cywa mniej ni\u017c 100 MB, ale realistyczna aplikacja produkcyjna z middleware, logowaniem i pul\u0105 po\u0142\u0105cze\u0144 zazwyczaj dzia\u0142a w zakresie 150-300 MB.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Realistyczne minimum dla jednej aplikacji produkcyjnej to 2 GB; idealny punkt dla stosu Node + Postgres + Redis to 4 GB. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">Samodzielnie zarz\u0105dzany stos VPS DreamHost<\/a> 4 (4 GB) radzi sobie z wi\u0119kszo\u015bci\u0105 produkcyjnych obci\u0105\u017ce\u0144 Node. Przejd\u017a do Stosu 8 (8 GB) dla aplikacji mocno opartych na SSR lub aplikacji w czasie rzeczywistym.<\/p>\n\n\n<h3 id=\"h-what-s-the-current-node-js-lts-version\" class=\"wp-block-heading\">Jaka jest obecna wersja LTS Node.js?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Obecnie aktywnym LTS jest Node.js 24.x (&#8220;Krypton&#8221;), promowany od 28 pa\u017adziernika 2025, wspierany do kwietnia 2028. Node.js 22.x (&#8220;Jod&#8221;) znajduje si\u0119 w Maintenance LTS do kwietnia 2027, je\u015bli zale\u017cno\u015b\u0107 wymusza kompatybilno\u015b\u0107 wsteczn\u0105. <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/blog\/release\/v26.0.0\">Node.js 26 zosta\u0142 uruchomiony 5 maja 2026<\/a>, jako bie\u017c\u0105cy i zostanie promowany do LTS w pa\u017adzierniku 2026.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Wi\u0119kszo\u015b\u0107 zespo\u0142\u00f3w produkcyjnych trzyma si\u0119 wyda\u0144 LTS, chyba \u017ce potrzebuj\u0105 specyficznych nowszych funkcji \u015brodowiska uruchomieniowego.<\/p>\n\n\n<h3 id=\"h-do-i-need-pm2-if-i-have-systemd\" class=\"wp-block-heading\">Czy potrzebuj\u0119 PM2, je\u015bli mam systemd?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Nie, nie potrzebujesz obu. PM2 i systemd rozwi\u0105zuj\u0105 ten sam problem: utrzymanie dzia\u0142ania twojej aplikacji Node przez awarie i restarty. Wiele zespo\u0142\u00f3w skoncentrowanych na Node wybiera PM2 ze wzgl\u0119du na wbudowane klastrowanie, zarz\u0105dzanie dziennikami i narz\u0119dzia do prze\u0142adowywania.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Zespo\u0142y, kt\u00f3re ju\u017c u\u017cywaj\u0105 jednostek systemd do wszystkiego, wybieraj\u0105 systemd.<\/p>\n\n\n<h3 id=\"h-why-put-nginx-in-front-of-node-js\" class=\"wp-block-heading\">Dlaczego postawi\u0107 NGINX przed Node.js?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">NGINX (lub Caddy) przed Node.js centralizuje terminacj\u0119 TLS, kompresj\u0119, obs\u0142ug\u0119 statycznych zasob\u00f3w oraz ograniczanie tempa w oprogramowaniu zaprojektowanym specjalnie do proxy i obs\u0142ugi sieci web.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Pozwala r\u00f3wnie\u017c na uruchamianie wielu aplikacji Node na tym samym VPS bez konflikt\u00f3w port\u00f3w. W \u015brodowisku produkcyjnym, Node nas\u0142uchuje na localhost; NGINX jest skierowany do publicznego internetu.<\/p>\n\n\n<h3 id=\"h-is-node-js-on-a-vps-cheaper-than-heroku-or-vercel\" class=\"wp-block-heading\">Czy Node.js na VPS jest ta\u0144szy ni\u017c na Heroku czy Vercel?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Tak, cz\u0119sto. 4 GB VPS zazwyczaj kosztuje od 15 do 25 dolar\u00f3w miesi\u0119cznie i mo\u017ce konsolidowa\u0107 koszty runtime aplikacji, bazy danych oraz pami\u0119ci podr\u0119cznej, kt\u00f3re na wielu platformach PaaS s\u0105 naliczane osobno.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ceny Vercel Pro s\u0105 oparte na liczbie u\u017cytkownik\u00f3w, a platformy serwerowe nadal narzucaj\u0105 limity czasu wykonania w zale\u017cno\u015bci od \u015brodowiska wykonawczego i planu.<\/p>\n\n\n<p class=\"wp-block-paragraph\">W zamian samodzielnie zajmiesz si\u0119 operacjami przez oko\u0142o jedn\u0105 do trzech godzin miesi\u0119cznie.<\/p>\n\n\n<h3 id=\"h-can-i-run-multiple-node-apps-on-one-vps\" class=\"wp-block-heading\">Czy mog\u0119 uruchomi\u0107 wiele aplikacji Node na jednym VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Tak, i jest to najcz\u0119stszy pow\u00f3d, dla kt\u00f3rego zespo\u0142y przechodz\u0105 z PaaS na VPS. Uruchom ka\u017cd\u0105 aplikacj\u0119 na w\u0142asnym wewn\u0119trznym porcie (3000, 3001, 3002) i kieruj ruch za pomoc\u0105 blok\u00f3w serwera NGINX wed\u0142ug nazwy hosta. PM2 zarz\u0105dza wszystkimi jako oddzielne procesy; systemd u\u017cywa jednego pliku jednostki na aplikacj\u0119.<\/p>\n\n\n<p class=\"wp-block-paragraph\">4 GB VPS cz\u0119sto mo\u017ce obs\u0142u\u017cy\u0107 kilka lekkich serwis\u00f3w Node wraz z niewielkim obci\u0105\u017ceniem bazy danych.<\/p>\n\n\n<h3 id=\"h-can-i-run-node-js-on-dreamhost-shared-hosting\" class=\"wp-block-heading\">Czy mog\u0119 uruchomi\u0107 Node.js na DreamHost Shared Hosting?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Nie. Node.js wymaga trwa\u0142ych proces\u00f3w, instalacji pakiet\u00f3w na poziomie Root oraz bezpo\u015bredniego wi\u0105zania port\u00f3w, czego nie oferuje Shared Hosting. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">Samodzielnie zarz\u0105dzane plany VPS DreamHosta<\/a> (Stack 4 i wy\u017csze) s\u0105 dostosowane do obci\u0105\u017ce\u0144 Node z pe\u0142nym dost\u0119pem Root, pami\u0119ci\u0105 NVMe i niemierzonymi przepustowo\u015bciami.<\/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\": \"Czy mog\u0119 uruchomi\u0107 Node.js na dowolnym VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Wi\u0119kszo\u015b\u0107 nowoczesnych plan\u00f3w VPS dobrze radzi sobie z Node.js. Wymagania to KVM (lub podobna pe\u0142na wirtualizacja) i 64-bitowe j\u0105dro Linuxa. Starsze plany oparte na OpenVZ czasami maj\u0105 ograniczenia j\u0105dra, kt\u00f3re zak\u0142\u00f3caj\u0105 dzia\u0142anie nowszych wersji Node. Je\u015bli wybierasz mi\u0119dzy dostawcami, zapytaj, czy korzystaj\u0105 z KVM.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Ile RAM potrzebuje Node.js na VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Minimalny serwer Express dzia\u0142a zupe\u0142nie poni\u017cej 100 MB, ale realistyczna aplikacja produkcyjna z po\u015brednictwem, logowaniem i pul\u0105 po\u0142\u0105cze\u0144 zwykle dzia\u0142a w zakresie 150-300 MB. Realistyczne minimum dla jednej aplikacji produkcyjnej to 2 GB; optymalne rozwi\u0105zanie dla stosu Node + Postgres + Redis to 4 GB. Self-Managed VPS Stack 4 (4 GB) od DreamHost obs\u0142uguje wi\u0119kszo\u015b\u0107 produkcyjnych obci\u0105\u017ce\u0144 Node. Przejd\u017a do Stack 8 (8 GB) dla aplikacji z intensywnym SSR lub czasu rzeczywistego.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Jaka jest obecna wersja LTS Node.js?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Obecna aktywna LTS to Node.js 24.x ('Krypton'), awansowana 28 pa\u017adziernika 2025 roku i wspierana do kwietnia 2028 roku. Node.js 22.x ('Jod') jest w utrzymaniu LTS do kwietnia 2027 roku, je\u015bli krytyczna zale\u017cno\u015b\u0107 wymusza wsteczn\u0105 kompatybilno\u015b\u0107. Node.js 26 zosta\u0142 uruchomiony 5 maja 2026 jako Current i awansuje do LTS w pa\u017adzierniku 2026 roku. Nie uruchamiaj wersji Current (non-LTS) w produkcji.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Czy potrzebuj\u0119 PM2, je\u015bli mam systemd?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Nie, nie potrzebujesz obu. PM2 i systemd rozwi\u0105zuj\u0105 ten sam problem - utrzymanie dzia\u0142ania aplikacji Node przez awarie i restarty. Wi\u0119kszo\u015b\u0107 zespo\u0142\u00f3w wybiera PM2 ze wzgl\u0119du na wygody takie jak tryb klastrowy, obr\u00f3t dziennik\u00f3w i prze\u0142adowanie bez przestoju. Zespo\u0142y, kt\u00f3re ju\u017c zarz\u0105dzaj\u0105 jednostkami systemd dla wszystkiego innego, wybieraj\u0105 systemd. U\u017cyj tego, z czym Tw\u00f3j zesp\u00f3\u0142 czuje si\u0119 komfortowo.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Dlaczego umie\u015bci\u0107 NGINX przed Node.js?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"NGINX (lub Caddy) przed Node.js obs\u0142uguje zako\u0144czenie TLS, kompresj\u0119 gzip i brotli, obs\u0142ug\u0119 statycznych zasob\u00f3w oraz ograniczanie pr\u0119dko\u015bci bardziej efektywnie ni\u017c sam Node. Pozwala r\u00f3wnie\u017c na uruchomienie wielu aplikacji Node na tym samym VPS bez konflikt\u00f3w port\u00f3w. W produkcji, Node nas\u0142uchuje na localhost; NGINX jest skierowany do publicznego internetu. Jest to standardowy wzorzec produkcji, a nie opcjonalna optymalizacja.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Czy Node.js na VPS jest ta\u0144szy ni\u017c Heroku czy Vercel?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Tak, cz\u0119sto. VPS o pojemno\u015bci 4 GB kosztuje w przedziale 15-25 dolar\u00f3w miesi\u0119cznie i zast\u0119puje podstawowy dyno Heroku plus Heroku Postgres plus stos Heroku Redis, kt\u00f3ry cz\u0119sto kosztuje 25-60 dolar\u00f3w miesi\u0119cznie. Vercel Pro zaczyna si\u0119 od 20 dolar\u00f3w za miejsce z limitami czasowymi funkcji. W zamian samodzielnie zajmujesz si\u0119 operacjami, oko\u0142o jednej do trzech godzin miesi\u0119cznej konserwacji.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Czy mog\u0119 uruchomi\u0107 wiele aplikacji Node na jednym VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Tak, i jest to najcz\u0119stszy pow\u00f3d, dla kt\u00f3rego zespo\u0142y przechodz\u0105 z PaaS na VPS. Uruchamiaj ka\u017cd\u0105 aplikacj\u0119 na w\u0142asnym wewn\u0119trznym porcie (3000, 3001, 3002) i kieruj ruch za pomoc\u0105 blok\u00f3w serwera NGINX na podstawie nazwy hosta. PM2 zarz\u0105dza wszystkimi jako oddzielne procesy; systemd u\u017cy\u0142by jednego pliku jednostki na aplikacj\u0119. VPS o pojemno\u015bci 4 GB komfortowo obs\u0142uguje trzy lub cztery ma\u0142e us\u0142ugi Node plus baz\u0119 danych.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Czy mog\u0119 uruchomi\u0107 Node.js na wsp\u00f3lnym hostingu DreamHost?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Nie. Node.js wymaga trwa\u0142ych proces\u00f3w, instalacji pakiet\u00f3w na poziomie root oraz bezpo\u015bredniego wi\u0105zania port\u00f3w, czego wsp\u00f3lny hosting nie zapewnia. Plany VPS Self-Managed od DreamHost (Stack 4 i wy\u017csze) pasuj\u0105 do obci\u0105\u017ce\u0144 Node z pe\u0142nym dost\u0119pem root, pami\u0119ci\u0105 NVMe i niemierzonym transferem danych.\"<br \/>\n          }<br \/>\n        }<br \/>\n      ]<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"HowTo\",<br \/>\n      \"name\": \"Jak uruchomi\u0107 Node.js na VPS\",<br \/>\n      \"step\": [<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Zainstaluj Node.js 24 LTS\",<br \/>\n          \"text\": \"Na Ubuntu lub Debianie, uruchom: curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | bash -, a nast\u0119pnie apt install -y nodejs. Zweryfikuj za pomoc\u0105 node -v. U\u017cyj nvm, je\u015bli potrzebujesz prze\u0142\u0105czania wersji na poziomie projektu.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Skonfiguruj mened\u017cera proces\u00f3w\",<br \/>\n          \"text\": \"Zainstaluj PM2 za pomoc\u0105 npm install -g pm2, a nast\u0119pnie pm2 start app.js --name api, pm2 startup, pm2 save. Lub napisz jednostk\u0119 systemd w \/etc\/systemd\/system\/api.service i uruchom systemctl enable --now api.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Zainstaluj NGINX i skonfiguruj odwrotny proxy\",<br \/>\n          \"text\": \"Zainstaluj NGINX za pomoc\u0105 apt install nginx. Utw\u00f3rz blok serwera w \/etc\/nginx\/sites-available\/api z proxy_pass http:\/\/127.0.0.1:3000 oraz nag\u0142\u00f3wkami uaktualnienia WebSocket. Utw\u00f3rz link symboliczny do sites-enabled i prze\u0142aduj.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Powi\u0105\u017c Node z localhost i w\u0142\u0105cz zapor\u0119 ogniow\u0105\",<br \/>\n          \"text\": \"Skonfiguruj swoj\u0105 aplikacj\u0119 Node, aby nas\u0142uchiwa\u0142a na 127.0.0.1:3000, a nie 0.0.0.0:3000. W\u0142\u0105cz UFW z domy\u015bln\u0105 opcj\u0105 deny incoming, a nast\u0119pnie zezw\u00f3l na porty 22, 80 i 443.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Skonfiguruj HTTPS z Let's Encrypt\",<br \/>\n          \"text\": \"Skieruj rekord A na adres IP Twojego VPS. Zainstaluj Certbot za pomoc\u0105 apt install certbot python3-certbot-nginx, a nast\u0119pnie uruchom certbot --nginx -d twojadomena.com. Certbot instaluje timer systemd, kt\u00f3ry automatycznie odnawia certyfikat.\"<br \/>\n        }<br \/>\n      ]<br \/>\n    }<br \/>\n  ]<br \/>\n}<br \/>\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: bez zimnych start\u00f3w, bez limitu czasu funkcji, bez op\u0142at za liczb\u0119 u\u017cytkownik\u00f3w. Aktualna wersja LTS, PM2 kontra systemd, NGINX z 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":"Jak Uruchomi\u0107 Node.js na VPS - DreamHost","_yoast_wpseo_opengraph-description":"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z Let's Encrypt.","_yoast_wpseo_twitter-title":"Jak Uruchomi\u0107 Node.js na VPS - DreamHost","_yoast_wpseo_twitter-description":"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z Let's Encrypt.","toc_headlines":"[[\"h-when-does-running-node-js-on-a-vps-make-sense\",\"Kiedy Uruchamianie Node.js Na VPS Ma Sens?\"],[\"h-what-vps-specs-does-node-js-actually-need\",\"Jakie Specyfikacje VPS S\u0105 Naprawd\u0119 Potrzebne Dla Node.js?\"],[\"h-which-node-js-version-should-you-install\",\"Kt\u00f3r\u0105 Wersj\u0119 Node.js Powiniene\u015b Zainstalowa\u0107?\"],[\"h-how-do-you-install-node-js-on-a-vps\",\"Jak Zainstalowa\u0107 Node.js na VPS?\"],[\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\",\"Czy Powiniene\u015b U\u017cy\u0107 PM2 czy systemd, Aby Twoja Aplikacja Dzia\u0142a\u0142a?\"],[\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\",\"Jak Umie\u015bci\u0107 NGINX (lub Caddy) Przed Twoj\u0105 Aplikacj\u0105 Node?\"],[\"h-how-do-you-set-up-https-for-your-node-js-app\",\"Jak Ustawi\u0107 HTTPS dla Twojej Aplikacji Node.js?\"],[\"h-what-does-a-production-ready-node-js-setup-actually-look-like\",\"Jak Wygl\u0105da Gotowe Do Produkcji \u015arodowisko Node.js?\"],[\"h-when-is-a-vps-the-wrong-choice-for-node-js\",\"Kiedy VPS Jest Z\u0142ym Wyborem Dla Node.js?\"],[\"h-picking-your-node-stack-and-moving-in\",\"Wyb\u00f3r Twojego Stosu Node i Przeprowadzka\"],[\"h-frequently-asked-questions-about-running-node-js-on-a-vps\",\"Najcz\u0119\u015bciej Zadawane Pytania O Uruchamianie Node.js Na VPS\"]]","hide_toc":false,"show_updated_at":"0","footnotes":""},"categories":[14444,14442,14452],"tags":[],"class_list":["post-84985","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hosting-www-pl","category-samouczki-pl","category-vps-hosting-pl"],"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>Jak Uruchomi\u0107 Node.js na VPS - DreamHost<\/title>\n<meta name=\"description\" content=\"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z 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\/pl\/jak-uruchomic-nodejs-na-vps-pl\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak Uruchomi\u0107 Node.js na VPS - DreamHost\" \/>\n<meta property=\"og:description\" content=\"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z Let&#039;s Encrypt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/\" \/>\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:26:14+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=\"Jak Uruchomi\u0107 Node.js na VPS - DreamHost\" \/>\n<meta name=\"twitter:description\" content=\"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z 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":"Jak Uruchomi\u0107 Node.js na VPS - DreamHost","description":"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z 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\/pl\/jak-uruchomic-nodejs-na-vps-pl\/","og_locale":"en_US","og_type":"article","og_title":"Jak Uruchomi\u0107 Node.js na VPS - DreamHost","og_description":"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z Let's Encrypt.","og_url":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/","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:26:14+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":"Jak Uruchomi\u0107 Node.js na VPS - DreamHost","twitter_description":"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z 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\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#article","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/"},"author":{"name":"Dallas Kashuba","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814"},"headline":"Jak Uruchomi\u0107 Node.js na VPS","datePublished":"2026-06-29T15:00:00+00:00","dateModified":"2026-07-07T15:26:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/"},"wordCount":4081,"publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","articleSection":["Hosting WWW","Samouczki","VPS Hosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/","url":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/","name":"Jak Uruchomi\u0107 Node.js na VPS - DreamHost","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#primaryimage"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#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:26:14+00:00","description":"Uruchom Node.js na VPS z pe\u0142n\u0105 kontrol\u0105: brak zimnych start\u00f3w, brak limit\u00f3w czasu funkcji, brak op\u0142at za u\u017cytkownik\u00f3w. Aktualne LTS, PM2 vs. systemd, NGINX z Let's Encrypt.","breadcrumb":{"@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#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\/pl\/jak-uruchomic-nodejs-na-vps-pl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Jak Uruchomi\u0107 Node.js na 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":"pl","translations":{"pl":84985,"it":85083,"en":83809,"pt":84966,"es":84969,"uk":84978,"ru":84999,"fr":85022,"nl":85024,"de":85053},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/84985","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\/84985\/revisions"}],"predecessor-version":[{"id":85369,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/84985\/revisions\/85369"}],"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=84985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=84985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=84985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}