Table of Contents

Node.js - pradžios vadovas

Node.js yra JavaScript vykdymo aplinka serverio programoms kurti. Šiame serveryje iš anksto įdiegti Node.js 22 LTS, npm, PM2 procesų tvarkyklė, git ir build-essential. Jokio sąrankos vedlio, jokios konfigūracijos – tiesiog prisijunkite per SSH ir pradėkite diegti programas.


1 žingsnis – Patikrinkite, ar Node.js veikia

Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento skydelio puslapyje Server Details. Prisijunkite prie serverio per SSH:

ssh root@your.server.ip

Patikrinkite, ar įdiegti Node.js ir PM2:

node --version
npm --version
pm2 --version

Jei serverį patalpinote už VyOS maršrutizatoriaus privačiame tinkle, arba sukonfigūruokite prievadų peradresavimą (22, 80 ir 443), kad programa būtų pasiekiama iš interneto, arba prisijunkite per VPN ir pasiekite serverį privačiu IP.


2 žingsnis – Pirmosios programos diegimas

Sukurkite paprastą HTTP serverį ir patikrinkite, ar viskas veikia:

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

Atidarykite http://your.server.ip:3000 naršyklėje. Turėtumėte matyti pasisveikinimo pranešimą. Paspauskite Ctrl+C , kad sustabdytumėte serverį.

Diegimas iš Git

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

3 žingsnis – Atvirkštinio tarpinio serverio ir SSL nustatymas (neprivaloma)

Norėdami programą pateikti per 80/443 prievadą su domeno vardu, įdiekite Nginx kaip atvirkštinį tarpinį serverį:

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

Tada įjunkite nemokamą HTTPS su Let’s Encrypt:

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

Certbot automatiškai sukonfigūruos SSL ir automatinį atnaujinimą.


PM2 – procesų tvarkyklė

Paleidus node app.js tiesiogiai, programa sustoja uždarius terminalą arba jai sugedus. PM2 palaiko programos veikimą fone, ją paleidžia iš naujo po gedimo ir automatiškai paleidžia po serverio perkrovimo.

Pagrindinės komandos:

# Start your application
pm2 start app.js --name myapp

# View running applications
pm2 list

# View logs
pm2 logs myapp

# Restart / stop / remove
pm2 restart myapp
pm2 stop myapp
pm2 delete myapp

Automatinis paleidimas po perkrovimo

PM2 iš anksto sukonfigūruotas pasileisti paleidžiant sistemą. Paleidę programas, išsaugokite procesų sąrašą, kad jie automatiškai atsinaujintų po serverio perkrovimo:

pm2 save

Paleiskite pm2 save dar kartą kaskart pridėję ar pašalinę programas.

Cluster režimas

Paleiskite kelis programos egzempliorius, kad išnaudotumėte visus turimus CPU branduolius:

# Start with one instance per CPU core
pm2 start app.js -i max --name myapp

# Or specify the number of instances
pm2 start app.js -i 2 --name myapp

Stebėjimas

CPU ir atminties naudojimo peržiūra realiuoju laiku:

pm2 monit

Po įdiegimo

Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų

Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH nuo slaptažodžių spėjimo atakų.

Taisyklė Maks. bandymų Blokavimo trukmė
SSH5 nesėkmingi prisijungimai10 minučių

Naudingos komandos:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.

Paslaugų valdymas

PM2 valdo jūsų Node.js programas. Nginx (jei įdiegtas kaip atvirkštinis tarpinis serveris) veikia per systemd:

# PM2 daemon
pm2 resurrect              # restore saved process list
pm2 status                 # overview

# Nginx reverse proxy
systemctl status nginx
systemctl reload nginx
journalctl -u nginx -n 100

Vietiniai moduliai

build-essential (gcc, g++, make) įdiegtas iš anksto, todėl npm paketai su vietiniais C/C++ priedais kompiliuojami be problemų:

npm install bcrypt
npm install sharp
npm install sqlite3

Atnaujinimai

# Update Node.js
apt update && apt install -y nodejs

# Update PM2
npm install -g pm2
pm2 update

# Update OS packages
apt update && apt upgrade -y

Įdiegta programinė įranga

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

Trikčių šalinimas

Problema Sprendimas
Programa sugenda ir nepasileidžia iš naujo Naudokite PM2 vietoj node app.js: pm2 start app.js
Programa neveikia po perkrovimo Paleiskite pm2 save paleidę programas, kad įjungtumėte automatinį paleidimą
Prievadas jau naudojamas Patikrinkite, kas jį naudoja: ss -tlnp | grep :3000
npm install nepavyksta dėl kompiliavimo klaidų build-essential įdiegtas iš anksto. Patikrinkite klaidą – kai kuriems paketams gali prireikti apt install python3
No space left on device Patikrinkite diską: df -h /. Išvalykite npm podėlį: npm cache clean --force
Užblokavo Fail2Ban Atblokuokite savo IP per VNC konsolę kliento skydelyje
Pamiršote root slaptažodį Atkurkite jį per VNC konsolę kliento skydelyje