Установка NodeBB · 8 min read · Oct 19, 2025

Как установить форум NodeBB с Nginx и SSL Let's Encrypt на Ubuntu 20.04 LTS

NodeBB — это современное программное обеспечение для форумов, основанное на Node.js, которое использует MongoDB/Redis в качестве платформ баз данных. Оно использует веб-сокеты для мгновенного взаимодействия и уведомлений в реальном времени.

В этом руководстве мы научимся устанавливать форум NodeBB на сервере на базе Ubuntu 20.04.

Предварительные требования

  • Сервер на базе Ubuntu 20.04 с пользователем, не являющимся root, и правами sudo.
  • Минимум 2 ГБ ОЗУ. Если у вашего сервера только 1 ГБ ОЗУ, лучше включить раздел подкачки.
  • Убедитесь, что все обновлено. shell $ sudo apt update && sudo apt upgrade
  • Несколько необходимых пакетов. Некоторые из них уже могут быть на вашем сервере. shell $ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release

Шаг 1 - Настройка брандмауэра

Первый шаг — настроить брандмауэр. Ubuntu по умолчанию поставляется с ufw (Uncomplicated Firewall).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы должны получить следующий вывод.

Status: inactive

Разрешите SSH-порт, чтобы брандмауэр не разорвал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Разрешите порт 27017 для сервера MongoDB и порт 4567 для работы форума NodeBB. Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443

Включите брандмауэр.

$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы

Проверьте статус брандмауэра снова.

$ sudo ufw status

Вы должны увидеть аналогичный вывод.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
27017                      ALLOW       Anywhere
4567                       ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
27017 (v6)                 ALLOW       Anywhere (v6)
4567 (v6)                  ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Шаг 2 - Установка Node.js

Мы установим LTS-версию Node.js. Выполните следующие команды для установки Node.js.

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs

Проверьте, правильно ли установлен Node.

$ node --version

Вы должны увидеть аналогичный вывод.

v12.18.3

Проверьте npm также.

$ npm --version
6.14.6

Шаг 3 - Установка MongoDB

MongoDB является базой данных по умолчанию для NodeBB. Вы также можете использовать Redis вместо MongoDB. Мы рассмотрим обе базы данных в нашем руководстве.

Репозиторий MongoDB для Ubuntu 20.04 еще не готов, и сама Ubuntu содержит очень старую версию. Для наших целей мы будем использовать репозиторий MongoDB для 18.04, который работает отлично. Вы можете обновить список пакетов с последним репозиторием, как только официальная поддержка станет доступна.

Импортируйте публичный ключ для MongoDB.

$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

Добавьте репозиторий MongoDB.

$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

Обновите локальную базу данных пакетов.

$ sudo apt update

Установите MongoDB.

$ sudo apt install mongodb-org

Проверьте установку MongoDB.

$ mongod --version
db version v4.2.8
...

Запустите службу MongoDB.

$ sudo systemctl start mongod

Включите службу MongoDB.

$ sudo systemctl enable mongod

Проверьте статус службы MongoDB.

$ sudo systemctl status mongod

Шаг 4 - Настройка MongoDB

Администрирование MongoDB осуществляется через оболочку MongoDB. Установка MongoDB по умолчанию слушает на порту 27017.

Получите доступ к оболочке MongoDB.

$ mongo

Переключитесь на встроенную базу данных admin.

> use admin

Создайте административного пользователя. Это не то же самое, что и пользователь администратора NodeBB.

> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )

Замените заполнители “yourpassword” на ваш собственный пароль.

Добавьте новую базу данных для NodeBB.

> use nodebb

Далее создайте пользователя nodebb для управления базой данных nodebb.

> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

Разрешение readwrite позволяет NodeBB сохранять и извлекать данные из базы данных nodebb. Разрешение clustermonitor позволяет NodeBB получать только для чтения доступ к статистике базы данных, которая видна через его панель администратора.

Выйдите из оболочки Mongo.

> quit()

Откройте файл конфигурации MongoDB для редактирования.

$ sudo nano /etc/mongod.conf

Добавьте следующую строку в конец файла.

security:
  authorization: enabled

Перезапустите MongoDB и проверьте созданного ранее административного пользователя.

$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin

Вы должны увидеть приглашение Mongo, если все было настроено правильно.

Шаг 5 - Установка Git

Прежде чем мы продолжим установку NodeBB, нам нужно установить Git.

Выполните следующую команду для установки Git.

$ sudo apt install git

Выполните следующие команды для первоначальной настройки Git.

$ git config --global user.name "Ваше Имя"
$ git config --global user.email "[email protected]"

Шаг 6 - Установка NodeBB

Не рекомендуется запускать NodeBB от имени пользователя root.

Создайте пользователя без привилегий.

$ sudo adduser nodebb

Установите пароль на ваш выбор и пропустите другие параметры.

Создайте каталог, в котором будет находиться ваш форум NodeBB.

$ sudo mkdir /var/www/nodebb

Измените владельца папки на вновь созданного пользователя.

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

Войдите в вновь созданного пользователя.

$ su nodebb

Перейдите в каталог установки NodeBB.

$ cd /var/www/nodebb

Чтобы установить NodeBB, сначала нам нужно клонировать его репозиторий на Github.

Клонируйте NodeBB в каталог /var/www/nodebb. Точка в конце команды относится к текущему каталогу.

$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .

Здесь мы клонировали v1.14.2 NodeBB, которая была последней стабильной версией на момент написания руководства. Вы можете найти последнюю стабильную ветку на странице последних релизов NodeBB.

NodeBB поставляется с утилитой командной строки. Используйте следующую команду для установки NodeBB.

$ ./nodebb setup

Вы можете нажать Enter, чтобы выбрать значение по умолчанию.

