Deployment (PM2)

Build, PM2 process config, Nginx reverse proxy, and SSL.

Build & Start

npm run build
npm start

PM2 Configuration

Create ecosystem.config.js:

module.exports = {
  apps: [{
    name: "pvd-library",
    script: "node_modules/.bin/next",
    args: "start",
    cwd: "/home/library/pvd-library",
    instances: 1,
    autorestart: true,
    env: {
      NODE_ENV: "production",
      PORT: 3000,
    },
  }],
};

Start Service

pm2 start ecosystem.config.js
pm2 save
pm2 startup

Useful Commands

CommandPurpose
pm2 statusShow all processes
pm2 logs pvd-libraryStream live logs
pm2 restart pvd-libraryRestart after update
pm2 monitCPU/memory monitor

Nginx Reverse Proxy

server {
    listen 80;
    server_name yourdomain.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;
    }
}

SSL Certificate (Certbot)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com