Установка NodeBB · 11 min read · Oct 14, 2025

Как установить форум NodeBB на Ubuntu 22.04

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

NodeBB доступен как в виде проекта с открытым исходным кодом для самостоятельного хостинга, так и в виде облачного сервиса. В этом руководстве вы узнаете, как установить форум NodeBB с использованием Nginx на сервере Ubuntu 22.04. Ubuntu 22.04 официально не поддерживает MongoDB; поэтому мы будем использовать PostgreSQL для хранения данных.

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

  • Сервер с установленной Ubuntu 22.04 и минимум 1 ГБ оперативной памяти.
  • Пользователь без прав root с привилегиями sudo.
  • Упрощенный брандмауэр (UFW) включен и работает.
  • Полностью квалифицированное доменное имя (FQDN), указывающее на сервер, например, forum.example.com.
  • Все обновлено. $ sudo apt update && sudo apt upgrade

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

Перед установкой любых пакетов первым шагом является настройка брандмауэра для разрешения HTTP и HTTPS соединений.

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

$ sudo ufw status

Вы должны увидеть что-то вроде следующего.

Статус: активен

Кому                       Действие      Откуда
--                         ------      ----
OpenSSH                    РАЗРЕШИТЬ       Везде
OpenSSH (v6)               РАЗРЕШИТЬ       Везде (v6)

Разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Проверьте статус снова, чтобы подтвердить.

$ sudo ufw status
Статус: активен

Кому                       Действие      Откуда
--                         ------      ----
OpenSSH                    РАЗРЕШИТЬ       Везде
80/tcp                     РАЗРЕШИТЬ       Везде
443                        РАЗРЕШИТЬ       Везде
OpenSSH (v6)               РАЗРЕШИТЬ       Везде (v6)
80/tcp (v6)                РАЗРЕШИТЬ       Везде (v6)
443 (v6)                   РАЗРЕШИТЬ       Везде (v6)

Шаг 2 - Установка PostgreSQL

Первый шаг в установке PostgreSQL — добавить его GPG ключ.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Добавьте APT репозиторий в список источников.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Обновите системный репозиторий.

$ sudo apt update

Теперь вы можете установить PostgreSQL.

$ sudo apt install postgresql postgresql-contrib

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

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Загружено: загружено (/lib/systemd/system/postgresql.service; включено; предустановлено: включено)
     Активно: активно (вышло) с Сб 2022-09-10 06:25:11 UTC; 13с назад
    Процесс: 12083 ExecStart=/bin/true (код=вышел, статус=0/УСПЕХ)
   Основной PID: 12083 (код=вышел, статус=0/УСПЕХ)
        CPU: 1мс

Сен 10 06:25:11 nodebb systemd[1]: Запуск PostgreSQL RDBMS...
Сен 10 06:25:11 nodebb systemd[1]: Завершен PostgreSQL RDBMS.

Шаг 3 - Настройка PostgreSQL

Нам нужно установить пароль для административного пользователя по умолчанию postgres. Сначала войдите в оболочку Postgres.

$ sudo -u postgres psql

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

postgres=# \password postgres

Вас попросят ввести новый пароль.

Введите новый пароль для пользователя "postgres":
Введите его снова:

Создайте нового пользователя для NodeBB.

postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';

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

postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;

Наберите \q, чтобы выйти из оболочки.

postgres=# \q

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

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

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

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

Проверьте установку Node.js и NPM.

$ node -v
v16.17.0
$ npm -v
8.15.0

Шаг 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 --disabled-password

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

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

$ sudo mkdir /var/www/html/nodebb -p

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

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

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

$ sudo su - nodebb

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

$ cd /var/www/html/nodebb

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

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

$ git clone -b v2.x https://github.com/NodeBB/NodeBB.git .

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

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

$ ./nodebb setup

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

2022-09-10T10:10:27.957Z [2633] - info: Установка NodeBB инициирована через командную строку

Добро пожаловать в NodeBB v2.5.2!

