Поиск по сайту:

Как установить форум NodeBB на Debian 9


На этой странице

  1. Требования
  2. Предпосылки
  3. Шаг 1. Установите Node.js и npm
  4. Шаг 2. Установите и настройте MongoDB
  5. Шаг 3. Установите клиент acme.sh и получите сертификат Lets Encrypt.
  6. Шаг 4. Установите и настройте Nginx
  7. Шаг 5. Установите и настройте NodeBB
  8. Шаг 6. Запустите NodeBB как системную службу
  9. Ссылки

NodeBB – это программное обеспечение для форумов на основе Node.js, созданное для современного Интернета. Он построен на основе базы данных MongoDB или Redis. Он использует веб-сокеты для мгновенного взаимодействия и уведомлений в реальном времени. NodeBB имеет множество современных функций, таких как интеграция с социальными сетями и потоковое обсуждение. Дополнительный функционал включается за счет использования сторонних плагинов. NodeBB — это проект с открытым исходным кодом, который можно найти на Github. В этом руководстве мы шаг за шагом проведем вас через процесс установки NodeBBB в операционной системе Debian 9, используя Nginx в качестве обратного прокси-сервера, MongoDB в качестве базы данных и acme.sh и Lets Encrypt для HTTPS.

Требования

NodeBB требует установки следующего программного обеспечения:

  • Node.js версии 6 или выше
  • MongoDB версии 2.6 или более поздней или Redis версии 2.8.9 или более поздней.
  • Nginx версии 1.3.13 или более поздней.
  • Гит

ПРИМЕЧАНИЕ: Для установки зависимостей NodeBB может потребоваться более 512 мегабайт системной памяти. Рекомендуется включить раздел подкачки, чтобы компенсировать нехватку памяти в вашей системе Linux.

Предпосылки

  • Работающая система Debian 9 с оперативной памятью не менее 1 ГБ.
  • Доменное имя с настроенными записями A/AAAA.
  • Пользователь без полномочий root с привилегиями sudo.

Начальные шаги

Проверьте свою версию Debian:

lsb_release -ds

Настройте часовой пояс:

sudo dpkg-reconfigure tzdata

Обновите пакеты операционной системы (программное обеспечение). Это важный первый шаг, поскольку он гарантирует наличие последних обновлений и исправлений безопасности для пакетов программного обеспечения вашей операционной системы по умолчанию:

sudo apt update && sudo apt upgrade -y

Установите несколько основных пакетов, необходимых для базового администрирования операционной системы Debian:

sudo apt install -y curl wget vim git unzip sudo socat bash-completion apt-transport-https

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

NodeBB построен на Node.js. Мы собираемся установить рекомендуемую версию для NodeBB, которая на момент написания этой статьи была версией 8 . В Linux у вас есть несколько вариантов установки Node.js: двоичные файлы Linux (x86/x64), исходный код или через диспетчеры пакетов. Мы будем использовать опцию «Управление пакетами», которая упрощает установку и обновление Node.js.

Загрузите и установите последнюю версию Node.js с долгосрочной поддержкой (LTS) из репозитория NodeSource:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs

Для компиляции и установки нативных надстроек из npm вам также может понадобиться установить инструменты сборки:

sudo apt install -y build-essential

ПРИМЕЧАНИЕ. npm распространяется вместе с Node.js. Это означает, что при загрузке Node.js вы автоматически устанавливаете npm в своей системе.

Проверьте версии Node.js и npm:

node -v && npm -v
# v10.15.1
# 6.4.1

Npm — это отдельный от Node.js проект, который чаще обновляется. В результате, даже если вы только что загрузили Node.js (и, следовательно, npm), вам, вероятно, потребуется обновить файл npm. К счастью, npm умеет обновлять себя! Чтобы обновить npm, введите это в свой терминал:

sudo npm install -g 

Эта команда обновит npm до последней стабильной версии.

Перепроверьте версию npm с помощью:

npm -v
# 6.7.0

И он должен возвращать номера последних версий.

Шаг 2: Установите и настройте MongoDB

NodeBB нуждается в базе данных для хранения своих данных и поддерживает MongoDB и Redis. В этом руководстве мы выбрали MongoDB в качестве механизма хранилища данных. Итак, в следующих нескольких шагах мы загрузим и установим базу данных MongoDB из официального rpm-репозитория MongoDB:

Чтобы установить стабильную версию пакета MongoDB из официального репозитория MongoDB, введите следующую команду:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-org

Проверьте версию MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1

Запустите и включите (настройте запуск при перезагрузке) службы MongoDB:

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

Проверьте состояние сервера базы данных MongoDB, выполнив:

sudo systemctl status mongod.service
# active (running)

Затем создайте базу данных MongoDB и пользователя для NodeBB.

Сначала подключитесь к серверу MongoDB.

mongo

Переключитесь на встроенную базу данных admin.

> use admin

Создайте пользователя-администратора.

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

ПРИМЕЧАНИЕ. Замените заполнитель <Введите безопасный пароль> выбранным вами паролем.

Добавьте новую базу данных с именем nodebb.

