Table of Contents

Node.js - Przewodnik na start

Node.js to środowisko uruchomieniowe JavaScript służące do tworzenia aplikacji po stronie serwera. Ten serwer zawiera preinstalowane: Node.js 22 LTS, npm, menedżera procesów PM2, git oraz pakiet build-essential. Nie wymaga żadnej dodatkowej konfiguracji – wystarczy połączyć się przez SSH i rozpocząć wdrażanie swoich aplikacji.


Krok 1 – Sprawdzenie działania Node.js

Adres IP serwera oraz hasło użytkownika root znajdziesz w sekcji Server Information na karcie Overview w panelu klienta. Połącz się z serwerem przez SSH:

ssh root@your.server.ip

Sprawdź, czy Node.js oraz PM2 są poprawnie zainstalowane:

node –version npm –version pm2 –version

Jeżeli serwer znajduje się za routerem VyOS w sieci prywatnej, skonfiguruj przekierowanie portów 22, 80 i 443, aby aplikacja była dostępna z Internetu, lub połącz się z serwerem przez VPN i korzystaj z jego prywatnego adresu IP.


Krok 2 – Wdrożenie pierwszej aplikacji

Utwórz prosty serwer HTTP, aby sprawdzić, czy wszystko działa poprawnie:

mkdir ~/myapp && cd ~/myapp cat > app.js << 'EOF’ const http = require(’http’); const server = http.createServer((req, res) => { res.writeHead(200, {’Content-Type’: 'text/plain’}); res.end(’Hello from Node.js ’ + process.version + '\n’); }); server.listen(3000, () => console.log(’Server running on port 3000′)); EOF node app.js

Otwórz w przeglądarce adres http://your.server.ip:3000. Powinien wyświetlić się komunikat powitalny. Aby zatrzymać serwer, naciśnij Ctrl+C.

Wdrożenie z repozytorium Git

cd /root git clone https://github.com/your-username/your-project.git cd your-project npm install

Krok 3 – Konfiguracja reverse proxy i SSL (opcjonalnie)

Aby udostępnić aplikację pod własną domeną na portach 80 i 443, zainstaluj Nginx jako reverse proxy:

apt update && apt install -y nginx cat > /etc/nginx/sites-available/myapp << 'EOF’ server { listen 80; server_name your-domain.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_cache_bypass $http_upgrade; } } EOF ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ rm /etc/nginx/sites-enabled/default nginx -t && systemctl reload nginx

Następnie włącz bezpłatny certyfikat SSL Let’s Encrypt:

apt install -y certbot python3-certbot-nginx certbot –nginx -d your-domain.com

Certbot automatycznie skonfiguruje HTTPS oraz odnowienia certyfikatu.


PM2 – Menedżer procesów

Uruchomienie aplikacji za pomocą node app.js powoduje jej zatrzymanie po zamknięciu terminala lub w przypadku awarii. PM2 utrzymuje aplikację działającą w tle, automatycznie uruchamia ją ponownie po błędzie oraz startuje ją po restarcie serwera.

Podstawowe polecenia:

# Uruchomienie aplikacji pm2 start app.js –name myapp # Lista uruchomionych aplikacji pm2 list # Podgląd logów pm2 logs myapp # Restart / zatrzymanie / usunięcie pm2 restart myapp pm2 stop myapp pm2 delete myapp

Automatyczne uruchamianie po restarcie serwera

PM2 jest już skonfigurowany do uruchamiania wraz ze startem systemu. Po uruchomieniu aplikacji zapisz listę procesów, aby były automatycznie przywracane po restarcie serwera:

pm2 save

Uruchamiaj polecenie pm2 save ponownie po każdym dodaniu lub usunięciu aplikacji.

Tryb klastra

Uruchom wiele instancji aplikacji, aby wykorzystać wszystkie dostępne rdzenie procesora:

# Jedna instancja na każdy rdzeń CPU pm2 start app.js -i max –name myapp # Lub określ liczbę instancji pm2 start app.js -i 2 –name myapp

Monitorowanie

Wyświetlanie w czasie rzeczywistym użycia procesora i pamięci:

pm2 monit

Po instalacji

Fail2Ban – Ochrona przed atakami brute force

Serwer jest wyposażony we wstępnie skonfigurowany Fail2Ban, który chroni usługę SSH przed atakami typu brute force.

Reguła Maks. liczba prób Czas blokady
SSH5 nieudanych logowań10 minut

Przydatne polecenia:

# Sprawdzenie zablokowanych adresów IP fail2ban-client status sshd # Odblokowanie adresu IP fail2ban-client set sshd unbanip 1.2.3.4

Jeżeli przypadkowo zablokujesz własny adres IP, połącz się z serwerem przez konsolę VNC dostępną w panelu klienta i odblokuj go.

Zarządzanie usługami

PM2 zarządza aplikacjami Node.js. Nginx (jeżeli został zainstalowany jako reverse proxy) działa jako usługa systemd:

# Demon PM2 pm2 resurrect # przywrócenie zapisanej listy procesów pm2 status # przegląd procesów # Reverse proxy Nginx systemctl status nginx systemctl reload nginx journalctl -u nginx -n 100

Moduły natywne

Pakiet build-essential (gcc, g++, make) jest już zainstalowany, dzięki czemu pakiety npm zawierające natywne rozszerzenia C/C++ kompilują się bez dodatkowej konfiguracji:

npm install bcrypt npm install sharp npm install sqlite3

Aktualizacje

# Aktualizacja Node.js apt update && apt install -y nodejs # Aktualizacja PM2 npm install -g pm2 pm2 update # Aktualizacja systemu operacyjnego apt update && apt upgrade -y

Zainstalowane oprogramowanie

Komponent Wersja
Ubuntu24.04 LTS
Node.js22.x LTS
npm10.x
PM26.x
git2.43
build-essentialgcc 13.3
Fail2Ban1.0.2

Rozwiązywanie problemów

Problem Rozwiązanie
Aplikacja ulega awarii i nie uruchamia się ponownie Uruchamiaj aplikację przez PM2 zamiast node app.js: pm2 start app.js
Aplikacja nie uruchamia się po restarcie serwera Po uruchomieniu aplikacji wykonaj polecenie pm2 save, aby włączyć automatyczne uruchamianie.
Port jest już zajęty Sprawdź, który proces korzysta z portu: ss -tlnp | grep :3000
npm install kończy się błędami kompilacji Pakiet build-essential jest już zainstalowany. Sprawdź treść błędu. Niektóre pakiety wymagają dodatkowo zainstalowanego python3.
Brak miejsca na dysku Sprawdź zajętość dysku: df -h /. Wyczyść pamięć podręczną npm: npm cache clean –force
Adres IP został zablokowany przez Fail2Ban Połącz się z serwerem przez konsolę VNC dostępną w panelu klienta i odblokuj swój adres IP.
Zapomniane hasło użytkownika root Skorzystaj z konsoli VNC dostępnej w panelu klienta, aby zresetować hasło.