Node.js App auf VPS deployen: PM2 + Nginx Reverse Proxy
Node.
Node.js Apps brauchen einen Process Manager (PM2) und Reverse Proxy (Nginx). Hier ist die komplette Setup-Anleitung.
Node.js installieren (via nvm)
nvm ist der beste Weg, Node.js zu installieren:
# nvm installieren:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Terminal neu laden:
source ~/.bashrc
# Node.js LTS installieren:
nvm install --lts
# Version checken:
node --version
npm --version
PM2 installieren
PM2 ist ein Production Process Manager für Node.js:
npm install -g pm2
# App starten:
pm2 start app.js --name myapp
# Status checken:
pm2 status
# Logs anzeigen:
pm2 logs myapp
# Auto-Start nach Reboot:
pm2 startup
pm2 save
Nginx als Reverse Proxy
Nginx leitet Port 80/443 zu deiner Node-App (z.B. Port 3000):
sudo nano /etc/nginx/sites-available/myapp
# Config:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# Aktivieren:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
SSL mit Let's Encrypt
sudo certbot --nginx -d example.com
# Certbot konfiguriert automatisch HTTPS in Nginx
Environment Variables
PM2 kann .env-Files laden:
# .env erstellen:
PORT=3000
DB_HOST=localhost
DB_PASS=secret
# PM2 mit env starten:
pm2 start app.js --name myapp --env production
Deployment mit Git
Kombination mit Git-Hooks:
# In post-receive Hook:
#!/bin/bash
cd /var/www/myapp
npm install --production
pm2 restart myapp
Fazit
PM2 + Nginx ist die Standard-Kombo für Node.js auf VPS. Auto-Restart, Logs, Clustering – alles dabei.
Wer noch keinen Server hat: Mit einem Netcup Rabatt bekommst du den ersten Monatsbeitrag geschenkt.