Это выглядит как новая установка, поэтому вам нужно будет ответить на несколько вопросов о вашей среде, прежде чем мы сможем продолжить.
Нажмите Enter, чтобы принять настройки по умолчанию (показаны в скобках).
URL, используемый для доступа к этому NodeBB (http://localhost:4567) https://forum.example.com
Пожалуйста, введите секрет NodeBB (44fd62bc-5047-4414-a4ca-83105740b624)
Хотите ли вы отправить анонимное использование плагинов в nbbpm? (да) нет
Какую базу данных использовать (mongo) postgres
2022-09-10T10:10:43.237Z [2633] - info:
Теперь настраиваем базу данных postgres:
IP-адрес или адрес вашего экземпляра PostgreSQL (127.0.0.1)
Порт хоста вашего экземпляра PostgreSQL (5432)
Имя пользователя PostgreSQL nbbuser
Пароль вашей базы данных PostgreSQL
Имя базы данных PostgreSQL (nodebb) nodebbdb
Включить SSL для доступа к базе данных PostgreSQL (ложь)
........

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

Затем выберите IP-адрес хоста и порт по умолчанию, нажав Enter, и введите ваше имя пользователя PostgreSQL, которое вы ввели nbbuser, и пароль, который вы выбрали ранее для этого имени пользователя при настройке MongoDB. Ваша база данных nodebbdb должна быть выбрана.

Вас также попросят создать администратора и его данные.

.....
2022-09-10T10:11:14.121Z [2633] - warn: Не обнаружены администраторы, выполняется начальная настройка пользователя

Имя пользователя администратора navjot
Адрес электронной почты администратора [email protected]
Пароль
Подтвердите пароль
.....
....
2022-09-10T10:14:28.160Z [2633] - info: [build] Компиляция активов успешна. Завершено за 118.777 сек.

     =================================================================================================================================================================

Установка NodeBB завершена. Запустите "./nodebb start", чтобы вручную запустить сервер NodeBB.

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

$ ./nodebb start
Запуск NodeBB
  "./nodebb stop", чтобы остановить сервер NodeBB
  "./nodebb log", чтобы просмотреть вывод сервера
  "./nodebb help" для получения дополнительных команд

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

$ exit

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

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

Сначала остановите службу NodeBB. Перейдите в каталог NodeBB и затем выполните команду напрямую, используя команду sudo -u.

$ cd /var/www/html/nodebb  
$ sudo -u 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 postgresql.service

[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/html/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

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

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

$ sudo systemctl enable nodebb

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

$ sudo systemctl start nodebb

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

$ sudo systemctl status nodebb
? nodebb.service - NodeBB
     Загружено: загружено (/etc/systemd/system/nodebb.service; включено; предустановлено: включено)
     Активно: активно (работает) с Вс 2022-09-11 21:41:07 UTC; 2с назад
       Документы: https://docs.nodebb.org
   Основной PID: 26844 (node)
      Задачи: 18 (лимит: 2237)
     Память: 94.1M
        CPU: 2.114с
     CGroup: /system.slice/nodebb.service
             ??26844 node loader.js --no-silent --no-daemon
             ??26855 /usr/bin/node /var/www/html/nodebb/app.js

Сен 11 21:41:07 forum systemd[1]: Запущен NodeBB.
Сен 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc.
Сен 11 21:41:07 forum nodebb[26844]: Эта программа поставляется БЕЗ ГАРАНТИЙ.
Сен 11 21:41:07 forum nodebb[26844]: Это бесплатное программное обеспечение, и вы можете перераспределять его при определенных условиях.
Сен 11 21:41:07 forum nodebb[26844]: Для получения полной лицензии, пожалуйста, посетите: http://www.gnu.org/copyleft/gpl.html
Сен 11 21:41:07 forum nodebb[26844]: Включено кластерирование: Запуск 1 процесса(ов).
Сен 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Инициализация NodeBB v2.5.2 https://forum.example.com

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

Ubuntu 22.04 поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.

Импортируйте ключ подписи Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий для стабильной версии Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Обновите системные репозитории.

$ sudo apt update

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

$ sudo apt install nginx

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

$ nginx -v
nginx version: nginx/1.22.0

Запустите сервер Nginx.

$ sudo systemctl start nginx

Шаг 9 - Установка SSL

Нам нужно установить Certbot для генерации SSL сертификата. Вы можете установить Certbot, используя репозиторий Ubuntu, или загрузить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным Snapd по умолчанию. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core
$ sudo snap refresh core

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

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку на каталог /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

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

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com

Вышеуказанная команда загрузит сертификат в каталог /etc/letsencrypt/live/forum.example.com на вашем сервере.

Сгенерируйте сертификат группы Диффи-Хеллмана.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Чтобы проверить, работает ли автоматическое обновление SSL, выполните пробный запуск процесса.

$ sudo certbot renew --dry-run

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

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

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Создайте и откройте файл /etc/nginx/conf.d/nodebb.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/nodebb.conf

Вставьте следующий код в него. Замените forum.example.com на ваше доменное имя. Убедитесь, что значение client_max_body_size установлено на 25 МБ, чтобы установить размер загрузки для форума.

server {
  listen 80 default_server;
  server_name forum.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name forum.example.com;

   http2_push_preload on; # Включить HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Включить версии TLS (TLSv1.3 требуется для предстоящего HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Включить 0-RTT TLSv1.3. Используйте $ssl_early_data при обратном проксировании, чтобы
   # предотвратить атаки повторного воспроизведения.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;

   # OCSP Stapling ---
   # извлекать OCSP записи из URL в ssl_certificate и кэшировать их
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;
   client_max_body_size 25M;

   gzip            on;
   gzip_min_length 1000;
   gzip_proxied    off;
   gzip_types      text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json;

   add_header X-Early-Data $tls1_3_early_data;

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

       proxy_set_header Host $http_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;
       proxy_set_header X-NginX-Proxy true;
       proxy_set_header X-Frame-Options SAMEORIGIN;

       proxy_pass http://127.0.0.1:4567;  # без завершающего слэша
       proxy_redirect off;
   }

   location @nodebb {
       proxy_pass http://127.0.0.1:4567;
   }

   location ~ ^/assets/(.*) {
       root /var/www/html/nodebb/;
       try_files /build/public/$1 /public/$1 @nodebb;
   }
}

# Этот блок полезен для отладки TLS v1.3. Пожалуйста, не стесняйтесь удалять это
# и использовать переменную `$ssl_early_data`, предоставленную NGINX, напрямую, если вы
# хотите это сделать.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте вашу конфигурацию Nginx.

$ sudo nginx -t

Перезапустите сервер Nginx.

$ sudo systemctl restart nginx

Шаг 11 - Доступ и настройка форума

Вы можете получить доступ к форуму, посетив URL https://forum.example.com в вашем браузере. Вы увидите следующую страницу.

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

Нажмите на страницу входа и введите учетные данные администратора, которые вы создали на шаге 6.

Страница входа NodeBB

Вы будете авторизованы. Далее нажмите на правый значок в верхней части панели меню, чтобы получить доступ к панели администратора.

Отсюда вы можете управлять форумом. Расширяйте его, устанавливая темы и плагины.

Панель управления администратора форума NodeBB

После установки любой темы и плагина вам необходимо перестроить и перезапустить форум, используя кнопку в правом верхнем углу панели управления администратора, как показано здесь.

Убедитесь, что вы настроили свою почтовую службу, перейдя в Панель управления >> Настройки >> Электронная почта, чтобы ваши пользователи форума могли получать электронные письма. Выберите следующие настройки, чтобы обеспечить оптимальные настройки доставки электронной почты.

Настройки электронной почты форума NodeBB

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

Настройки SMTP форума NodeBB

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

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

Тестирование электронной почты форума NodeBB

Вы получите тестовое электронное письмо, как показано ниже, подтверждающее настройки.

Тестовое электронное письмо форума NodeBB

Заключение

Это завершает наше руководство по установке форума NodeBB с использованием базы данных PostgreSQL и Nginx на сервере Ubuntu 22.04. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.