Гид по технологиям

Установка NodeBB на CentOS 7 — пошаговый практический гайд

• 7 min read • DevOps • Обновлено 19 Nov 2025
Установка NodeBB на CentOS 7 — пошаговый гайд
Установка NodeBB на CentOS 7 — пошаговый гайд

Общий вид форума NodeBB с логотипом и интерфейсом

Установить NodeBB на CentOS 7 можно за несколько шагов: установить Node.js, MongoDB (или Redis), Nginx, получить SSL (опционально), развернуть NodeBB и настроить systemd-сервис. В статье приведён подробный пошаговый план, чек-листы, рекомендации по безопасности и сценарии отката.

NodeBB — это современная платформа форума на базе Node.js. Она использует MongoDB или Redis для хранения данных и веб‑сокеты для мгновенных взаимодействий и уведомлений. NodeBB расширяется плагинами и доступна как open source проект на GitHub. В этом руководстве подробно показаны шаги установки на CentOS 7 x86_64 с практическими подсказками, проверками и рекомендациями по безопасности.

Для кого этот гайд

  • Системные администраторы и DevOps инженеры, которые разворачивают форум на выделенном сервере или VPS.
  • Разработчики, которые хотят быстро получить рабочее окружение NodeBB для тестов и разработки.

Важно: пример предполагает использование MongoDB. Если вы предпочитаете Redis — замените части, относящиеся к MongoDB, на инструкции по Redis.

Требования

  • Node.js 6 или новее (в примере используется LTS 8). Рекомендуется LTS версия.
  • MongoDB 2.6 или новее или Redis 2.8.9 или новее.
  • Nginx 1.3.13 или новее.
  • Git.

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

  • Сервер с CentOS 7 x86_64 и минимум 1 ГБ ОЗУ.
  • Домен с корректными A/AAAA записями, указывающими на сервер.
  • Нерадовый пользователь с sudo-привилегиями.

Краткая методология установки

  1. Проверить систему и установить базовые утилиты.
  2. Установить Node.js и npm.
  3. Установить и настроить СУБД (MongoDB в примере).
  4. Опционально получить SSL-сертификат через acme.sh (Let’s Encrypt).
  5. Установить и настроить Nginx как reverse proxy.
  6. Клонировать NodeBB, запустить установщик и оформить автозапуск через systemd.

Начальные команды и проверка системы

Проверка версии CentOS:

cat /etc/centos-release
# CentOS Linux release 7.5.1804 (Core)

Установка часового пояса:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Обновление пакетов:

sudo yum update -y

Установка необходимых утилит:

sudo yum install -y curl wget vim bash-completion git socat epel-release

Для простоты в примере SELinux и firewalld отключаются. В продакшене рассмотрите настройку политик и правил вместо полного отключения.

sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service

Важное замечание

Отключение SELinux и firewall снижает безопасность. На продуктивных серверах по возможности настройте корректные политики SELinux и правила firewall (firewalld/iptables) вместо полного выключения.

Шаг 1: Установка Node.js и npm

NodeBB основан на Node.js. В примере используется LTS 8.x. Установка через репозиторий NodeSource удобна для последующих обновлений.

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

При необходимости установите инструменты сборки для npm-аддонов:

sudo yum install -y gcc-c++ make
# или
# sudo yum groupinstall -y 'Development Tools'

Примечание: npm поставляется вместе с Node.js.

Проверка версий:

node -v && npm -v
# v8.12.0
# 6.4.1

Обновите npm до последней стабильной версии:

sudo npm install -g npm@latest

Шаг 2: Установка и конфигурация MongoDB

В примере используется MongoDB. Если вы хотите Redis — установка и настройки будут другими.

Создайте файл репозитория MongoDB:

sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo

Добавьте в него содержимое:

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

Установка MongoDB:

sudo yum install -y mongodb-org

Проверка версии:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.2
# db version v4.0.2

Запуск и включение автозапуска:

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

Проверка статуса:

sudo systemctl status mongod.service
# active (running)

