Jak Uruchomić Node.js na VPS

Opublikowano: przez Dallas Kashuba
Jak Uruchomić Node.js na VPS thumbnail

Heroku zlikwidowało swoją darmową wersję i podniosło minimalną opłatę. Vercel pobiera opłaty za każdego użytkownika i przerywa długotrwałe zadania. Render i Railway skalują cenę w zależności od ruchu.

Otwórz najnowszy rachunek od swojego dostawcy hostingu. Aplikacja Node, baza danych Postgres i pamięć podręczna Redis. Trzy pozycje, trzy zestawy ostrzeżeń o przekroczeniu limitu, jeden gorączkowy wątek na Slacku w dniu, gdy marketing w końcu uruchamia kampanię.

Ten rachunek to powód, dla którego wiele zespołów ponownie przygląda się VPS. Node.js sam w sobie nie zależy gdzie działa. Jedyną rzeczą, przed którą chroniło cię serverless, było odkrycie, co dzieje się po ‘npm start’.

Przyjrzyjmy się wzorcowi konfiguracji produkcyjnej dla Node.js na serwerze Linux, który kontrolujesz. Jeśli potrafisz połączyć się z serwerem przez SSH i przeczytać plik konfiguracyjny, na końcu będziesz miał stos produkcyjny, który możesz uruchamiać przez lata przy kilku godzinach konserwacji miesięcznie.

Kiedy Uruchamianie Node.js Na VPS Ma Sens?

VPS to odpowiednie miejsce dla Node.js, gdy masz proces długotrwały, stos technologiczny, który chcesz skonsolidować w jednej fakturze, lub zarządzaną wersję środowiska wykonawczego, która przerosła swoją wygodę.

Ogólnie rzecz biorąc, istnieją trzy dobre dopasowania:

  • Procesy długotrwałe: Serwery WebSocket, pracownicy kolejki, harmonogramy Cron, serwery MCP. Wszystko, co musi pozostać włączone i nasłuchiwać. Większość platform serwerowych wciąż optymalizuje krótkotrwałe wykonanie i cykle życia żądań. Proces Node na VPS po prostu siedzi.
  • Konsolidacja kosztów: Aplikacja Node, Postgres, Redis, plus mały pracownik budowlany, wszyscy mieszkają na tym samym boxie 4 GB. Jedna linia rachunku, nie cztery.
  • Aplikacje, które przerosły PaaS: Limit czasowy funkcji przy długim zadaniu generowania PDF. Cena za miejsce w zespole, który w końcu zatrudnił czwartego inżyniera. Faktura z Heroku przekraczająca 60 dolarów miesięcznie za obciążenie, które działa dobrze na VPS za 15 dolarów.

A istnieją trzy nieprawidłowe dopasowania:

  • Statyczne strony i treści SSG: Eksport Next.js, kompilacja Astro, blog Gatsby. Darmowy plan Vercel to odpowiednie narzędzie. VPS to przesada.
  • Rzadkie, sterowane zdarzeniami obciążenia: AWS Lambda lub Cloudflare Workers kosztują grosze za webhook, który uruchamia się dziesięć razy dziennie. VPS kosztuje tyle samo, niezależnie od tego, czy aplikacja jest zajęta, czy śpi.
  • Skalowane poziomo aplikacje czasu rzeczywistego: Jeśli Twój serwer WebSocket musi obsłużyć 100 000 równoczesnych połączeń, jedno VPS nie jest odpowiedzią. To klaster Kubernetes, rozproszona infrastruktura edge lub zarządzana platforma czasu rzeczywistego.

JavaScript jest najczęściej używanym językiem w Ankiecie Deweloperów Stack Overflow 2025, a Node.js pozostaje jednym z domyślnych sposobów, w jaki deweloperzy uruchamiają JavaScript na backendzie. To naprawdę dużo osób używających Node gdzieś. Ten artykuł jest dla tych, którzy byliby szczęśliwsi, mogąc uruchomić go na serwerze, którym sami zarządzają.

Obserwowałem, jak zespoły przenosiły cztery produkcyjne usługi Node z Heroku na jeden 4 GB VPS, z taką samą dostępnością, za jedną trzecią ceny, oraz z długotrwałymi WebSockets, które wreszcie działały bez obejścia.

