NodeBB - установка на Debian 12
-
Содержание
-
Установка NodeBB на Debian 12 (Bookworm)
Эта инструкция адаптирована для Debian 12 (Bookworm) и устанавливает NodeBB с использованием MongoDB 8.0 в качестве базы данных. Предполагается использование полностью обновлённой системы.
Системные требования
- Память: Установка зависимостей NodeBB может потребовать более 512 МБ оперативной памяти.
Рекомендуется включить swap-раздел (например, 1–2 ГБ), если у вас мало RAM.
# Пример создания swap-файла 2 ГБ (если нет раздела) sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Обновление системы
sudo apt update && sudo apt upgrade -y
- Память: Установка зависимостей NodeBB может потребовать более 512 МБ оперативной памяти.
-
Установка Node.js (версия 22 LTS)
NodeBB требует Node.js 22.x (LTS на ноябрь 2025 года). Устанавливаем из репозитория NodeSource.
1. Импорт GPG-ключа NodeSource
sudo apt-get install -y ca-certificates curl gnupg sudo mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg2. Добавление репозитория Node.js 22.x
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list3. Установка
sudo apt update sudo apt install nodejs -yПроверка
node -v # должно быть v22.x.x npm -v # должно быть 10.x.x
-
Установка MongoDB 8.0
MongoDB 8.0 — официально поддерживаемая версия. Используем репозиторий MongoDB для Debian 12 (bookworm).
1. Импорт GPG-ключа MongoDB
sudo apt-get install -y gnupg curl curl -fsSL https://pgp.mongodb.com/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor2. Добавление репозитория (важно:
bookworm, а неbullseye)echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list3. Установка
sudo apt update sudo apt install -y mongodb-orgПроверка
mongod --version # db version v8.0.xЗапуск и проверка службы
sudo systemctl start mongod sudo systemctl enable mongod sudo systemctl status mongod
-
Настройка MongoDB (с авторизацией)
1. Подключение к MongoDB Shell
mongosh2. Создание администратора (в базе
admin)use admin db.createUser({ user: "admin", pwd: "ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ", roles: [ { role: "root", db: "admin" } ] })Замените
ВАШ_НАДЁЖНЫЙ_ПАРОЛЬна сложный пароль (без<>).3. Создание базы и пользователя для NodeBB
use nodebb db.createUser({ user: "nodebb", pwd: "ВАШ_ПАРОЛЬ_NODEBB", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] })4. Выход
quit()5. Включение авторизации
Отредактируйте конфигурацию:
sudo nano /etc/mongod.confДобавьте в конец:
security: authorization: enabled6. Перезапуск MongoDB
sudo systemctl restart mongod7. Проверка подключения с авторизацией
mongosh "mongodb://localhost:27017" --username admin --authenticationDatabase admin(Вас попросят ввести пароль
admin. Выйдите черезquit().)
-
Установка NodeBB
1. Установка Git
sudo apt install -y gitВажно: Дальше не используйте
sudo! Переключитесь на обычного пользователя.2. Клонирование репозитория (ветка v4.x — стабильная)
git clone -b v4.x https://github.com/NodeBB/NodeBB.git nodebb cd nodebb2.5. Запуск настройки
- Заходим через файловый менеджер mc
- Выбираем каталог install (получится nodebb/install)
- Копируем оттуда файл package.json на уровень выше, то есть в каталог nodebb
- Выходим из mc
3. Запуск настройки
./nodebb setupОтветы на вопросы:
- URL сайта:
http://ваш-домен.ру(точно так, как будете открывать) - Порт:
4567(по умолчанию) - База данных:
mongo - Хост MongoDB:
localhost - Порт MongoDB:
27017 - Имя пользователя:
nodebb - Пароль:
ВАШ_ПАРОЛЬ_NODEBB(из шага выше) - Создание администратора: заполните логин, email, пароль
ПРИМЕР
Welcome to NodeBB v4.7.0! This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed. Press enter to accept the default setting (shown in brackets). URL used to access this NodeBB (http://localhost:4567) https://pixelfed.nbics.net Please enter a NodeBB secret (90ade1b2-f52b-47e2-b3aa-3560c174bfea) Would you like to submit anonymous plugin usage to nbbpm? (yes) no Which database to use (mongo) 2025-12-05T20:15:09.594Z [5423] - info: Now configuring mongo database: MongoDB connection URI: (leave blank if you wish to specify host, port, username/password and database individually) Format: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] Host IP or address of your MongoDB instance (127.0.0.1) Host port of your MongoDB instance (27017) MongoDB username nodebb Password of your MongoDB database MongoDB database name (nodebb) nodebb 2025-12-05T20:16:31.596Z [5423] - info: [database] Checking database indices. 2025-12-05T20:16:32.210Z [5423] - info: [database] Checking database indices done! 2025-12-05T20:16:33.290Z [5423] - verbose: [minifier] utilizing a maximum of 7 additional threads Configuration Saved OK Populating database with default configs, if not already set... 2025-12-05T20:16:33.348Z [5423] - warn: [cache-buster] could not read cache buster ENOENT: no such file or directory, open '/nodebb/build/cache-buster' {"code":"ENOENT","errno":-2,"path":"/nodebb/build/cache-buster","stack":"Error: ENOENT: no such file or directory, open '/nodebb/build/cache-buster'\n at async open (node:internal/fs/promises:641:25)\n at async Object.readFile (node:internal/fs/promises:1245:14)\n at async read (/nodebb/src/meta/cacheBuster.js:31:18)\n at async Configs.init (/nodebb/src/meta/configs.js:90:17)\n at async setupDefaultConfigs (/nodebb/src/install.js:249:2)\n at async install.setup (/nodebb/src/install.js:617:3)\n at async Object.setup (/nodebb/src/cli/setup.js:30:15)","syscall":"open"} Enabling default theme: nodebb-theme-harmony No categories found, populating instance with default categories 2025-12-05T20:16:33.760Z [5423] - warn: No administrators have been detected, running initial user setup Administrator username Admin Administrator email address forumbb@rpost.nbics.net Password Confirm Password
4. Запуск NodeBB
./nodebb startПроверьте:
http://ваш-ip:4567— должен открыться форум.
После завершения появится: NodeBB Setup Completed.
-
Установка и настройка nginx (обратный прокси)
1. Установка
sudo apt install -y nginx2. Проверка
sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx3. Создание конфигурации сайта
cd /etc/nginx/sites-available sudo nano forum.ваш-домен.руВставьте конфигурацию:
server { listen 80; server_name forum.ваш-домен.ру; 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; # Поддержка WebSocket (Socket.IO) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }4. Активация сайта
cd /etc/nginx/sites-enabled sudo ln -s ../sites-available/forum.ваш-домен.ру .5. Проверка и перезагрузка
sudo nginx -t sudo systemctl reload nginx
(Рекомендуется) Настройка HTTPS через Certbot
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d forum.ваш-домен.руСледуйте инструкциям (включите редирект с HTTP → HTTPS).
6. Замена конфига Nginx.
После создания сертификата, затираем предыдущий конфиг Nginx, и подставляем туда следующие строки (заменяя доменное имя и проксируемый IP-адрес на нужные):
server { server_name pixelfed.nbics.net; 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://10.0.3.110:4567; proxy_redirect off; # Socket.IO Support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/pixelfed.nbics.net/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/pixelfed.nbics.net/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot }server { if ($host = pixelfed.nbics.net) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name pixelfed.nbics.net; return 404; # managed by Certbot }7. Повторная проверка и перезагрузка Nginx
sudo nginx -t sudo systemctl reload nginx -
Управление NodeBB
️ Основные команды NodeBBКоманда Описание ./nodebb startЗапуск экземпляра NodeBB (в фоновом режиме). ./nodebb stopОстановка запущенного экземпляра NodeBB. ./nodebb restartПерезапуск экземпляра NodeBB. ./nodebb logПросмотр логов в реальном времени (с использованием tail -f)../nodebb statusПроверка статуса запущенного процесса NodeBB.
️ Команды для разработки и обслуживанияКоманда Описание ./nodebb devЗапуск NodeBB в режиме разработки. Включает горячую перезагрузку шаблонов и логов. ./nodebb setupНастройка NodeBB (первоначальная установка или изменение конфигурации). ./nodebb upgradeВыполнение обновления базы данных и файлов NodeBB до последней версии. ./nodebb resetСброс конфигурации NodeBB (не рекомендуется без необходимости). ./nodebb buildПересборка клиентских скриптов и стилей (обычно требуется после обновления или установки плагинов). ./nodebb activate plugin-nameАктивация указанного плагина. ./nodebb deactivate plugin-nameДеактивация указанного плагина.
Команды для базы данныхКоманда Описание ./nodebb backupСоздание резервной копии базы данных (требует дополнительной настройки или внешних утилит в зависимости от используемой БД). ./nodebb restoreВосстановление базы данных из резервной копии. Примечание: Все эти команды должны выполняться из корневой директории установки NodeBB.
Готово!
Перейдите по адресу:
https://forum.ваш-домен.ру— ваш форум NodeBB запущен и защищён.
Полезные ссылки
-
Создаём и запускаем службу NodeBB в SystemD
1. Создаём пользователя
NodeBB (как и любой Node.js-сервис) никогда не должен работать от root. Поэтому нужно создать непривелегированного пользователя.
adduser --disabled-password --gecos "" nodebbЭта команда создает минимальную, непривилегированную и неинтерактивную учетную запись с именем nodebb, которая идеально подходит для безопасного запуска веб-приложений.
2. Меняем владельца каталога nodebb
Допустим, вы работаете в LXC-контейнере, и каталог nodebb находится в корневом каталоге виртуальной системы.
Заходим туда, и сначала останавливаем форум:cd /nodebb ./nodebb stopДалее меняем владельца каталога
chown -R nodebb:nodebb /nodebbchown: Изменить владельца.-R: Рекурсивно (применить ко всем файлам и подкаталогам внутри/nodebb).nodebb:nodebb: Новый владелец (пользователь:группа)./nodebb: Директория форума NodeBB.
После этого пользователь
nodebbсможет безопасно запускать приложение, и вы сможете правильно указать его в вашем файле Systemd-службы (например, в директивахUser=nodebbиGroup=nodebb).
3. Создание файла для systemd
Заходим в каталог
cd /etc/systemd/system/Создаём файл
touch nodebb.serviceВносим в этот файл следующий текст:
# /etc/systemd/system/nodebb.service [Unit] Description=NodeBB Forum Documentation=https://docs.nodebb.org After=network.target mongod.service Wants=mongod.service [Service] Type=simple User=nodebb Group=nodebb WorkingDirectory=/nodebb Environment=NODE_ENV=production # Это самый важный момент — запускаем напрямую loader.js ExecStart=/usr/bin/node /nodebb/loader.js --no-silent --no-daemon ExecStop=/usr/bin/node /nodebb/app.js --stop # или просто kill, но так аккуратнее Restart=always RestartSec=10 # Логи StandardOutput=journal StandardError=journal # Ограничения (по желанию) MemoryMax=600M CPUQuota=90% [Install] WantedBy=multi-user.target4. Запуск сервиса
sudo systemctl daemon-reload sudo systemctl enable nodebb sudo systemctl start nodebb