NodeBB – это программное обеспечение для форумов с открытым исходным кодом, основанное на Node.js, которое обеспечивает современное и отзывчивое решение для онлайн-сообществ. Работающий под управлением Ubuntu Linux, NodeBB использует надежность и гибкость операционной системы для обеспечения высокой производительности и масштабируемости. Для управления базами данных используется комбинация MongoDB и Redis, что позволяет эффективно обрабатывать большие объемы пользовательского контента.
NodeBB известен своими уведомлениями в реальном времени, легкой интеграцией с различными платформами социальных сетей и обширной экосистемой плагинов, позволяющей администраторам настраивать свои форумы под конкретные нужды. Кроме того, его дизайн, ориентированный на мобильные устройства, обеспечивает последовательный и привлекательный пользовательский опыт на всех устройствах. Стабильность и безопасность Ubuntu дополняют NodeBB, делая его идеальным выбором для хостинга и управления динамичными онлайн-сообществами.
В этом руководстве представлены пошаговые инструкции по установке NodeBB на сервер Alma Linux 9. Вы будете использовать MongoDB в качестве базы данных, Nginx в качестве обратного прокси, а затем защитите NodeBB с помощью HTTPS через Certbot и Letsencrypt.
Установка зависимостей
NodeBB – это программное обеспечение для форумов с открытым исходным кодом, основанное на Node.js. Чтобы установить NodeBB, необходимо убедиться, что установлены следующие пакеты, включая:
- Системные инструменты, такие как “Средства разработки”, Git и ImageMagick
- Node.js 18 или выше и NPM (Node Package Manager)
- Сервер баз данных NoSQL MongoDB
- Веб-сервер Nginx в качестве обратного прокси-сервера
В этом разделе вы установите эти зависимости на сервер Alma Linux 9.
Сначала выполните приведенную ниже команду, чтобы включить репозиторий Alma Linux CRB (CodeReadyBuild) и установить репозиторий EPEL.
sudo crb enable sudo dnf install epel-release -y
Затем создайте новый файл репозитория ‘/etc/yum.repos.d/mongodb-org-7.0.repo‘ с ‘nano‘ редактор.
sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo
Введите в файл следующую конфигурацию:
[mongodb-org-7.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-7.0.asc
Сохраните файл и выйдите из редактора после завершения работы.
Теперь выполните приведенную ниже команду, чтобы включить репозиторий Node.js 18 для AlmaLinux.
sudo dnf module enable nodejs:18 -y
Далее выполните следующую команду ‘dnf‘ команда для установки ‘Средства разработки‘, сервер MongoDB, Node.js, NPM, Git и ImageMagick.
sudo dnf group install "Development Tools" -y sudo dnf install nodejs npm git ImageMagick mongodb-org -y
После завершения установки запустите и включите ‘mongod‘ с помощью следующей команды.
sudo systemctl enable --now mongod sudo systemctl status mongod
Ниже вы можете видеть, что сервер MongoDB запущен и включен.
И наконец, проверьте версию Node.js с помощью команды ниже. Вы должны увидеть, что на сервере Alma Linux установлен Node.js 18.
node --version npm --version
Настройка сервера MongoDB и базы данных для NodeBB
После установки зависимостей вы защитите сервер MongoDB, включив аутентификацию по паролю и установив пароль администратора MongoDB. После этого вы также создадите новую базу данных MongoDB и пользователя для установки NodeBB.
Войдите на сервер MongoDB под именем ‘mongosh‘ команда ниже.
mongosh
После входа в систему переключитесь на ‘admin‘ базы данных и выполните приведенный ниже запрос, чтобы установить пароль администратора для MongoDB. Обязательно измените значение ‘MongoDBAdminPass‘ с вашей комбинацией паролей.
use admin db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )
Теперь выполните следующие запросы для создания новой базы данных и пользователя ‘nodebb‘ с паролем ‘NodeBBPassword’. При необходимости вы можете настроить следующие параметры базы данных.
use nodebb db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
Введите ‘выйти из игры()‘ для выхода из сервера MongoDB.
После того как вы настроили пароль администратора для MongoDB, давайте включим аутентификацию MongoDB.
Откройте стандартный файл конфигурации MongoDB ‘/etc/mongod.conf‘ с помощью ‘nano‘ редактор.
sudo nano /etc/mongod.conf
Чтобы включить аутентификацию MongoDB, отмените опцию ‘безопасность‘ и добавьте строку ‘авторизация: включена‘, например, следующим образом:
security: authorization: enabled
Сохраните и выйдите из файла после завершения работы.
Теперь запустите следующую команду ‘systemctl‘, чтобы перезапустить сервер MongoDB и применить изменения. Теперь аутентификация MongoDB должна быть включена.
sudo systemctl restart mongod
Чтобы проверить конфигурацию, выполните команду ‘mongosh‘ команда ниже, чтобы войти в MongoDB под пользователем ‘nodebb‘. Введите пароль для ‘nodebb‘ пользователь.
mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb
Установка NodeBB
Теперь, когда вы настроили сервер MongoDB, вы готовы установить NodeBB на сервер Alma Linux.
Добавьте нового системного пользователя и группу ‘nodebb‘ с помощью следующей команды.
sudo adduser -r -M -d /opt/nodebb -U nodebb
Загрузите исходный код 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 следующим образом:
cd /opt/nodebb sudo su -s /bin/bash -c "./nodebb setup" nodebb
Здесь вас спросят о некоторых конфигурациях NodeBB:
- Введите ваше доменное имя для NodeBB.
- Нажмите ENTER на конфигурации секрета NodeBB. Оставьте значение по умолчанию.
- Введите no, чтобы отключить анонимный доступ к NodeBB.
- Выберите MongoDB в качестве базы данных.
- Введите данные о базе данных MongoDB в формате mongodb://nodebb:[email protected]:27017/nodebb.
- Введите нового пользователя-администратора и адрес электронной почты для NodeBB.
- Введите пароль для пользователя-администратора NodeBB и повторите.
После завершения процесса вы увидите вывод, похожий на этот:
Теперь вы можете запустить или остановить NodeBB вручную, выполнив команду ‘nodebb‘ сценарий, как показано ниже:
sudo su -s /bin/bash -c "./nodebb start" nodebb sudo su -s /bin/bash -c "./nodebb stop" nodebb
Запуск NodeBB в качестве службы systemd
Чтобы проще управлять NodeBB, вы можете контролировать процесс NodeBB с помощью команды ‘systemctl‘ утилита. Для этого необходимо создать новый служебный файл systemd для запуска NodeBB.
Создание нового файла службы systemd ‘/etc/systemd/system/nodebb.service‘ с помощью ‘nano‘ редактор.
sudo nano /etc/systemd/system/nodebb.service
Введите следующую конфигурацию для запуска NodeBB в качестве службы systemd.
[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=/bin/env node loader.js –no-silent –no-daemon
Restart=always
[Install]
WantedBy=multi-user.target
Сохраните файл и выйдите из редактора.
Перезагрузите менеджер systemd с помощью команды ‘systemctl‘ команда ниже.
sudo systemctl daemon-reload
Наконец, запустите и включите команду ‘nodebb‘ служба, а затем проверьте ее, чтобы убедиться, что служба запущена:
sudo systemctl enable --now nodebb sudo systemctl status nodebb
Ниже видно, что NodeBB работает в фоновом режиме как служба systemd.
Настройка Nginx в качестве обратного прокси-сервера
Теперь, когда NodeBB работает в фоновом режиме как служба, давайте установим Nginx и создадим новый серверный блок, который будет использоваться в качестве обратного прокси для NodeBB.
Сначала запустите команду ‘dnf‘ команда ниже, чтобы установить веб-сервер Nginx.
sudo dnf install nginx -y
Теперь создайте новую конфигурацию Nginx ‘/etc/nginx/conf.d/nodebb.conf‘ с помощью ‘nano‘ редактор.
sudo nano /etc/nginx/conf.d/nodebb.conf
Введите следующую конфигурацию и не забудьте изменить ‘имя_сервера‘ параметр с именем вашего домена.
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”;
}
}
После завершения сохраните файл и выйдите из редактора.
Далее выполните приведенную ниже команду, чтобы проверить синтаксис Nginx. В случае успеха вы получите на выходе ‘синтаксис в порядке – проверка успешна‘.
sudo nginx -t
Наконец, запустите команду ‘systemctl‘ команда ниже, чтобы запустить, включить и проверить веб-сервер Nginx.
sudo systemctl enable --now nginx sudo systemctl status nginx
Ниже вы можете видеть, что веб-сервер Nginx запущен.
Защита NodeBB с помощью HTTPS
На этом этапе ваша установка NodeBB готова. Но если вы находитесь на публичном доменном имени, вы должны защитить NodeBB с помощью HTTPS. В этом разделе вы настроите HTTPS для NodeBB с помощью Certbot и Letsencrypt.
Установите Certbot и плагин Certbot Nginx с помощью следующей команды:
sudo dnf install certbot python3-certbot-nginx -y
Теперь запустите команду ‘certbot‘ команда ниже, чтобы защитить вашу установку NodeBB с помощью HTTPS. Обязательно измените доменное имя и адрес электронной почты в этой команде.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d forum.local
После завершения процесса ваши сертификаты SSL/TLS будут доступны по адресу ‘/etc/letsencrypt/live/domain.com‘ каталог и ваша установка NodeBB должна быть защищена HTTPS.
Доступ к NodeBB
Откройте веб-браузер и зайдите на доменное имя NodeBB. Если установка прошла успешно, вы увидите следующую домашнюю страницу NodeBB.
Заключение
Поздравляем! Вы завершили установку NodeBB на сервер Alma Linux 9. Форум NodeBB запущен и работает с сервером MongoDB и Nginx в качестве обратного прокси. Вы также защитили установку NodeBB с помощью HTTPS через Certbot и Letsencrypt.