Migracja to głównie popołudnie spędzone na 'apt install’, 'pm2 start’ i zmianie DNS.

Jakie Specyfikacje VPS Są Naprawdę Potrzebne Dla Node.js?

Node.js jest sam w sobie lekki. Minimalny serwer Express może spokojnie zużywać poniżej 100 MB pamięci RAM. Rada „Node potrzebuje tylko 1 GB”, którą wciąż można znaleźć na starszych blogach, jest technicznie prawdziwa, ale praktycznie bezużyteczna. Do czasu, gdy dodasz Postgres, Redis, dzienniki i proces wdrażania, który nie jest trzymany razem tylko nadzieją, już przekraczasz tę wartość nawet w spokojny dzień.

Rzeczywiste wymiary dla typowych obciążeń:

ObciążenieRAMvCPUPamięćNotatki
Małe API Express, brak bazy danych na serwerze2 GB1-240 GB NVMeRzeczywiste minimum dla jednej aplikacji produkcyjnej
Node API + Postgres + Redis na jednym serwerze4 GB280 GB NVMeŚrodkowy punkt; tu ląduje większość zespołów
Aplikacja z intensywnym SSR (Next.js, Nuxt, Remix)8 GB480 GB NVMeRenderowanie SSR i łańcuchy kompilacji zużywają pamięć
Aplikacja w czasie rzeczywistym/WebSocket, średnia skala8 GB480 GB NVMeKażde trwałe połączenie zużywa pamięć

Kilka szczegółów do ustalenia przed uruchomieniem:

  • Znaczenie pamięci NVMe jest większe niż surowa wielkość dysku: Współczesne aplikacje Node dotykają tysięcy małych plików podczas instalacji, budowy i uruchamiania. Wolne dyski pogarszają instalacje zależności, zimne starty i przebudowy SSR.
  • Wirtualizacja KVM, a nie OpenVZ: Starsze plany oparte na OpenVZ dzielą jądro z hostem, co może oznaczać przestarzałe wersje jądra i okazjonalne bóle głowy związane z kompatybilnością z nowszymi środowiskami uruchomieniowymi. Większość renomowanych dostawców VPS obecnie oferuje tylko KVM, ale warto to sprawdzić.
  • Przestrzeń wymiany (swap): Włącz 1-2 GB przestrzeni wymiany na mniejszych maszynach. Stos V8 Node może mocno wahać się podczas zbierania śmieci. Bez swapu, przejściowy szczyt obciążenia zabija proces. Obserwowałem, jak maszyna z 4 GB RAM została OOM podczas rutynowego wdrażania, ponieważ ktoś wyłączył swap, myśląc, że to anachronizm ery Docker.
  • Przepustowość: Większość nowoczesnych planów VPS obejmuje 1-4 TB miesięcznej przepustowości, wystarczająco na prawie wszystko, oprócz hostingu wideo. Plany VPS zarządzane samodzielnie obejmują nieograniczoną przepustowość, co jest jednym punktem mniej w arkuszu kalkulacyjnym planowania pojemności.

4 GB VPS kosztuje około 15 dolarów miesięcznie przy obecnych cenach rynkowych. To 50 centów dziennie, czyli mniej więcej jedna kawa na lotnisku co dwa tygodnie. W porównaniu do osobnego płacenia za środowiska uruchomieniowe aplikacji, zarządzane Postgres i Redis na platformie PaaS, ekonomia zmienia się zaskakująco szybko.

Którą Wersję Node.js Powinieneś Zainstalować?

Zainstaluj Node.js 24 (nazwa kodowa Krypton). To obecnie aktywna wersja LTS, promowana w październiku 2025 roku i wspierana do kwietnia 2028 roku zgodnie z oficjalnym harmonogramem wydań Node.js.

Wiele poradników nadal kieruje użytkowników do Node 22. Te przewodniki nie zostały zaktualizowane. Jeśli zaczynasz nową instalację dzisiaj, przypnij swój obraz CI i VPS do Node 24.x.

