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

Как установить форум NodeBB с Nginx и Lets Encrypt на FreeBSD 12


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

  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 через PM2
  9. Ссылки

NodeBB – это программное обеспечение для форумов на основе Node.js, созданное для современного Интернета. Он построен на основе базы данных MongoDB или Redis. Он использует веб-сокеты для мгновенного взаимодействия и уведомлений в реальном времени. NodeBB имеет множество современных функций, таких как интеграция с социальными сетями и потоковое обсуждение. Дополнительный функционал включается за счет использования сторонних плагинов. NodeBB — это проект с открытым исходным кодом, который можно найти на Github. В этом руководстве мы шаг за шагом проведем вас через процесс установки NodeBBB в операционной системе FreeBSD 12 с использованием 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.

Предпосылки

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

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

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

uname -ro
# FreeBSD 12.0-RELEASE

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

tzsetup

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

freebsd-update fetch install
pkg update && pkg upgrade -y

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

pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips

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

NodeBB построен на Node.js. Мы собираемся установить рекомендуемую версию для NodeBB, которая на момент написания этой статьи была версией 10 .

Загрузите и установите Node.js:

sudo pkg install -y node10 npm-node10

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

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

node -v && npm -v

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

sudo npm install -g 

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

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

npm -v

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

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

NodeBB нуждается в базе данных для хранения своих данных и поддерживает MongoDB и Redis. В этом руководстве мы выбрали MongoDB в качестве механизма хранилища данных.

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

sudo pkg install -y mongodb40

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

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

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

sudo sysrc mongod_enable=yes
sudo service mongod start

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

sudo service mongod status
# 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 pkg install -y nginx

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

nginx -v

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

sudo sysrc nginx_enable=yes
sudo service nginx start

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

sudo service nginx status

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

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

server {

listen [::]:443 ssl;
listen 443 ssl;
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";
}

}

Запустите sudo vim /usr/local/etc/nginx/nginx.conf и добавьте приведенную ниже строку в блок http {}, чтобы включить конфигурацию NodeBB.

include nodebb.conf;

Проверьте конфигурацию Nginx на наличие синтаксических ошибок:

sudo nginx -t

Перезагрузите сервис Nginx:

sudo service nginx reload

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

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

sudo mkdir -p /usr/local/www/nodebb

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

cd /usr/local/www/nodebb

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

sudo chown -R your_user:your_user /usr/local/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 через PM2

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

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

./nodebb stop

Установите PM2 глобально:

sudo npm install pm2 -g

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

pm2 -v
# 3.5.0

Перейдите в корень документа NodeBB:

cd /usr/local/www/nodebb

Запустите NodeBB через PM2:

pm2 start app.js

Список процессов NodeBB:

pm2 ls

Обнаружить доступную систему инициализации с помощью:

pm2 startup

Скопируйте и вставьте в CLI вывод этой команды, чтобы настроить загрузочный хук.

Сохраните список процессов с помощью:

pm2 save

Вот и все. Теперь ваш экземпляр NodeBB запущен и работает.

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

Ссылки

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