Создание баз данных и пользователей

Подключитесь к MongoDB:

mongo

Переключитесь на базу admin:

> use admin

Создайте административного пользователя (замените пароль):

> db.createUser( { user: "admin", pwd: "", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

Создайте базу nodebb и пользователя nodebb:

> use nodebb
> db.createUser( { user: "nodebb", pwd: "", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

Выйдите из mongo:

> quit()

Перезапустите MongoDB и проверьте подключение под админом:

sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin

Если подключение прошло — база готова для NodeBB.

Шаг 3: Установка Acme.sh и получение сертификата Let’s Encrypt

SSL не обязателен, но настоятельно рекомендуется для публичных форумов. В примере используется acme.sh — лёгкий и независимый клиент для получения сертификатов Let’s Encrypt.

Установка acme.sh:

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

Проверка версии:

/etc/letsencrypt/acme.sh --version
# v2.8.0

Получение RSA и ECDSA сертификатов (замените forum.example.com на ваш домен):

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d forum.example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d forum.example.com --ocsp-must-staple --keylength ec-256

После успешного выполнения сертификаты будут в директориях:

  • RSA: /etc/letsencrypt/forum.example.com
  • ECDSA: /etc/letsencrypt/forum.example.com_ecc

Совет: автоматизируйте продление через cron, если acme.sh не сделал этого автоматически.

Шаг 4: Установка и настройка Nginx

Nginx используется как обратный прокси, пересылающий запросы с 80/443 на порт NodeBB 4567.

Импорт ключа репозитория Nginx:

wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key
rm nginx_signing.key

Создайте репозиторий:

sudo vim /etc/yum.repos.d/nginx_mainline.repo

Добавьте:

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1

Установка Nginx:

sudo yum install -y nginx

Проверка версии:

nginx -v
# 1.15.3

Запуск и автозапуск:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Проверьте статус:

sudo systemctl status nginx.service
# active (running)

Пример конфига Nginx для NodeBB

Создайте файл /etc/nginx/conf.d/nodebb.conf и вставьте:

server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  client_max_body_size 50M;

  # RSA
  ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.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 Support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

}

Проверка синтаксиса и перезагрузка:

sudo nginx -t
sudo systemctl reload nginx.service

Совет по безопасности: включите HSTS и настройте безопасные cipher‑наборы. Тестируйте конфигурацию через SSL Labs.

Шаг 5: Установка и настройка NodeBB

Создайте директорию для приложения и назначьте владельца:

sudo mkdir -p /var/www/nodebb
cd /var/www/nodebb
sudo chown -R [your_user]:[your_user] /var/www/nodebb

Клонируйте репозиторий NodeBB и запустите setup (в примере ветка v1.10.x):

git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
./nodebb setup

По завершении setup запустите приложение вручную:

./nodebb start

После старта откройте в браузере свой домен. Пример вывода интерфейса:

NodeBB в браузере — пример интерфейса форума

Если вы видите страницу форума — базовая установка прошла успешно.

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

Для автоматического старта при перезагрузке оформите NodeBB как systemd-сервис.

Если NodeBB запущен — остановите его:

./nodebb stop

Создайте пользователя nodebb и назначьте права:

sudo useradd nodebb
sudo chown -R nodebb:nodebb /var/www/nodebb

Создайте unit-файл systemd:

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

Включите и запустите сервис:

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

Проверка статуса:

sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service

Поздравляем — платформа NodeBB установлена и настроена как сервис.

Роли и чек-листы перед запуском в продакшн

Администратор сервера:

  • Проверить, что системный пользователь создан и имеет правильные права.
  • Настроить rlimit, ulimit для процесса NodeBB при высоких нагрузках.
  • Настроить мониторинг (Prometheus, Zabbix, Datadog).

Разработчик/DevOps:

  • Прогнать setup для плагинов и шаблонов.
  • Настроить CI для деплоя и миграций.

Владелец продукта:

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

Playbook: быстрый чек-лист развертывания (SOP)

  1. Обновить систему и утилиты.
  2. Установить Node.js и сборочные инструменты.
  3. Установить MongoDB, создать БД и пользователей.
  4. Получить SSL (acme.sh) или подготовить сертификаты.
  5. Установить Nginx и настроить конфиг reverse proxy.
  6. Клонировать NodeBB и выполнить ./nodebb setup.
  7. Настроить systemd unit и включить автозапуск.
  8. Протестировать: регистрация пользователя, постинг, восстановление пароля, отправка файлов.

Тесты и критерии приёмки

  • Сервер отвечает по HTTPS с действительным сертификатом.
  • Главная страница форума доступна по домену без указания порта.
  • Вход и регистрация пользователей работают.
  • Создание темы и ответ на неё работают, сокет уведомления приходит в реальном времени.
  • При перезагрузке сервера NodeBB автоматически стартует.

Сценарии отката и аварийного восстановления

  1. Откат к предыдущей версии: остановите сервис, восстановите файлы приложения из бэкапа или git checkout на стабильный тег, выполните npm install, запустите сервис.
  2. Восстановление БД: восстановите mongodump/mongorestore по инструкции резервного копирования.
  3. Если Nginx не пропускает трафик — верните предыдущий конфиг из резервной копии и перезагрузите nginx.

Технические советы и отладка

  • Логи NodeBB можно смотреть через системный журнал (syslog) либо файлы в /var/www/nodebb.
  • Если Socket.IO не работает — проверьте заголовки Upgrade и Connection в конфиге Nginx.
  • Проблемы с плагинами решайте запуском в режиме разработки и проверкой совместимости версии NodeBB.

Меры безопасности и жёсткая настройка

  • Не оставляйте отключённый SELinux/файерволь в продакшне. Настройте политики.
  • Обновляйте Node.js и зависимости с учётом совместимости плагинов.
  • Ограничьте права пользователя nodebb: запускать только нужные файлы.
  • Настройте резервное копирование MongoDB и тестируйте восстановление.
  • Включите HTTPS, HSTS и современные cipher‑наборы.

Конфигурация производительности и мониторинг

  • Для малых форумов 1 ГБ RAM достаточно, но при росте трафика масштабируйте до 2–4 ГБ и выше.
  • Используйте swap по необходимости, но планируйте вертикальное масштабирование или кластер MongoDB для нагрузки.
  • Подключите мониторинг метрик (CPU, память, latency) и алерты на превышение порогов.

Когда этот подход не подходит

  • Если у вас ограниченный хостинг без возможности установки systemd или root‑доступа, развертывание этим способом невозможно.
  • Для очень больших сообществ может потребоваться горизонтальное масштабирование и отдельный кластер MongoDB/Redis.

Альтернативные подходы

  • Использовать Redis вместо MongoDB для простых конфигураций и высокой скорости операций в памяти.
  • Разворачивать NodeBB в контейнерах (Docker, Kubernetes) для упрощения деплоя и масштабирования.

Сравнение опций хранилища (обзор)

  • MongoDB: гибкие запросы, простая настройка, хороша для большинства случаев.
  • Redis: сверхбыстрая и лёгкая для чтения/записи, но требует контроля объёма данных и персистентности.

Часто задаваемые вопросы

Q: Нужно ли обязательно SSL для форума? A: Нет, но настоятельно рекомендуется для публичных сайтов и безопасной авторизации.

Q: Можно ли использовать Redis вместо MongoDB? A: Да. NodeBB поддерживает Redis. Инструкции по установке Redis нужно использовать вместо раздела про MongoDB.

Q: Как обновлять NodeBB? A: Делайте git pull на ветке стабильной версии, затем npm install и ./nodebb restart. Тестируйте обновление на стенде перед продакшном.

Краткое резюме

  • Следуйте шагам: Node.js → MongoDB → SSL → Nginx → NodeBB → systemd.
  • Настройте резервное копирование, мониторинг и безопасную конфигурацию.
  • Тестируйте обновления и плагины на тестовой среде перед развертыванием в продакшн.

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро