Как установить NodeBB с прокси Nginx на сервер Ubuntu 24.04

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

установить 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

добавить репо mongodb

Далее выполните следующую команду apt, чтобы обновить индекс пакетов Ubuntu и установить пакет mongodb-org. Введите Y для подтверждения установки.

sudo apt update
sudo apt install mongodb-org

установить mongodb

После завершения установки выполните приведенную ниже команду systemctl, чтобы перезагрузить диспетчер systemd. Это связано с тем, что новый служебный файл mongod был добавлен в вашу систему.

sudo systemctl daemon-reload

Теперь выполните приведенную ниже команду systemctl, чтобы запустить и включить MongoDB mongod службу. А затем проверьте статус, чтобы убедиться, что служба mongod запущена.

sudo systemctl enable --now mongod
sudo systemctl status mongod

Как видно из приведенного ниже рисунка, служба 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

Далее откройте стандартную конфигурацию 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

установить nodejs

После установки проверьте версии Node.js и NPM следующим образом – Вы видите, что Node.js 18 и NPM 9 установлены.

node --version
npm --version

проверить nodejs

Теперь выполните следующую команду, чтобы создать нового системного пользователя и группу 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

добавить пользователя и загрузить 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

Запуск 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.

служба nodebb

Настройка Nginx в качестве обратного прокси-сервера

В этом уроке вы будете использовать веб-сервер Nginx в качестве обратного прокси для NodeBB. Итак, сейчас вы установите Nginx и создадите новый блок сервера для обратного прокси. Убедитесь, что ваше доменное имя указывает на IP-адрес сервера.

Установите веб-сервер Nginx в вашу систему, выполнив следующие действия apt install команда.

sudo apt install nginx -y

установить nginx

После завершения установки создайте новую конфигурацию серверного блока /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

настройка nginx

Наконец, выполните приведенную ниже команду systemctl, чтобы перезапустить службу Nginx и применить внесенные изменения. Затем проверьте состояние службы Nginx, чтобы убедиться, что она запущена.

sudo systemctl restart nginx
sudo systemctl status nginx

Как видно из приведенного ниже результата, служба 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-сервер, чтобы настроить регистрацию и подтверждение по электронной почте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *