
NodeBB – это программное обеспечение для форумов с открытым исходным кодом, основанное на Node.js, которое обеспечивает современное и отзывчивое решение для онлайн-сообществ. Работающий под управлением Ubuntu Linux, NodeBB использует надежность и гибкость операционной системы для обеспечения высокой производительности и масштабируемости. Для управления базами данных используется комбинация MongoDB или Redis, что позволяет эффективно обрабатывать большие объемы пользовательского контента. NodeBB известен своими уведомлениями в реальном времени, удобной интеграцией с различными платформами социальных сетей и обширной экосистемой плагинов, позволяющей администраторам настраивать свои форумы под конкретные нужды. Кроме того, его дизайн, ориентированный на мобильные устройства, обеспечивает последовательный и привлекательный пользовательский опыт на всех устройствах. Стабильность и безопасность Ubuntu дополняют NodeBB, делая его идеальным выбором для хостинга и управления динамичными онлайн-сообществами.
В этом руководстве вы узнаете, как установить NodeBB на сервер Ubuntu 24.04 с базой данных MongoDB и веб-сервером Nginx. Вы также узнаете, как защитить NodeBB с помощью HTTPS через Certbot и Letsencrypt.
Предварительные условия
Чтобы начать работу с этим руководством, убедитесь, что у вас есть:
- Сервер Ubuntu 24.04.
- Некорневой пользователь с правами администратора.
- Доменное имя, указывающее на IP-адрес сервера.
Установка сервера MongoDB
NodeBB написан на Node.js и использует MongoDB в качестве базы данных. Чтобы установить NodeBB, необходимо установить сервер MongoDB на вашу систему. В этом разделе вы установите MongoDB server 7 на сервер Ubuntu 24.04.
Сначала выполните приведенную ниже команду, чтобы установить пакеты gnupg и curl на вашу систему Ubuntu.
sudo apt install gnupg curl
Теперь добавьте ключ GPG и репозиторий для MongoDB с помощью команды ниже. На данный момент MongoDB 7.0 доступен только для Ubuntu 22.04, поэтому мы будем использовать его на нашем сервере Ubuntu 24.04.
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg –dearmor
echo “deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
Далее выполните следующую команду apt, чтобы обновить индекс пакетов Ubuntu и установить пакет mongodb-org. Введите Y для подтверждения установки.
sudo apt update sudo apt install mongodb-org
После завершения установки выполните приведенную ниже команду systemctl, чтобы перезагрузить диспетчер systemd. Это связано с тем, что новый служебный файл mongod был добавлен в вашу систему.
sudo systemctl daemon-reload
Теперь выполните приведенную ниже команду systemctl, чтобы запустить и включить MongoDB mongod службу. А затем проверьте статус, чтобы убедиться, что служба mongod запущена.
sudo systemctl enable --now mongod sudo systemctl status mongod
Как видно из приведенного ниже рисунка, служба mongod служба включена и работает.
Настройка сервера MongoDB и базы данных для NodeBB
После установки сервера MongoDB включите аутентификацию на MongoDB, создайте пользователя admin, а затем создайте нового пользователя и базу данных для установки NodeBB.
Войдите в оболочку MongoDB с помощью приведенной ниже команды mongosh client.
mongosh
В оболочке mongosh переключитесь на базу данных admin и создайте нового пользователя admin для MongoDB. В этом примере вы создадите пользователя MongoDB admin с паролем MongoDBAdminPass. Обязательно измените данные пользователя на свои.
use admin db.createUser( { user: “admin”, pwd: “MongoDBAdminPass”, roles: [ { role: “root”, db: “admin” } ] } )
После этого переключитесь и создайте базу данных nodebb, а затем создайте нового пользователя nodebb с паролем NodeBBPassword. База данных и пользователь nodebb будут использоваться для установки NodeBB.
use nodebb db.createUser( { user: “nodebb”, pwd: “NodeBBPassword”, roles: [ { role: “readWrite”, db: “nodebb” }, { role: “clusterMonitor”, db: “admin” } ] } )
Теперь введите quit() для выхода из оболочки mongosh.
quit()
Далее откройте стандартную конфигурацию MongoDB /etc/mongod.conf с помощью следующего редактора nano.
sudo nano /etc/mongod.conf
Отмените установку безопасность и измените параметр авторизация на включено. Это позволит включить аутентификацию на сервере MongoDB.
security: authorization: enabled
После завершения сохраните файл и выйдите из редактора.
Теперь запустите программу systemctl выполните команду ниже, чтобы перезапустить службу mongod и применить внесенные изменения. После перезапуска службы mongod аутентификация MongoDB будет включена.
sudo systemctl restart mongod
Выполните приведенную ниже команду mongosh для подключения от имени пользователя nodedbb в базу данных nodebb. Введите пароль при появлении запроса.
mongosh “mongodb://127.0.0.1:27017” --username nodebb --authenticationDatabase nodebb
Теперь выполните следующие запросы, чтобы проверить подключение к серверу MongoDB.
db.runCommand( { connectionStatus: 1, showPrivileges: false } )
Ниже вы аутентифицировались как пользователь nodebb к базе данных nodebb.
Введите quit() для выхода из оболочки MongoDB.
Установка NodeBB
Теперь, когда вы настроили сервер MongoDB, установите Node.js через официальный репозиторий Ubuntu, а затем загрузите и установите NodeBB на вашу систему Ubuntu.
Перед установкой NodeBB выполните следующую команду apt, чтобы установить пакет Node.js и NPM на вашу систему Ubuntu. Введите Y, чтобы подтвердить установку.
sudo apt install nodejs npm
После установки проверьте версии Node.js и NPM следующим образом – Вы видите, что Node.js 18 и NPM 9 установлены.
node --version npm --version
Теперь выполните следующую команду, чтобы создать нового системного пользователя и группу nodebb. Этот пользователь будет использоваться для запуска установки NodeBB.
sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb
Выполните приведенную ниже команду git, чтобы загрузить исходный код NodeBB в каталог /opt/nodebb, а затем измените право собственности на него на пользователя nodebb.
git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb sudo chown -R nodebb:nodebb /opt/nodebb
Перейдите в каталог /opt/nodebb и выполните команду nodebb setup, чтобы начать установку NodeBB.
cd /opt/nodebb sudo su -s /bin/bash -c “./nodebb setup” nodebb
Вас спросят о следующих конфигурациях NodeBB:
- Введите ваше доменное имя для NodeBB, например forum.local.
- Нажмите ENTER на конфигурации секрета NodeBB. Оставьте значение по умолчанию.
- Введите no, чтобы отключить анонимный доступ к NodeBB.
- Выберите MongoDB в качестве базы данных.
- Введите данные о базе данных MongoDB в формате mongodb://nodebb:[email protected]:27017/nodebb.
- Введите нового пользователя-администратора и адрес электронной почты для NodeBB.
- Введите пароль для пользователя-администратора NodeBB и повторите.
После завершения установки вы увидите сообщение Установка NodeBB завершена.
Чтобы запустить NodeBB из командной строки, выполните следующую команду nodebb start:
sudo su -s /bin/bash -c "./nodebb start" nodebb
Чтобы завершить процесс NodeBB, используйте команду nodebb stop, приведенную ниже.
sudo su -s /bin/bash -c "./nodebb stop" nodebb
Запуск NodeBB в качестве службы systemd
В этом руководстве вы будете запускать NodeBB в фоновом режиме как службу systemd. Поэтому сейчас вы создадите новый служебный файл для NodeBB, что упростит управление службой NodeBB с помощью утилиты systemctl.
Создание нового служебного файла systemd /etc/systemd/system/nodebb.service с помощью следующего редактора nano.
sudo nano /etc/systemd/system/nodebb.service
Вставьте следующий служебный файл для NodeBB. В этом примере вы запустите службу nodebb от имени пользователя nodebb.
[Unit] Description=NodeBB Documentation=https://docs.nodebb.org After=system.slice multi-user.target mongod.service
[Service]
Type=simple
User=nodebb
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/opt/nodebb
ExecStart=/usr/bin/env node loader.js –no-silent –no-daemon
Restart=always
[Install]
WantedBy=multi-user.target
Сохраните файл и выйдите из редактора, когда закончите.
Теперь выполните приведенную ниже команду systemctl, чтобы перезагрузить менеджер systemd и применить внесенные изменения.
sudo systemctl daemon-reload
После этого запустите, включите и проверьте службу nodebb с помощью следующей команды.
sudo systemctl enable --now nodebb sudo systemctl status nodebb
Ниже вы можете видеть, что служба nodebb запущена в фоновом режиме как служба systemd.
Настройка Nginx в качестве обратного прокси-сервера
В этом уроке вы будете использовать веб-сервер Nginx в качестве обратного прокси для NodeBB. Итак, сейчас вы установите Nginx и создадите новый блок сервера для обратного прокси. Убедитесь, что ваше доменное имя указывает на IP-адрес сервера.
Установите веб-сервер Nginx в вашу систему, выполнив следующие действия apt install команда.
sudo apt install nginx -y
После завершения установки создайте новую конфигурацию серверного блока /etc/nginx/sites-available/nodebb с помощью редактора nano.
sudo nano /etc/nginx/sites-available/nodebb
Вставьте следующую конфигурацию и обязательно измените forum.local с вашим доменным именем. Таким образом, вы установите обратный прокси для NodeBB, который будет работать в фоновом режиме на порту 4567.
server { listen 80;
server_name forum.local;
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 Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
}
Сохраните файл и выйдите из редактора.
Теперь выполните приведенную ниже команду, чтобы активировать файл серверного блока nodebb и проверить конфигурацию Nginx. Если вы правильно настроили Nginx, вы увидите вывод синтаксис в порядке – тест пройден успешно.
sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/ sudo nginx -t
Наконец, выполните приведенную ниже команду systemctl, чтобы перезапустить службу Nginx и применить внесенные изменения. Затем проверьте состояние службы Nginx, чтобы убедиться, что она запущена.
sudo systemctl restart nginx sudo systemctl status nginx
Как видно из приведенного ниже результата, служба Nginx запущена.
Защита NodeBB с помощью HTTPS
В этом разделе вы защитите NodeBB с помощью HTTPS через Certbot и Letsencrypt. В сочетании с Certbot и Nginx вы можете настроить автоматический HTTPS на своем веб-сервере.
Установите пакеты certbot и python3-certbot-nginx с помощью следующей команды:
sudo apt install certbot python3-certbot-nginx -y
Теперь выполните приведенную ниже команду certbot, чтобы сгенерировать SSL-сертификаты и защитить вашу установку NodeBB с помощью HTTPS. Не забудьте изменить адрес электронной почты и доменное имя на свои данные.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d forum.local
После завершения процесса вы увидите свои сертификаты в разделе /etc/letsencrypt/live/domain.com каталог. И ваша установка NodeBB будет защищена HTTPS автоматически.
Доступ к NodeBB
Откройте доменное имя NodeBB, например https://forum.local, с помощью веб-браузера. Если установка прошла успешно, вы увидите домашнюю страницу NodeBB по умолчанию, как показано ниже:
Нажмите на Вход ссылку, и вам будет предложена страница входа в NodeBB. Затем введите свой логин и пароль администратора и нажмите кнопку Войти , чтобы подтвердить. Если у вас правильные учетные данные, вы увидите следующую панель администратора.
В настройках администратора NodeBB вы увидите следующее:
Заключение
Поздравляем! Вы установили программное обеспечение для форумов с открытым исходным кодом NodeBB на сервер Ubuntu 24.04. Вы запустили NodeBB с MongoDB в качестве базы данных и Nginx в качестве обратного прокси. Вы также защитили NodeBB с помощью HTTPS через Certbot и Letsencrypt. Теперь вы можете добавить SMTP-сервер, чтобы настроить регистрацию и подтверждение по электронной почте.