WersjaKryptonimStatusKoniec wsparcia
Node.js 26.x(brak)AktualnyZostanie LTS pod koniec 2026 roku
Node.js 24.xKryptonAktywny LTSKwiecień 2028
Node.js 22.xJodLTS w trybie utrzymaniaKwiecień 2027
Node.js 20.xŻelazoKoniec życia |Koniec wsparcia 30 kwietnia 2026. Nie używaj.

Kilka praktycznych zasad:

  • Nie używaj obecnych wydań (nie-LTS) w produkcji: Node 26 służy do testowania przyszłej kompatybilności i nowych funkcji środowiska uruchomieniowego, a nie dla aplikacji, od której zależą twoje przychody.
  • Node 22 to opcja awaryjna, jeżeli kluczowa zależność wciąż nie jest kompatybilna z Node 24: Większość ekosystemu ustabilizowała się w ciągu kilku miesięcy od promocji LTS.
  • Przypnij swoją wersję Node wszędzie: Obraz CI, Dockerfile, .nvmrc i produkcyjny VPS powinny być zgodne. „Działa na moim komputerze” szybko staje się kosztowne, gdy w grę wchodzą natywne moduły.

🤔Rozważasz Bun? Jest szybszy przy niektórych obciążeniach i naprawdę robi wrażenie, ale ekosystem jest nadal mniejszy, a okres sprawdzania w produkcji krótszy niż w przypadku Node’a. Dla większości zespołów, nudne rozwiązania wygrywają.

NodeSource, który utrzymuje repozytoria apt i yum, z których wiele zespołów produkcyjnych instaluje Node, podkreśla ulepszenia w linii 24.x, zaczynając od nowszego silnika V8. Node 24 dostarcza również już dojrzałe narzędzia takie jak wbudowany node –watch i stabilny natywny moduł testujący (node: test), które ustabilizowały się w liniach 20–22 i są kontynuowane tutaj. Nic z tego nie jest efektowne. Po prostu co miesiąc usuwa trochę operacyjnego tarcia.

Jak Zainstalować Node.js na VPS?

Masz dwie realistyczne ścieżki instalacji. Wybierz w zależności od tego, czy serwer uruchamia jedną aplikację Node czy kilka.

NodeSource Dla Serwera Jednoaplikacyjnego

To jest najprostsza ścieżka produkcyjna. Jeden skrypt instalacyjny i jedno polecenie apt install instalują aktualną linię LTS Node 24 jako pakiet systemowy, a przyszłe aktualizacje bezpieczeństwa są dostarczane poprzez normalne uaktualnienia pakietów.

Na Ubuntu lub Debianie:

curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
apt install -y nodejs

Sprawdź instalację:

node -v
npm -v
Komendy terminala wyświetlające wersję Node.js 24.14.0 i wersję npm 11.9.0 zainstalowane na DreamHost.

Powinieneś zobaczyć wersję Node 24.x.

Instrukcje dla dystrybucji z rodziny RHEL (yum/dnf) znajdują się w oficjalnym repozytorium dystrybucji NodeSource.

nvm do Zmiany Wersji dla Poszczególnych Projektów

nvm (Node Version Manager) instaluje Node w twoim katalogu domowym i pozwala różnym projektom korzystać z różnych wersji Node. Przydatne, jeśli hostujesz wiele aplikacji na tym samym serwerze lub nie masz dostępu sudo.

Uruchom to jako użytkownik aplikacji, nie jako root:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash

Odśwież swoje shell, a następnie zainstaluj Node 24:

nvm install 24
nvm use 24
nvm alias default 24

👉Jedna ważna zasada: Nie używaj sudo 'npm install -g' dla zależności aplikacji.

Instalacje globalne są zazwyczaj zarezerwowane dla narzędzi CLI na poziomie maszyny takich jak pm2, typescript czy nodemon. Zależności Twojej aplikacji powinny znajdować się w package.json i powinny być instalowane z katalogu projektu przy użyciu npm ci.

NodeSourcenvm
Jedna wersja Node na serwerWiele wersji Node na serwer
Zainstalowany na całym systemie, działa jako dowolny użytkownikZainstalowany dla pojedynczego użytkownika
Automatyczne aktualizacje z ‘apt’Zarządzane ręcznie
Wymaga sudoNie wymaga sudo

Jeśli nie jesteś pewien, zacznij od NodeSource. Większość serwerów produkcyjnych o jednym przeznaczeniu nie wymaga przełączania wersji Node dla każdego projektu.

👉Użytkownicy DreamHost VPS zarządzanego samodzielnie: Aplikacja Node dostępna podczas konfiguracji jest dostarczana z Node 22 LTS — obsługiwana jest do kwietnia 2027. Aby uruchomić Node 24, użyj kroków NodeSource lub nvm wymienionych powyżej po konfiguracji.

Czy Powinieneś Użyć PM2 czy systemd, Aby Twoja Aplikacja Działała?

Obie opcje są dobre. Szczera odpowiedź brzmi: która jest bardziej komfortowa dla twojego zespołu. PM2 to ścieżka przyjazna dla programisty. systemd to ścieżka rodem z Unix. Oba rozwiązują te same trzy problemy: restart po awarii, uruchomienie przy starcie systemu i łagodne zamknięcie przy ‘SIGTERM’.

Jeśli zaczynasz od nowa, oto jak wybrać:

PM2systemd
Czas konfiguracji3 minuty10 minut
Tryb klastra (wielordzeniowy)Z wbudowanymBrak wbudowanego (uruchom N jednostek)
Rotacja logówModuł: ‘pm2-logrotate’Wbudowane przez ‘journalctl’
Przeładowanie bez przestojów‘pm2 reload’Zazwyczaj obsługiwane ręcznie przez restarty rolowane lub wiele jednostek
Obciążenie pamięci (demon)Małe obciążenie demonaBrak (brak dodatkowego demona)
Najlepsze dlaPojedyncza skrzynka, JS-shop, szybka iteracjaWieloaplikacyjne skrzynki, komfort zespołu operacyjnego

Szybki start PM2 jest dokładnie tym, czym sugeruje nazwa – szybki:

npm install -g pm2
pm2 start app.js --name api
pm2 startup    # wyświetla polecenie uruchamiania systemd
pm2 save       # zapisuje aktualną listę procesów

PM2 staje się jedynym, z którym rozmawiasz: ’pm2 logs’, ’pm2 reload api’, ’pm2 monit’.

👉Warto również wiedzieć:pm2 startup’ tworzy jednostkę systemd, więc konfiguracja PM2 faktycznie używa systemd pod spodem.

Minimalna jednostka systemd do bezpośredniego zarządzania Node w ‘/etc/systemd/system/api.service’:

[Unit]
Description=Mój API Node
After=network.target

[Service]
Type=simple
User=app
WorkingDirectory=/var/www/api
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Następnie ‘systemctl enable --now api.’ Dzienniki znajdują się w ‘journalctl -u api -f.’

Jeśli już używasz PM2 i wszystko działa, nie przechodź na systemd tylko dlatego, że ktoś na Hacker News tak powiedział. Pamięć demona PM2 nie jest powodem, dla którego miałbyś od niego odejść.

Migruj, gdy masz prawdziwy powód, na przykład uruchamianie pół tuzina procesów Node, gdzie liczy się każdy megabajt, lub przenoszenie do środowiska operacyjnego, gdzie każda inna usługa to jednostka systemd, a PM2 wyróżnia się jako nietypowa.

Jak Umieścić NGINX (lub Caddy) Przed Twoją Aplikacją Node?

NGINX działa jako odwrotny serwer proxy między zapytaniami klienta a backendem aplikacji Node.js.

Chcesz mieć reverse proxy przed Node z pięciu powodów: zakończenie HTTPS, kompresja gzip/brotli, obsługa statycznych zasobów, uruchamianie wielu aplikacji na tym samym serwerze oraz łatwiejsze ograniczanie szybkości. Node może wykonać wszystkie te czynności. NGINX i Caddy robią to lepiej, i nie obciążają twojej pętli zdarzeń, gdy coś zaczyna działać nieprawidłowo.

