Node.js — посібник для початку роботи
Node.js — середовище виконання JavaScript для серверних застосунків. Сервер постачається з встановленими Node.js 22 LTS, npm, менеджером процесів PM2, git і build-essential. Жодних майстрів налаштування й конфігурації — просто підключіться через SSH і розгортайте застосунки.
Крок 1 — перевірте, що Node.js працює
IP-адресу сервера й пароль root показано на сторінці Server Details у клієнтській панелі. Підключіться до сервера через SSH:
ssh root@your.server.ip
Перевірте, що Node.js і PM2 встановлено:
node --version
npm --version
pm2 --version
Якщо ви розмістили сервер за маршрутизатором VyOS у приватній мережі, налаштуйте переадресацію портів (22, 80 і 443), щоб застосунок був доступний з інтернету, або підключайтеся через VPN до сервера за приватною IP.
Крок 2 — розгорніть перший застосунок
Створіть простий HTTP-сервер, щоб перевірити, що все працює:
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
Відкрийте http://your.server.ip:3000 у браузері. Ви маєте побачити вітальне повідомлення. Натисніть Ctrl+C , щоб зупинити сервер.
Розгортання з Git
cd /root
git clone https://github.com/your-username/your-project.git
cd your-project
npm install
Крок 3 — налаштуйте зворотний проксі та SSL (необовʼязково)
Щоб обслуговувати застосунок на портах 80/443 із доменним імʼям, встановіть Nginx як зворотний проксі:
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
Потім увімкніть безкоштовний HTTPS від Let’s Encrypt:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com
Certbot автоматично налаштує SSL і автоматичне поновлення.
PM2 — менеджер процесів
Запуск node app.js напряму зупиняє застосунок, коли ви закриваєте термінал або якщо він аварійно завершується. PM2 тримає застосунок запущеним у фоні, перезапускає його після збою та автоматично запускає після перезавантаження сервера.
Базові команди:
# 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
Автозапуск після перезавантаження
PM2 попередньо налаштовано на запуск під час завантаження. Після запуску застосунків збережіть список процесів, щоб вони автоматично перезапускалися після перезавантаження сервера:
pm2 save
Виконуйте pm2 save знову щоразу, коли додаєте чи видаляєте застосунки.
Кластерний режим
Запускайте кілька екземплярів застосунку, щоб використовувати всі доступні ядра CPU:
# 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
Моніторинг
Перегляд використання CPU і памʼяті в реальному часі:
pm2 monit
Після встановлення
Fail2Ban — захист від підбору паролів
Сервер постачається з Fail2Ban , попередньо налаштованим для захисту SSH від підбору паролів.
| Правило | Макс. спроб | Тривалість блокування |
|---|---|---|
| SSH | 5 невдалих входів | 10 хвилин |
Корисні команди:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Якщо ви випадково заблокували себе, підключіться через VNC-консоль у клієнтській панелі й розблокуйте свою IP.
Керування сервісами
PM2 керує вашими застосунками Node.js. Nginx (якщо встановлено як зворотний проксі) працює через 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
Нативні модулі
build-essential (gcc, g++, make) встановлено заздалегідь, тож npm-пакети з нативними C/C++-доповненнями компілюються без проблем:
npm install bcrypt
npm install sharp
npm install sqlite3
Оновлення
# 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
Встановлене ПЗ
| Компонент | Версія |
|---|---|
| Ubuntu | 24.04 LTS |
| Node.js | 22.x LTS |
| npm | 10.x |
| PM2 | 6.x |
| git | 2.43 |
| build-essential | gcc 13.3 |
| Fail2Ban | 1.0.2 |
Усунення проблем
| Проблема | Рішення |
|---|---|
| Застосунок падає й не перезапускається | Використовуйте PM2 замість node app.js: pm2 start app.js |
| Застосунок не працює після перезавантаження | Виконуйте pm2 save після запуску застосунків, щоб увімкнути автозапуск |
| Порт уже використовується | Перевірте, що його займає: ss -tlnp | grep :3000 |
npm install завершується з помилками збірки |
build-essential встановлено заздалегідь. Перевірте помилку — для деяких пакетів може знадобитися apt install python3 |
| No space left on device (закінчилося місце на диску) | Перевірте диск: df -h /. Очистіть кеш npm: npm cache clean --force |
| Заблоковано Fail2Ban | Розблокуйте свою IP через VNC-консоль у клієнтській панелі |
| Забули пароль root | Скиньте його через VNC-консоль у клієнтській панелі |