Установка NodeBB · 8 min read · Oct 19, 2025
Как установить форум NodeBB на Ubuntu 18.04 LTS

NodeBB — это программное обеспечение форума на основе Node.js, созданное для современного веба. Оно построено на базе MongoDB или Redis. Использует веб-сокеты для мгновенных взаимодействий и уведомлений в реальном времени. NodeBB имеет множество современных функций из коробки, таких как интеграция с социальными сетями и потоковые обсуждения. Дополнительная функциональность обеспечивается с помощью сторонних плагинов. NodeBB — это проект с открытым исходным кодом, который можно найти на Github. В этом руководстве мы шаг за шагом проведем вас через процесс установки NodeBB на операционной системе Ubuntu 18.04 LTS, используя Nginx в качестве обратного прокси, MongoDB в качестве базы данных и acme.sh и Let’s Encrypt для HTTPS.
Требования
NodeBB требует установки следующего программного обеспечения:
- Node.js версии 6 или выше
- MongoDB версии 2.6 или выше или Redis версии 2.8.9 или выше
- Nginx версии 1.3.13 или выше
- Git
ПРИМЕЧАНИЕ: Установка зависимостей NodeBB может потребовать более 512 мегабайт системной памяти. Рекомендуется включить раздел подкачки, чтобы компенсировать, если в вашей системе Linux недостаточно памяти.
Предварительные условия
- Рабочая система Ubuntu 18.04 с как минимум 1 ГБ ОЗУ.
- Доменное имя с установленными записями
A/AAAA. - Пользователь без прав root с правами sudo.
Начальные шаги
Проверьте вашу версию Ubuntu:
lsb_release -ds
# Ubuntu 18.04.1 LTSНастройте часовой пояс:
sudo dpkg-reconfigure tzdataОбновите пакеты вашей операционной системы (программного обеспечения). Это важный первый шаг, так как он гарантирует, что у вас есть последние обновления и исправления безопасности для стандартных пакетов программного обеспечения вашей операционной системы:
sudo apt update && sudo apt upgrade -yУстановите некоторые основные пакеты, которые необходимы для базового администрирования операционной системы Ubuntu:
sudo apt install -y curl wget vim git unzip socat bash-completion Шаг 1: Установите Node.js и npm
NodeBB построен на Node.js. Мы собираемся установить рекомендуемую версию для NodeBB, которая составляет версию 8 ** на момент написания. В Linux у вас есть несколько вариантов установки Node.js: бинарные файлы Linux (x86/x64), исходный код или через менеджеры пакетов. Мы будем использовать вариант управления пакетами, который упрощает установку и обновление Node.js.
Скачайте и установите последнюю версию Long-Term Support (LTS) Node.js из репозитория Nodesource:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs Чтобы скомпилировать и установить нативные дополнения из npm, вам также может понадобиться установить инструменты сборки:
sudo apt install -y build-essentialПРИМЕЧАНИЕ: npm распространяется вместе с Node.js — это означает, что когда вы загружаете Node.js, вы автоматически получаете npm, установленный на вашей системе.
Проверьте версии Node.js и npm:
node -v && npm -v
# v10.15.1
# 6.4.1Npm — это отдельный проект от Node.js и обновляется чаще. В результате, даже если вы только что загрузили Node.js (а значит, и npm), вам, вероятно, потребуется обновить ваш npm. К счастью, npm знает, как обновить себя! Чтобы обновить ваш npm, введите это в вашем терминале:
sudo npm install -g npm@latestЭта команда обновит npm до последней стабильной версии.
Проверьте версию npm снова:
npm -v
# 6.7.0 И она должна вернуть последние номера версий.
Шаг 2: Установите и настройте MongoDB
NodeBB нуждается в базе данных для хранения своих данных, и он поддерживает MongoDB и Redis. В этом учебнике мы выбрали MongoDB в качестве движка хранения данных. Итак, в следующих нескольких шагах мы загрузим и установим базу данных MongoDB из официального репозитория rpm MongoDB:
Чтобы установить стабильную версию пакета MongoDB, выполните следующую команду:
sudo apt install -y mongodbПроверьте версию MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 1 Запустите и включите ( установите его для автоматического запуска при перезагрузке) службу MongoDB:
sudo systemctl start mongodb.service
sudo systemctl enable mongodb.serviceПроверьте статус сервера базы данных MongoDB, выполнив:
sudo systemctl status mongodb.service
# active (running)Далее создайте базу данных MongoDB и пользователя для NodeBB.
Сначала подключитесь к серверу MongoDB.
mongoПереключитесь на встроенную базу данных admin.
> use adminСоздайте административного пользователя.
> db.createUser( { user: "admin", pwd: "<Введите надежный пароль>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )ПРИМЕЧАНИЕ: Замените заполнитель <Введите надежный пароль> на свой собственный выбранный пароль.
Добавьте новую базу данных с именем nodebb.
> use nodebbБаза данных будет создана, и контекст будет переключен на nodebb. Далее создайте пользователя nodebb с соответствующими привилегиями.
> db.createUser( { user: "nodebb", pwd: "<Введите надежный пароль>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )ПРИМЕЧАНИЕ: Снова замените заполнитель <Введите надежный пароль> на свой собственный выбранный пароль.
Выйдите из оболочки Mongo.
> quit()Перезапустите MongoDB и проверьте, что ранее созданный административный пользователь может подключиться.
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=adminЕсли все прошло хорошо, ваша MongoDB должна быть установлена и подготовлена для NodeBB. На следующем шаге мы займемся установкой и настройкой веб-сервера.
Шаг 3 - Установите клиент acme.sh и получите сертификат Let’s Encrypt ( по желанию)
Защита вашего форума NodeBB с помощью HTTPS не является обязательной, но это хорошая практика для защиты трафика вашего сайта. Чтобы получить сертификат TLS от Let’s Encrypt, мы будем использовать клиент acme.sh. Acme.sh — это чистое программное обеспечение unix shell для получения сертификатов TLS от Let’s Encrypt без зависимостей.
Скачайте и установите acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~Проверьте версию acme.sh:
acme.sh --version
# v2.8.0Получите RSA и ECC/ECDSA сертификаты для вашего домена/имени хоста:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Если вы хотите получить фальшивые сертификаты для тестирования, вы можете добавить флаг --staging к вышеуказанным командам.
После выполнения вышеуказанных команд ваши сертификаты и ключи будут находиться в:
- Для RSA: директория
/home/username/example.com. - Для ECC/ECDSA: директория
/home/username/example.com_ecc.
Чтобы перечислить ваши выданные сертификаты, вы можете выполнить:
acme.sh --listСоздайте директорию для хранения ваших сертификатов. Мы будем использовать директорию /etc/letsencrypt.
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите/скопируйте сертификаты в директорию /etc/letsencrypt.
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"Все сертификаты будут автоматически обновляться каждые 60 дней.
После получения сертификатов выйдите из пользователя root и вернитесь к обычному пользователю с правами sudo:
exitШаг 4: Установите и настройте Nginx
NodeBB может хорошо работать с многими веб-серверами. В этом учебнике мы выбрали Nginx.
Установите пакет Nginx, выполнив следующую команду:
sudo apt install -y nginxПосле установки вы можете проверить версию Nginx, выполнив:
nginx -v Запустите и включите ( установите его для автоматического запуска при перезагрузке) службу Nginx:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceПроверьте статус веб-сервера Nginx, выполнив:
sudo systemctl status nginx.service
# active (running)NodeBB по умолчанию работает на порту 4567. Чтобы избежать ввода http://example.com:4567, мы настроим Nginx как обратный прокси для приложения NodeBB. Каждый запрос на порту 80 или 443 ( если используется SSL) будет перенаправлен на порт 4567.
Запустите sudo vim /etc/nginx/conf.d/nodebb.conf и настройте Nginx как HTTPS обратный прокси.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name example.com;
client_max_body_size 50M;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
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";
}
}Проверьте конфигурацию Nginx:
sudo nginx -tНаконец, чтобы изменения вступили в силу, нам нужно перезагрузить Nginx:
sudo systemctl reload nginx.serviceШаг 5: Установите и настройте NodeBB
Создайте директорию корня документа, где должен находиться NodeBB:
sudo mkdir -p /var/www/nodebbПерейдите в директорию корня документа:
cd /var/www/nodebbИзмените владельца директории /var/www/nodebb на вашего пользователя.
sudo chown -R [your_user]:[your_user] /var/www/nodebbПРИМЕЧАНИЕ: Замените your_user в вышеуказанной команде на вашего пользователя без прав root, которого вы должны были создать в качестве предварительного условия для этого учебника.
Клонируйте последний репозиторий NodeBB в папку корня документа:
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .Запустите скрипт настройки, выполнив приложение с флагом setup. Ответьте на каждый из вопросов:
./nodebb setupПосле завершения настройки NodeBB выполните ./nodebb start, чтобы вручную запустить ваш сервер NodeBB:
./nodebb startПосле выполнения этой команды вы должны иметь возможность получить доступ к вашему новому форуму в веб-браузере:

Шаг 6: Запустите NodeBB как системную службу
Когда NodeBB запускается через ./nodebb start, он не будет автоматически запускаться снова при перезагрузке системы. Чтобы избежать этого, нам нужно настроить NodeBB как системную службу.
Если он запущен, остановите NodeBB:
./nodebb stopСоздайте нового пользователя nodebb:
sudo useradd nodebbИзмените владельца директории /var/www/nodebb на пользователя nodebb:
sudo chown -R nodebb:nodebb /var/www/nodebbСоздайте файл конфигурации юнита systemd nodebb.service. Этот юнит будет управлять запуском демона NodeBB. Запустите sudo vim /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.service при перезагрузке и немедленно запустите nodebb.service:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.serviceПроверьте статус nodebb.service:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.serviceПоздравляем! Вы успешно установили и развернули платформу обсуждений NodeBB на системе Ubuntu 18.04. Вы должны иметь возможность получить доступ к вашему форуму на вашем домене и взаимодействовать с вашим форумом.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.