Wybierz NGINX, jeśli ktoś w twoim zespole już go zna. Wybierz Caddy, jeśli chcesz HTTPS w trzech liniach konfiguracji i nie przeszkadza ci mniejszy ekosystem zaawansowanych konfiguracji.

Minimalna Konfiguracja NGINX

Umieść ten blok proxy w /etc/nginx/sites-available/api, utwórz symlink do sites-enabled, a następnie nginx -t && systemctl reload nginx.

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

Nagłówki ‘Upgrade’ i ‘Connection’ to linie obsługujące WebSocket. Własna dokumentacja NGINX wskazuje, że Upgrade jest nagłówkiem hop-by-hop, więc wymaga wyraźnej obsługi podczas przekazywania ruchu WebSocket.

Zostaw je, jeśli twoja aplikacja używa teraz WebSockets, lub może używać ich później. Socket.IO, subskrypcje GraphQL przez WebSockets i zaskakująca liczba „zwykłych” funkcji w czasie rzeczywistym zależy od tego ulepszenia uścisku dłoni.

Najczęstszym błędem produkcyjnym, który widzę w konfiguracjach Node, jest serwer Socket.IO za NGINX bez tych dwóch linii. Połączenia zawodzą sporadycznie, programiści obwiniają Socket.IO, a rzeczywistym problemem jest zazwyczaj konfiguracja proxy.

Minimalny Caddyfile

Szybki start reverse proxy Caddy wersja tej samej rzeczy:

api.example.com {
    reverse_proxy 127.0.0.1:3000
}

To cały plik. Dopóki domena wskazuje na serwer i porty 80/443 są dostępne, Caddy automatycznie przydziela i odnawia HTTPS. Dokumentacja Caddy mówi, że automatyczne przydzielanie HTTPS zapewnia certyfikaty TLS dla stron i utrzymuje je w odnowionym stanie; szybki start serwera proxy również zauważa, że HTTPS jest automatyczny, gdy Caddy zna nazwę hosta.

Przypisz Węzeł do localhost, a Nie do 0.0.0.0

Niezależnie od wybranego proxy, skonfiguruj swoją aplikację Node tak, aby nasłuchiwała na 127.0.0.1:3000, a nie na 0.0.0.0:3000. Jedynym elementem, który powinien być wystawiony na publiczny internet w serwerze Node, jest proxy. Połącz to z UFW, popularnym frontendem firewalla w Ubuntu, aby zablokować wszystko oprócz portów 22, 80 i 443.

ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Jeśli SSH działa na niestandardowym porcie, zezwól na ten port przed włączeniem UFW.

Przypisz do localhosta od pierwszego dnia. Spotkanie, na którym ktoś przyznaje „aplikacja była narażona, ponieważ Node przypisał się do 0.0.0.0”, to nie jest spotkanie, na którym chcesz być.

Jak Ustawić HTTPS dla Twojej Aplikacji Node.js?

Korzystaj z Let’s Encrypt. Jest to darmowe, zautomatyzowane i zaufane przez każdą przeglądarkę. Istnieją dwie ścieżki, w zależności od wybranego proxy.

NGINX + Certbot

Skieruj rekord A na adres IP swojego VPS i poczekaj, aż DNS się zaktualizuje.

Zainstaluj Certbot:

apt install certbot python3-certbot-nginx

Uruchom:

certbot --nginx -d api.example.com

Certbot aktualizuje twoją konfigurację NGINX i automatycznie przeładowuje serwer.

W nowoczesnych wersjach Ubuntu, odnowienie certyfikatu jest obsługiwane automatycznie przez timer systemd zainstalowany przez pakiet Certbot.

Otwórz https://api.example.com i potwierdź ikonę kłódki.

Oficjalna dokumentacja Certbot również omawia ścieżkę instalacji opartą na snap, jeśli pakiet twojej dystrybucji jest przestarzały.

Caddy

Dodaj domenę do Caddyfile (przykład powyżej już to uwzględnia), a następnie zrestartuj Caddy. O ile domena rozpoznaje się poprawnie i porty 80/443 są dostępne, certyfikat zostanie automatycznie przypisany przy pierwszym uruchomieniu. Nie ma Certbota.

