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

Установить 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-привилегиями.
Краткая методология установки
- Проверить систему и установить базовые утилиты.
- Установить Node.js и npm.
- Установить и настроить СУБД (MongoDB в примере).
- Опционально получить SSL-сертификат через acme.sh (Let’s Encrypt).
- Установить и настроить Nginx как reverse proxy.
- Клонировать 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После старта откройте в браузере свой домен. Пример вывода интерфейса:

Если вы видите страницу форума — базовая установка прошла успешно.
Шаг 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)
- Обновить систему и утилиты.
- Установить Node.js и сборочные инструменты.
- Установить MongoDB, создать БД и пользователей.
- Получить SSL (acme.sh) или подготовить сертификаты.
- Установить Nginx и настроить конфиг reverse proxy.
- Клонировать NodeBB и выполнить ./nodebb setup.
- Настроить systemd unit и включить автозапуск.
- Протестировать: регистрация пользователя, постинг, восстановление пароля, отправка файлов.
Тесты и критерии приёмки
- Сервер отвечает по HTTPS с действительным сертификатом.
- Главная страница форума доступна по домену без указания порта.
- Вход и регистрация пользователей работают.
- Создание темы и ответ на неё работают, сокет уведомления приходит в реальном времени.
- При перезагрузке сервера NodeBB автоматически стартует.
Сценарии отката и аварийного восстановления
- Откат к предыдущей версии: остановите сервис, восстановите файлы приложения из бэкапа или git checkout на стабильный тег, выполните npm install, запустите сервис.
- Восстановление БД: восстановите mongodump/mongorestore по инструкции резервного копирования.
- Если 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.
- Настройте резервное копирование, мониторинг и безопасную конфигурацию.
- Тестируйте обновления и плагины на тестовой среде перед развертыванием в продакшн.
Ссылки
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента