Перейти к содержимому
Next.jsCloud.ru

Next.js на виртуальной машине Cloud.ru

Next.js на виртуальной машине Cloud.ru

Платформа Cloud.ru предоставляет удобные инструменты для создания и управления виртуальными машинами. В этом руководстве мы рассмотрим процесс развертывания приложения Next.js: начиная с создания сервера, установки окружения и правил безопасности, заканчивая запуском приложения через PM2 и настройкой SSL-сертификата.

1. Регистрация и создание виртуальной машины в Cloud.ru

Регистрация

  1. Перейдите на console.cloud.ru.
  2. Создайте учетную запись, указав контактные данные и способ оплаты.
  3. Подтвердите e-mail для активации аккаунта.

Создание виртуальной машины

  1. Войдите в личный кабинет Cloud.ru.
  2. Перейдите в раздел Виртуальные машиныСоздать ВМПолучить ВМ бесплатно.
  3. В качестве образа выберите Ubuntu 24.04 (рекомендуется, как самая свежая LTS-версия) или Ubuntu 22.04.
  4. Обязательно подключите внешний IP-адрес (без него доступ к приложению из интернета невозможен; в Cloud.ru внешний IP стоит около 150 ₽/мес).
  5. Задайте имя пользователя (например, ubuntu, user1 или любое другое). Этот пользователь будет использоваться для подключения к серверу по SSH и дальнейшей настройки окружения.

2. Подключение к виртуальной машине

Подключаемся по SSH:

$ssh username@your_vm_ip

Проверка: если вход выполнен успешно, вы окажетесь в терминале виртуальной машины.

3. Подготовка окружения

Обновление пакетов

$sudo apt update && sudo apt upgrade -y

Проверка: команда должна выполниться без ошибок, пакеты будут обновлены.

Установка git

$sudo apt install git -y git --version

Проверка: команда git --version должна вывести номер версии, например git version 2.34.1.

Установка Node.js через nvm

$sudo apt install curl -y curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash source ~/.bashrc nvm install --lts

Проверка:

$node -v npm -v

Должны выводиться версии Node.js и npm.

Установка Nginx

$sudo apt install nginx -y sudo systemctl enable nginx sudo systemctl start nginx

Проверка:

$systemctl status nginx

Статус должен быть active (running).

Установка PM2

$npm install -g pm2 pm2 --version

Проверка: команда pm2 --version должна вывести номер версии.

4. Подготовка папки для приложения

По умолчанию каталог /var/www принадлежит root. Чтобы можно было работать с ним без sudo, назначим владельца:

$sudo chown -R $USER:$USER /var/www

Проверка:

$ls -ld /var/www

Владельцем папки должен быть текущий пользователь.

5. Клонирование проекта с GitHub

Переходим в папку:

$cd /var/www

Клонируем репозиторий:

$git clone https://github.com/username/nextjs-app.git

Проверка: появится папка nextjs-app.

$ls /var/www

Переходим в проект и устанавливаем зависимости:

$cd nextjs-app npm install

Собираем приложение:

$npm run build

Проверка: должна создаться папка .next в корне проекта.

6. Настройка Nginx для проксирования Next.js

Создаем конфигурацию:

$sudo nano /etc/nginx/sites-available/nextjs_app.conf

Пример файла:

nginx
server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    access_log /var/log/nginx/nextjs_app.access.log;
    error_log  /var/log/nginx/nextjs_app.error.log;
}

Активируем конфигурацию:

$sudo ln -s /etc/nginx/sites-available/nextjs_app.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

Проверка:

$curl -I http://localhost

Должен вернуться код ответа 200 OK или 301 Moved Permanently.

7. Настройка правил безопасности в Cloud.ru

В интерфейсе Cloud.ru → Группы безопасности добавьте правила:

  • HTTP (80/TCP): разрешить всем (0.0.0.0/0)
  • HTTPS (443/TCP): разрешить всем (0.0.0.0/0)

Проверка: сайт должен открываться по IP в браузере (http://your_vm_ip).

8. Установка SSL-сертификата (Let’s Encrypt)

Установим certbot:

$sudo apt install certbot python3-certbot-nginx -y

Выпустим сертификат:

$sudo certbot --nginx -d example.com -d www.example.com

Проверка: сайт должен быть доступен по https://example.com.

Автообновление:

$systemctl list-timers | grep certbot sudo certbot renew --dry-run

Проверка: --dry-run должен завершиться без ошибок.

9. Запуск Next.js с помощью PM2

Собираем проект:

$cd /var/www/nextjs-app npm run build

Запускаем через PM2:

$pm2 start npm --name "nextjs-app" -- run start

Проверка:

$pm2 status

В статусе процесс должен быть online.

Логи:

$pm2 logs nextjs-app

Настроим автозапуск:

$pm2 startup pm2 save

Проверка: после перезагрузки сервера приложение должно стартовать автоматически.

10. Проверка работы

Откройте браузер и перейдите по адресу:

  • http://example.com (будет редирект на HTTPS),
  • https://example.com.

Проверка: должен отобразиться ваш Next.js сайт.