Nie kończ TLS w samym Node dla produkcji.

Moduł https w Node działa doskonale, ale reverse proxy takie jak NGINX i Caddy są stworzone specjalnie do zakończenia TLS. Oferują one OCSP stapling, nowoczesne domyślne szyfry, automatyczne odnawianie certyfikatów, wsparcie dla HTTP/2, a w przypadku Caddy — wsparcie dla HTTP/3 od razu po wyjęciu z pudełka.

Czy mógłbyś obsłużyć wszystko bezpośrednio w Node? Oczywiście. Po prostu odbudowywałbyś infrastrukturę, którą Twój proxy już doskonale rozwiązuje.

Jak Wygląda Gotowe Do Produkcji Środowisko Node.js?

Osiem rzeczy gryzie ludzi w produkcji. Większość z nich nie znajduje się w instrukcjach instalacyjnych, ponieważ nie pasują do schematu „zainstaluj Node, uruchom aplikację”. To różnica między aplikacją, która przetrwa drugi miesiąc, a taką, która tego nie zrobi.

  • NODE_ENV=production: Najczęściej pomijany krok. W wielu frameworkach i bibliotekach Node, dezaktywuje on zachowania dostępne tylko w trybie deweloperskim i aktywuje optymalizacje produkcyjne. Na przykład, Express keszuje skompilowane szablony widoków i zwraca bardziej zwięzłe błędy w produkcji — jego własna dokumentacja podaje nawet do 3-krotną poprawę wydajności. Ustaw zmienną środowiskową wszędzie.
  • Graceful shutdown: Kiedy twój VPS uruchamia się ponownie lub PM2 wysyła ‘SIGTERM’, twoja aplikacja ma kilka sekund na obsłużenie bieżących żądań, zamknięcie połączeń z bazą danych i czyste zakończenie. Skonfiguruj obsługę ‘process.on(’SIGTERM’, …)’. Domyślne czasowanie zakończenia przez PM2 zależy od konfiguracji i środowiska, więc nie zakładaj, że zawsze będziesz miał dużo czasu na sprzątanie. 
  • Rotacja logów: Moduł ‘pm2-logrotate’ od PM2 zajmuje się tym dla PM2. Dziennik systemowy systemd zajmuje się tym dla bezpośrednich jednostek systemd. Bez rotacji, twoje logi zapełniają dysk w jednej czwartej oczekiwanego czasu.
  • Dyscyplina .env: Nigdy nie zapisuj sekretów, nigdy ich nie loguj. Użyj ‘dotenv’ dla lokalnego dev. W produkcji, ustaw zmienne środowiskowe przez jednostkę systemd ‘Environment=’ lub plik ekosystemu PM2. Dzień, w którym przypadkowo zrobisz ‘console.log(process.env)’ to dzień, w którym musisz zmienić wszystkie dane uwierzytelniające.
  • Odwrócony proxy przed Node: Przypisz Node do localhost; pozwól NGINX lub Caddy stać przodem do publicznego internetu.
  • Firewall: UFW blokuje wszystko oprócz 22, 80, 443. Przeniesienie SSH z portu 22 nie zatrzyma zdeterminowanego atakującego, ale znacznie zmniejsza ilość automatycznych ataków siłowych i niechcianych logów autoryzacyjnych.
  • Monitorowanie: Punkt końcowy kontroli zdrowia, który twoje narzędzie monitorujące sprawdza co minutę. PM2 ma wbudowane podstawy. Dla czegoś poważniejszego, uruchom Prometheus i Grafana, lub użyj hostowanej usługi dostępności jak Better Stack lub UptimeRobot. Chcesz wiedzieć, że twoja aplikacja nie działa zanim klient ci o tym powie.

Przewidywany czas konserwacji dla powyższego stosu: od jednej do trzech godzin miesięcznie.

Aktualizacje Apt, okazjonalne zwiększenia zależności, oraz kwartalne spojrzenie na objętość dzienników. To wymiana za oszczędności i zyski kontrolne.

Kiedy VPS Jest Złym Wyborem Dla Node.js?