Для значения URL, используемого для доступа к этому NodeBB, выберите окончательный URL, по которому вы хотите получить доступ к форуму. Если вы будете получать доступ к форуму через IP-адрес вашего сервера, введите его или введите полный домен форума. Здесь мы введем http://forum.example.com.

Продолжайте выбирать значения по умолчанию, пока не появится запрос на имя пользователя MongoDB, когда вы введете nodebb и пароль, который вы выбрали ранее для этого имени пользователя при настройке MongoDB. Ваша база данных nodebb должна быть выбрана. Вам также будет предложено создать пользователя администратора и его данные.

После завершения настройки выполните следующую команду, чтобы запустить NodeBB.

$ ./nodebb start

Ваш форум теперь работает. Вы должны иметь возможность получить к нему доступ по адресу http://:4567.

Главная страница NodeBB по умолчанию

Вы можете увидеть сообщение об ошибке, говорящим Похоже, ваше соединение с NodeBB было потеряно, пожалуйста, подождите, пока мы пытаемся восстановить соединение. Это происходит потому, что мы выбрали URL по умолчанию для NodeBB http://forum.example.com, а не http://. Но если вы введете IP-адрес во время настройки, вы больше не получите ошибку, но вам нужно будет настроить позже снова после выбора домена для вашего форума.

Выйдите из пользователя NodeBB.

$ exit

Шаг 7 - Установка Nginx

Ubuntu 20.04 по умолчанию поставляется с последней стабильной версией Nginx. Мы установим ее.

$ sudo apt install nginx

Проверьте, правильно ли она установлена.

$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Запустите и включите Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Откройте IP-адрес вашего сервера в веб-браузере. Вы должны увидеть следующую страницу, что означает, что ваш сервер работает.

Страница по умолчанию Nginx

Шаг 8 - Настройка Nginx

Выполните следующую команду, чтобы добавить файл конфигурации для вашего сайта.

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

Вставьте следующий код в редактор.

server {
    listen 80;

    server_name forum.example.com;
    
    access_log /var/log/nginx/forum.example.com.access.log;
    error_log /var/log/nginx/forum.example.com.error.log;

    location / {
        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;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:4567;
        proxy_redirect off;

        # Поддержка Socket.IO
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Нажмите Ctrl + X, чтобы выйти из редактора, и введите Y, когда будет предложено.

После завершения проверьте, правильна ли конфигурация Nginx.

$ sudo nginx -t

Перезагрузите службу Nginx, чтобы включить конфигурацию.

$ sudo systemctl reload nginx

Посетите http://forum.example.com в вашем браузере, чтобы открыть форум NodeBB.

Главная страница форума NodeBB

Шаг 9 - Запуск NodeBB как системной службы

Служба NodeBB не будет работать после перезагрузки системы. Чтобы избежать запуска NodeBB каждый раз, нам нужно установить его как системную службу.

Сначала остановите службу NodeBB.

$ ./nodebb stop

Выполните следующую команду, чтобы создать и отредактировать файл конфигурации системного юнита nodebb.service systemd.

$ sudo nano /etc/systemd/system/nodebb.service

Вставьте следующий код в редактор.

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always

[Install]
WantedBy=multi-user.target

Здесь мы выбрали имя пользователя nodebb, которое мы создали на Шаге 6, и путь, который мы выбрали для установки NodeBB.

Включите службу NodeBB.

$ sudo systemctl enable nodebb

Запустите службу NodeBB.

$ sudo systemctl start nodebb

Проверьте статус службы.

$ sudo systemctl status nodebb

Шаг 10 - Получение SSL-сертификата Let’s Encrypt

Защита вашего форума NodeBB с помощью HTTPS — это необходимый шаг для обеспечения безопасности трафика вашего сайта. Для этого руководства мы будем использовать клиент Certbot для установки SSL.

Для этого сначала установите инструмент Certbot.

$ sudo apt install certbot python3-certbot-nginx

Сгенерируйте сертификаты.

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

Если вы впервые запускаете Certbot на своем компьютере, вас попросят указать адрес электронной почты и согласиться с условиями обслуживания. Вам также будет предложено согласиться на передачу данных в фонд EFF, на что вы можете ответить «нет». После этого Certbot свяжется с серверами Let’s Encrypt и запустит проверку, чтобы подтвердить ваши домены.

Если это будет успешно, вам будет предложено, как обрабатывать HTTPS-перенаправления.

Пожалуйста, выберите, требуется ли HTTPS-доступ или он является необязательным.
-------------------------------------------------------------------------------
1: Легкий - Разрешить как HTTP, так и HTTPS-доступ к этим сайтам
2: Безопасный - Сделать все запросы перенаправленными на безопасный HTTPS-доступ
-------------------------------------------------------------------------------
Выберите соответствующий номер [1-2], затем [введите] (нажмите 'c', чтобы отменить):

Выберите вариант Безопасный и нажмите Enter. Это обеспечит правильное перенаправление всех запросов к http-домену на https-версию. Ваши сертификаты будут созданы, и ваши файлы конфигурации Nginx будут обновлены с настройками SSL.

Ваши сертификаты готовы, и теперь вы можете открыть свой сайт, перейдя по адресу https://forum.example.com

Шаг 11 - Проверка автоматического продления SSL

Это последний шаг перед завершением этого руководства.

Проверьте процесс продления, выполнив пробный запуск процесса продления.

$ sudo certbot renew --dry-run

Если вы не получите ошибок, это означает, что вы готовы. Certbot автоматически продлит ваши сертификаты. Вам будет отправлено электронное письмо с предупреждением о сроке действия сертификата.

Заключение

На этом все в этом руководстве. Настройка вашего форума NodeBB завершена. Если у вас есть вопросы, оставляйте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.