Приведенный ниже конфиг актуален для серверов на базе ОС Ubuntu. Конфиг полностью рабочий и протестирован на сервере.
Обновление
sudo apt-get update
sudo apt-get upgrade
Установка nginx
sudo apt install nginx
Доменное имя
Привязываем ип vps к A-записи dns домена И www.имя-сайта тоже привязать к тому же ип
Работа с Nginx конфигами
Редактировать стандартный конфиг: sudo nano /etc/nginx/sites-available/default
После редактирования
sudo nginx -t
sudo service nginx restart
Конфиг nginx
server {
	listen 80;
	listen [::]:80;
	root /var/www/html;
	index index.html;
	server_name имя-сайта  www.имя-сайта;
}
В директории /var/www/html создаем файл-заглушку index.html
<!doctype html>
<html lang="ru">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
    <title>Имя сайта</title>
  </head>
  <body>
    <h1>Сайт находится в разработке...</h1>
  </body>
</html>
Установка ssl сертификата
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx
Тест установленного сертификата
https://www.ssllabs.com/ssltest/analyze.html?d=имя-сайта https://www.ssllabs.com/ssltest/analyze.html?d=www.имя-сайтаУстановка node
setup_14 - можно заменить на нужную версию
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install nodejs
node -v
Установка pm2
npm i pm2 -g
Установка mongodb
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl enable mongod.service
sudo systemctl start mongod
Проверка
sudo systemctl status mongod
Перенос mongodb
Делаем дамп базы командой mongodump
Linux имя-пользователя/dump/имя-бд
В windows c:\Program Files\MongoDB\Tools\100\bin
Заливаем полученные файлы на сервер в директорию
/tmp/dump/имя_базы
mongorestore /tmp/dump
Загружаем приложение
С помощью git, ftp, файлового менеджера и тп /home/apps/che-cho-cha
Конфиг nginx был обновлен, проверяем
/etc/nginx/sites-available/default
Дополняем конфиг nginx для node приложения
Статика находится в директории public
Окончательный конфиг nginx для node, vue, ssr, spa, gzip приложения
/etc/nginx/sites-available/default
server {
	client_max_body_size 10m;
        gzip on;
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_min_length 0;
        gzip_types text/plain application/javascript text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype;
  	root /home/apps/имя-приложения/public;
	index index.html;
	server_name che-cho-cha.ru www.che-cho-cha.ru;
	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;
	}
    location ~ \.(css|js|svg|woff|woff2|ico|ttf|eot|jpe?g|png|txt|webmanifest|pdf)$ {
      try_files $uri $uri/ =404;
      expires 1y;
      add_header Cache-Control "public";
    }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/имя-сайта/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/имя-сайта/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
	if ($host = www.имя-сайта) {
		return 301 https://$host$request_uri;
	} # managed by Certbot
	if ($host = имя-сайта) {
		return 301 https://$host$request_uri;
	} # managed by Certbot
	listen 80;
	listen [::]:80;
	server_name имя-сайта www.имя-сайта;
        return 404; # managed by Certbot
}
После редактирования
sudo service nginx restart
Запуск приложения с помощью pm2
pm2 start app.js --name “myApp”
Чтобы после перезагрузки сервера, приложение запускалось автоматически
pm2 save
pm2 startup
Если надо удалить процесс
pm2 unstartup systemd        
              Done Is Better Than Perfect