VPS to zły wybór, gdy twoje obciążenia są stworzone do czegoś innego. Bądź szczery wobec siebie, zanim dokonasz konfiguracji.

  • Statyczne strony i treści SSG: eksport Next.js, Astro, Gatsby oraz blog Eleventy. Platformy takie jak Vercel, Netlify czy Cloudflare Pages oferują globalnie buforowany hosting statyczny, wdrożenia oparte na Git oraz automatyczne przebudowy „od razu”. VPS jest zazwyczaj niepotrzebną infrastrukturą dla czysto statycznych treści.
  • Rzadkie, napędzane zdarzeniami obciążenia: Cloudflare Workers i AWS Lambda są niedrogie dla webhooków uruchamianych dziesięć razy dziennie.
  • Aplikacje w czasie rzeczywistym wymagające 100 000+ równoczesnych połączeń: Jeden VPS nie skaluje się poziomo. Będziesz potrzebować orkiestracji (Kubernetes, ECS, Nomad) lub zarządzanej platformy czasu rzeczywistego takiej jak Ably czy Pusher.
  • Obciążenia regulowane z wysokimi wymogami zgodności: HIPAA, PCI-DSS poziom 1, FedRAMP. Zarządzane PaaS z wbudowanymi certyfikatami zgodności oszczędza ból audytu. Samodzielne hostowanie zgodności na VPS to projekt na wiele kwartałów, którego prawdopodobnie nie chcesz.
  • Brak obeznania z Linuxem — i brak chęci do zdobywania go: Platformy takie jak Render, Railway i DigitalOcean App Platform znajdują się gdzieś pomiędzy surowym hostingiem VPS a w pełni zarządzanym PaaS. Narzędzia takie jak Dokploy dodają przepływy pracy w stylu Heroku na własnej infrastrukturze VPS. Nadal uzyskujesz wiele korzyści kosztowych i kontrolnych bez potrzeby głębokiego zapoznania się z iptables, wnętrznościami systemd czy debugowaniem odwrotnego proxy o 1 w nocy.

Nie ma wstydu w żadnej z tych odpowiedzi. Najlepsza decyzja techniczna to taka, która odpowiada Twojemu obciążeniu.

Wybór Twojego Stosu Node i Przeprowadzka

Otwórz jeszcze raz tę fakturę za hosting.

Za chwilę zastąpisz znaczną jego część jednym rachunkiem VPS.

👉Stos: Ubuntu 24.04 LTS, Node 24, PM2 (lub systemd), NGINX (lub Caddy), Let’s Encrypt przez Certbot (lub wbudowane w Caddy).

Uruchom najmniejszy plan VPS, który spełnia wymagania pamięci RAM, które określiłeś, zainstaluj Node, uruchom swoją aplikację na ‘127.0.0.1’, skieruj na nią NGINX i zmień swoje DNS.

Jeśli aplikacja przetrwa wdrożenie, restart i nocne działanie bez problemów, jesteś już prawie na miejscu.

Reszta to konserwacja. Godzina lub dwie miesięcznie, okazjonalne okno „apt upgrade”, kwartalna aktualizacja zależności. To umowa, którą zawarłeś, gdy zamieniłeś rachunek za licencję na jednego użytkownika na rachunek ryczałtowy, a DreamHost’s Self-Managed VPS Stack 4 to miejsce, gdzie możesz zacząć.

VPS

Przejmij kontrolę nad całym swoim stackiem. Aplikacje, AI, bazy danych i więcej.

Trzymaj każde poświadczenie i każdą rozmowę na serwerze, który kontrolujesz – z wbudowaną prędkością NVMe i nielimitowanym transferem.

Zobacz plany hostingu VPS

Najczęściej Zadawane Pytania O Uruchamianie Node.js Na VPS

Czy mogę uruchomić Node.js na dowolnym VPS?

Większość nowoczesnych planów VPS działa poprawnie z Node.js. Nowoczesne plany VPS oparte na KVM z 64-bitową dystrybucją Linuxa są najbezpieczniejszym domyślnym wyborem dla obecnych wydań Node.js.

Starsze plany oparte na OpenVZ czasami mają ograniczenia kernela, które uniemożliwiają działanie nowszych wersji Node. Jeśli wybierasz między dostawcami, zapytaj, czy korzystają z KVM.

Ile RAM potrzebuje Node.js na VPS?

Minimalny serwer Express w stanie bezczynności zużywa mniej niż 100 MB, ale realistyczna aplikacja produkcyjna z middleware, logowaniem i pulą połączeń zazwyczaj działa w zakresie 150-300 MB.

Realistyczne minimum dla jednej aplikacji produkcyjnej to 2 GB; idealny punkt dla stosu Node + Postgres + Redis to 4 GB. Samodzielnie zarządzany stos VPS DreamHost 4 (4 GB) radzi sobie z większością produkcyjnych obciążeń Node. Przejdź do Stosu 8 (8 GB) dla aplikacji mocno opartych na SSR lub aplikacji w czasie rzeczywistym.

Jaka jest obecna wersja LTS Node.js?

Obecnie aktywnym LTS jest Node.js 24.x („Krypton”), promowany od 28 października 2025, wspierany do kwietnia 2028. Node.js 22.x („Jod”) znajduje się w Maintenance LTS do kwietnia 2027, jeśli zależność wymusza kompatybilność wsteczną. Node.js 26 został uruchomiony 5 maja 2026, jako bieżący i zostanie promowany do LTS w październiku 2026.

Większość zespołów produkcyjnych trzyma się wydań LTS, chyba że potrzebują specyficznych nowszych funkcji środowiska uruchomieniowego.

Czy potrzebuję PM2, jeśli mam systemd?

Nie, nie potrzebujesz obu. PM2 i systemd rozwiązują ten sam problem: utrzymanie działania twojej aplikacji Node przez awarie i restarty. Wiele zespołów skoncentrowanych na Node wybiera PM2 ze względu na wbudowane klastrowanie, zarządzanie dziennikami i narzędzia do przeładowywania.

Zespoły, które już używają jednostek systemd do wszystkiego, wybierają systemd.

Dlaczego postawić NGINX przed Node.js?

NGINX (lub Caddy) przed Node.js centralizuje terminację TLS, kompresję, obsługę statycznych zasobów oraz ograniczanie tempa w oprogramowaniu zaprojektowanym specjalnie do proxy i obsługi sieci web.

Pozwala również na uruchamianie wielu aplikacji Node na tym samym VPS bez konfliktów portów. W środowisku produkcyjnym, Node nasłuchuje na localhost; NGINX jest skierowany do publicznego internetu.

Czy Node.js na VPS jest tańszy niż na Heroku czy Vercel?

Tak, często. 4 GB VPS zazwyczaj kosztuje od 15 do 25 dolarów miesięcznie i może konsolidować koszty runtime aplikacji, bazy danych oraz pamięci podręcznej, które na wielu platformach PaaS są naliczane osobno.

Ceny Vercel Pro są oparte na liczbie użytkowników, a platformy serwerowe nadal narzucają limity czasu wykonania w zależności od środowiska wykonawczego i planu.

W zamian samodzielnie zajmiesz się operacjami przez około jedną do trzech godzin miesięcznie.

Czy mogę uruchomić wiele aplikacji Node na jednym VPS?

Tak, i jest to najczęstszy powód, dla którego zespoły przechodzą z PaaS na VPS. Uruchom każdą aplikację na własnym wewnętrznym porcie (3000, 3001, 3002) i kieruj ruch za pomocą bloków serwera NGINX według nazwy hosta. PM2 zarządza wszystkimi jako oddzielne procesy; systemd używa jednego pliku jednostki na aplikację.

4 GB VPS często może obsłużyć kilka lekkich serwisów Node wraz z niewielkim obciążeniem bazy danych.

Czy mogę uruchomić Node.js na DreamHost Shared Hosting?

Nie. Node.js wymaga trwałych procesów, instalacji pakietów na poziomie Root oraz bezpośredniego wiązania portów, czego nie oferuje Shared Hosting. Samodzielnie zarządzane plany VPS DreamHosta (Stack 4 i wyższe) są dostosowane do obciążeń Node z pełnym dostępem Root, pamięcią NVMe i niemierzonymi przepustowościami.