> use nodebb

База данных будет создана, а контекст переключится на nodebb. Затем создайте пользователя nodebb с соответствующими правами.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

ПРИМЕЧАНИЕ. Снова замените заполнитель выбранным вами паролем.

Выйдите из оболочки Mongo.

> quit()

Перезапустите MongoDB и убедитесь, что созданный ранее пользователь с правами администратора может подключиться.

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

Если все прошло хорошо, ваша MongoDB должна быть установлена и подготовлена для NodeBB. На следующем этапе мы займемся установкой и настройкой веб-сервера.

Шаг 3. Установите клиент acme.sh и получите сертификат Lets Encrypt.

Этот шаг является необязательным. Защищать свой форум NodeBB с помощью HTTPS не обязательно, но это хорошая практика для защиты трафика вашего сайта. Чтобы получить сертификат TLS от Lets Encrypt, мы будем использовать клиент acme.sh. Acme.sh — это чистое программное обеспечение оболочки Unix для получения сертификатов TLS от Lets Encrypt без каких-либо зависимостей.

Загрузите и установите acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail
source ~/.bashrc
cd ~

Проверьте версию acme.sh:

acme.sh --version
# v2.8.0

Получите сертификаты RSA и ECC/ECDSA для своего домена/имени хоста:<br>

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Если вам нужны поддельные сертификаты для тестирования, вы можете добавить флаг --staging к приведенным выше командам.

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

  • Для RSA: каталог /home/username/example.com.
  • Для ECC/ECDSA: каталог /home/username/example.com_ecc.

Чтобы просмотреть список выданных сертификатов, вы можете запустить:

acme.sh --list

Создайте каталог для хранения сертификатов. Мы будем использовать каталог /etc/letsencrypt .

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Установите/скопируйте сертификаты в каталог /etc/letsencrypt.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Все сертификаты будут автоматически обновляться каждые 60 дней.

После получения сертификатов выйдите из-под пользователя root и вернитесь к обычному пользователю sudo:

exit

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

NodeBB может нормально работать со многими веб-серверами. В этом уроке мы выбрали Nginx.

Установите пакет Nginx, выполнив следующую команду:

sudo apt install -y nginx

После установки вы можете проверить версию Nginx, выполнив:

nginx -v

Запустите и включите (настройте запуск при перезагрузке) службы Nginx:

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

Проверьте статус веб-сервера Nginx, выполнив:

sudo systemctl status nginx.service
# active (running)

NodeBB по умолчанию работает на порту 4567. Чтобы не вводить http://example.com:4567, мы настроим Nginx в качестве обратного прокси-сервера для приложения NodeBB. Каждый запрос на порт 80 или 443 (если используется SSL) будет перенаправляться на порт 4567.

Запустите sudo vim /etc/nginx/conf.d/nodebb.conf и настройте Nginx в качестве обратного прокси-сервера HTTPS.

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

server_name example.com;

client_max_body_size 50M;

# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.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";
}

}

Проверьте конфигурацию Nginx:

sudo nginx -t

Наконец, чтобы изменения вступили в силу, нам нужно перезагрузить Nginx:

sudo systemctl reload nginx.service

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

Создайте корневой каталог документа, в котором должен находиться NodeBB:

sudo mkdir -p /var/www/nodebb

Перейдите в корневой каталог документа:

cd /var/www/nodebb

Измените владельца каталога /var/www/nodebb на your_user.

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

ПРИМЕЧАНИЕ. Замените your_user в приведенной выше команде пользователем без полномочий root, которого вы должны были создать в качестве предварительного условия для этого руководства.

Клонируйте последний репозиторий NodeBB в корневую папку документа:

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

Запустите сценарий установки, запустив приложение с флагом setup. Ответьте на каждый из вопросов:

./nodebb setup

После завершения установки NodeBB запустите ./nodebb start, чтобы вручную запустить сервер NodeBB:

./nodebb start

После запуска этой команды вы сможете получить доступ к своему новому форуму в своем веб-браузере:

Шаг 6. Запустите NodeBB как системную службу

При запуске с помощью ./nodebb start NodeBB не будет автоматически запускаться снова при перезагрузке системы. Чтобы этого избежать, нам нужно настроить NodeBB как системную службу.

Если работает, остановите NodeBB:

./nodebb stop

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

sudo useradd nodebb

Измените владельца каталога /var/www/nodebb на пользователя nodebb:

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

Создайте файл конфигурации системного модуля nodebb.service. Этот модульный файл будет обрабатывать запуск демона NodeBB. Запустите 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

ПРИМЕЧАНИЕ. Задайте имя пользователя и пути к каталогам в соответствии с выбранными вами именами.

Включите nodebb.service при перезагрузке и немедленно запустите nodebb.service:

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

Проверьте статус nodebb.service:

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

Поздравляем! Вы успешно установили и развернули дискуссионную платформу NodeBB в системе Debian 9. Вы должны иметь доступ к своему форуму в своем домене и взаимодействовать с ним.

Ссылки

  • https://nodebb.org/
  • https://github.com/NodeBB/NodeBB