Как установить и настроить NodeBB на VPS
Классический форум на PHP с перезагрузкой страницы на каждый чих — это уже прошлый век: пользователи ждут, что новое сообщение появится мгновенно, без F5, а с телефона форум должен выглядеть как приложение, а не как урезанная десктопная версия. NodeBB закрывает оба этих требования из коробки: он построен на Node.js и Socket.IO, поэтому обновления страницы приходят через WebSocket в реальном времени, а интерфейс изначально адаптивный и заточен под мобильные экраны. Дальше — практическая установка на чистый VPS: от Node.js до рабочего форума с HTTPS.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое NodeBB и когда он оправдан
NodeBB — форумный движок с открытым кодом, написанный на JavaScript (Node.js на бэкенде, React-подобный рендеринг на фронте). В отличие от phpBB или MyBB, здесь нет модели "запрос — ответ — перезагрузка страницы": сообщения, уведомления и статусы "печатает..." доставляются через постоянное WebSocket-соединение. Из коробки есть плагины (SSO, антиспам, поиск), REST/Socket API для интеграций, встроенная поддержка PWA — форум можно "установить" на телефон как приложение.
Где NodeBB уместен:
- Комьюнити-проект, где важна живая обратная связь (техническая поддержка, геймерское сообщество, обсуждение продукта).
- Мобильная аудитория преобладает — адаптивный интерфейс NodeBB заметно лучше, чем у большинства PHP-форумов без доработки темы.
- Нужна интеграция с внешними системами через API — сокет-события удобно слушать снаружи.
Где стоит присмотреться к альтернативам: если сообщество маленькое и статичное (несколько сообщений в неделю), накладные расходы Node.js-процесса и отдельной БД не окупятся — тогда проще phpBB на связке PHP+MySQL. Если нужен формат "обсуждение вокруг темы/ссылки" с сильным упором на модерацию — стоит сравнить с Discourse, который тяжелее по ресурсам, но богаче готовыми инструментами сообщества.
Требования к серверу и выбор VPS
NodeBB сам по себе не прожорлив, но вместе с MongoDB и Node.js-процессом под нагрузкой (WebSocket-соединения держатся открытыми постоянно, а не закрываются после ответа) стоит закладывать запас:
| Сценарий | vCPU | RAM | Диск | Примечание |
|---|---|---|---|---|
| Тест / малое сообщество (до ~50 одновременных пользователей) | 2 | 2 ГБ | 20 ГБ SSD | MongoDB и Node на одном сервере |
| Средний форум (сотни онлайн) | 2-4 | 4 ГБ | 40 ГБ SSD | + Redis для кеша сессий |
| Растущее сообщество | 4+ | 8 ГБ | 60+ ГБ SSD | MongoDB желательно вынести отдельно |
Практика показывает: реальный лимит для NodeBB на скромном железе — это не CPU, а RAM, которую съедает MongoDB (у неё есть свой WMAP-кеш) плюс сам Node.js-процесс плюс открытые WebSocket-соединения. Если планируете от пары сотен одновременных пользователей — 4 ГБ мало, берите 8.
Для установки понадобится VPS с Ubuntu 24.04, root-доступ по SSH и домен, у которого A-запись уже указывает на IP сервера — без этого шаг с SSL не сработает. Если домен настраиваете впервые, сначала разберитесь с настройкой домена и DNS с нуля.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Node.js и MongoDB
NodeBB на конец августа 2026 официально поддерживает Node.js 18 LTS и новее (20/22 LTS тоже работают, но всегда сверяйтесь с текущими требованиями в официальной документации проекта перед установкой — версии поддержки меняются). Ставим через NodeSource-репозиторий, не через apt из стандартных репозиториев Ubuntu — там версия обычно устаревшая:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs build-essential
node -v
npm -v
build-essential нужен, потому что часть npm-зависимостей NodeBB собирается из исходников (нативные модули).
Далее MongoDB — основное хранилище NodeBB (есть также поддержка Redis как альтернативной БД, но MongoDB — более отлаженный и рекомендуемый путь):
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [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
sudo apt update
sudo apt install -y mongodb-org
sudo systemctl enable --now mongod
Репозиторий указан для jammy (22.04) — на момент написания статьи официальный пакет для noble (24.04) может отсутствовать в части регионов, и это рабочий обходной путь: пакеты jammy ставятся на 24.04 без проблем, поскольку зависимости совместимы. Проверьте актуальность строки репозитория в документации MongoDB перед установкой — политики APT-веток меняются.
Создайте пользователя и базу для NodeBB, не работайте с MongoDB без аутентификации:
mongosh
use nodebb
db.createUser({
user: "nodebb",
pwd: "замените-на-длинный-пароль",
roles: [{ role: "readWrite", db: "nodebb" }]
})
exit
Затем включите авторизацию в /etc/mongod.conf, добавив блок security: authorization: enabled, и перезапустите mongod. Отдельная статья про установку и настройку MongoDB на VPS разбирает эти шаги детальнее, если нужны тонкости.
Установка самого NodeBB
Создайте отдельного системного пользователя — запускать Node.js-приложение под root не нужно:
sudo adduser --disabled-password --gecos "" nodebb
sudo su - nodebb
Клонируйте актуальную стабильную ветку и установите зависимости:
git clone -b v3.x --depth 1 https://github.com/NodeBB/NodeBB.git
cd NodeBB
./nodebb setup
Интерактивный установщик спросит:
- URL форума (укажите будущий домен с
https://, даже если SSL ещё не настроен — NodeBB нормально стартует, а форму позже отредактируете через ACP); - порт (по умолчанию 4567 — за ним будет стоять Nginx);
- параметры подключения к базе — выберите MongoDB, впишите
nodebb/пароль/имя базыnodebb, созданные на предыдущем шаге; - логин и пароль администратора.
По завершении:
./nodebb start
./nodebb log
Откройте http://IP-сервера:4567 в браузере — если видите форум, установка прошла успешно. Дальше — вынести это за Nginx и приделать SSL, напрямую отдавать сайт с порта 4567 в продакшене не стоит.
PM2 и systemd: держим процесс живым
Встроенный ./nodebb start запускает процесс в фоне через собственный демон NodeBB, но при перезагрузке сервера он не поднимется автоматически, а при падении процесса — не перезапустится сам. Правильный вариант для продакшена — PM2, менеджер процессов Node.js с автоперезапуском и ротацией логов:
sudo npm install -g pm2
cd ~/NodeBB
pm2 start app.js --name nodebb -- --no-daemon
pm2 save
pm2 startup systemd
Последняя команда выведет строку с sudo env PATH=... — её нужно скопировать и выполнить отдельно от имени root, только после этого PM2 действительно пропишется в автозагрузку.
Проверить состояние:
pm2 status
pm2 logs nodebb
Если предпочитаете чистый systemd без PM2, можно оформить unit-файл на основе ./nodebb start, но PM2 удобнее именно тем, что умеет автоматический restart при memory leak (флаг --max-memory-restart) — для Node.js-процесса, который живёт неделями, это не лишняя страховка.
Nginx как обратный прокси и WebSocket
Ключевой нюанс NodeBB — трафик идёт не только по HTTP, но и по WebSocket (Socket.IO), и стандартная конфигурация Nginx для проксирования "как для обычного сайта" тут не заработает: без явного проброса заголовков Upgrade/Connection реалтайм-функции (уведомления, "печатает...", live-обновления списка тем) просто не будут работать, хотя сам форум по HTTP будет открываться нормально.
Установите Nginx и создайте конфиг:
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/nodebb
server {
listen 80;
server_name forum.example.com;
location / {
proxy_pass http://127.0.0.1:4567;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
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;
}
}
Активируйте и перезагрузите:
sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Замените forum.example.com на реальный домен. Если сомневаетесь, что выбрать вместо Nginx (например, Caddy с автоматическим SSL), взгляните на сравнение в статье Caddy или Nginx: что выбрать для сервера — для NodeBB подходит любой из вариантов, разница в удобстве настройки TLS.
SSL-сертификат и продакшен-настройки
Получите сертификат через certbot:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d forum.example.com
Certbot сам допишет блок для порта 443 и настроит редирект с HTTP. После выпуска сертификата зайдите в NodeBB и обновите URL форума на https:// через админ-панель (ACP → Settings → General), если при установке указывали http:// — иначе часть внутренних ссылок и сокет-подключение будут пытаться идти на незашифрованный адрес.
Дополнительно на проде стоит:
- Включить Redis как хранилище сессий и объект кеша, если ожидается заметная нагрузка — MongoDB под каждый чих сессии не рассчитана на такую частоту запросов. Настройка описана в статье про установку Redis на VPS, а в самом NodeBB это включается в
config.jsonсекциейredisи опцией сессий. - Настроить firewall — открыть только 80/443/22 наружу, порт 4567 не должен быть доступен извне (проверьте
sudo ufw statusпосле настройки Nginx). - Включить
pm2 install pm2-logrotate, чтобы логи Node-процесса не заполнили диск за пару месяцев работы форума. - Настроить регулярный
mongodumpдля бэкапа базы — форум без бэкапа теряется целиком при одном неудачном апдейте плагина.
Ориентировочно: на связке 2 vCPU / 4 ГБ с включённым Redis-кешем и десятком плагинов форум комфортно держит несколько сотен одновременных активных пользователей, но точная цифра сильно зависит от плагинов, тем оформления и паттерна нагрузки — не воспринимайте это как гарантированный бенчмарк, тестируйте на своих данных.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
NodeBB бесплатен?
Да, основной движок — open source (MIT-подобная лицензия), доступен для самостоятельного хостинга без лицензионных платежей. Есть платный облачный хостинг от разработчиков, но на своём VPS всё бесплатно.
Можно ли перейти с phpBB или другого форума на NodeBB?
Есть официальные и community-плагины импорта для нескольких популярных движков, но качество и полнота переноса зависят от конкретной пары "откуда-куда" — перед миграцией проверьте актуальный список поддерживаемых импортёров в документации и обязательно тестируйте на копии данных, а не на боевой базе.
Почему после установки не приходят realtime-уведомления?
В 9 случаях из 10 — не проброшены заголовки Upgrade/Connection в конфиге Nginx (см. раздел про обратный прокси) либо порт 4567 всё ещё торчит наружу и браузер пытается подключиться напрямую вместо прокси.
Нужен ли обязательно PM2, если у меня уже есть systemd-опыт?
Нет, это вопрос удобства: PM2 даёт готовые pm2 logs, pm2 monit, авторестарт по памяти и статус одной командой. Можно обойтись самописным systemd-unit'ом, но тогда часть удобств придётся реализовывать вручную.
MongoDB обязательна, или подойдёт PostgreSQL?
NodeBB официально поддерживает MongoDB и Redis как БД; PostgreSQL в основной ветке не поддерживается — не путайте с другими форумными движками, где выбор шире.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →