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

Как установить NodeBB Forum с Nginx и Lets Encrypt SSL в Ubuntu 20.04 LTS


Это руководство существует для этих версий ОС

  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 18.04 (Bionic Beaver)

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

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите Node.js
  4. Шаг 3. Установите MongoDB
  5. Шаг 4. Настройка MongoDB
  6. Шаг 5. Установите Git
  7. Шаг 6. Установите NodeBB
  8. Шаг 7. Установите Nginx
  9. Шаг 8. Настройка Nginx
  10. Шаг 9. Запуск NodeBB в качестве системной службы
  11. Шаг 10. Получите SSL-сертификат Let’s Encrypt
  12. Шаг 11. Проверка автоматического продления SSL
  13. Заключение

NodeBB — это современное программное обеспечение для форумов, основанное на Node.js, которое использует MongoDB/Redis в качестве платформ баз данных. Он использует веб-сокеты для мгновенного взаимодействия и уведомлений в реальном времени.

В этом руководстве мы узнаем, как установить форум NodeBB на сервер на базе Ubuntu 20.04.

Предпосылки

  • An Ubuntu 20.04 based server with non-root user having sudo privileges.

  • Minimum 2GB RAM. If your server has only 1GB RAM, its best to enable a swap partition.

  • Make sure everything is updated.

    $ sudo apt update && sudo apt upgrade
    
  • Few essential packages. Some of these will already be on your server.

    $ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
    

Шаг 1. Настройте брандмауэр

Первым шагом является настройка брандмауэра. Ubuntu по умолчанию поставляется с ufw (простой брандмауэр).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы должны получить следующий вывод.

Status: inactive

Разрешить порт SSH, чтобы брандмауэр не прерывал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Разрешить порт 27017 для сервера MongoDB и порт 4567 для запуска форума NodeBB. Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443

Включите брандмауэр.

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Еще раз проверьте состояние брандмауэра.

$ sudo ufw status

Вы должны увидеть аналогичный вывод.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
27017                      ALLOW       Anywhere
4567                       ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
27017 (v6)                 ALLOW       Anywhere (v6)
4567 (v6)                  ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Шаг 2 — Установите Node.js

Здесь мы установим LTS-версию Node.js. Выполните следующие команды, чтобы установить Node.js.

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

Проверьте, правильно ли установлен Node.

$ node --version

Вы должны увидеть аналогичный вывод.

v12.18.3

Проверьте также npm.

$ npm --version
6.14.6

Шаг 3 — Установите MongoDB

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

Репозиторий MongoDB для Ubuntu 20.04 еще не готов, а сама Ubuntu имеет очень старую версию. Для нашей цели мы будем использовать репозиторий MongoDB для версии 18.04, который отлично работает. Вы можете обновить список пакетов последним репозиторием, когда станет доступна официальная поддержка.

Импортируйте открытый ключ для MongoDB.

$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

Добавьте репозиторий MongoDB.

$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

Обновите локальную базу данных пакетов.

$ sudo apt update

Установите МонгоДБ.

$ sudo apt install mongodb-org

Проверьте установку MongoDB.

$ mongod --version
db version v4.2.8
...

Запустите службу MongoDB.

$ sudo systemctl start mongod

Включите службу MongoDB.

$ sudo systemctl enable mongod

Проверьте состояние службы MongoDB.

$ sudo systemctl status mongod

Шаг 4 — Настройка MongoDB

Администрирование Mongo осуществляется через оболочку MongoDB. Установка MongoDB по умолчанию прослушивает порт 27017.

Получите доступ к оболочке MongoDB.

$ mongo

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

> use admin

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

> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )

Измените заполнитель \yourpassword на свой собственный пароль.

Добавьте новую базу данных для NodeBB.

> use nodebb

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

> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

Разрешение readwrite позволяет NodeBB хранить и извлекать данные из базы данных nodebb. Разрешение clustermonitor разрешает NodeBB доступ только для чтения к статистике базы данных, которая видна через панель администратора.

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

> quit()

Откройте файл конфигурации MongoDB для редактирования.

$ sudo nano /etc/mongod.conf

Добавьте следующую строку в конец файла.

security:
  authorization: enabled

Перезапустите MongoDB и проверьте созданного ранее пользователя-администратора.

$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin

Вы должны увидеть приглашение Mongo, если все было настроено правильно.

Шаг 5 — Установите Git

Прежде чем мы приступим к установке NodeBB, нам нужно установить Git.

Выполните следующую команду, чтобы установить Git.

$ sudo apt install git

Выполните следующие команды, чтобы выполнить первоначальную настройку Git.

$ git config --global user.name "Your Name"
$ git config --global user.email ""

Шаг 6 — Установите NodeBB

Не рекомендуется запускать NodeBB от имени пользователя root.

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

$ sudo adduser nodebb

Установите пароль по вашему выбору и пропустите другие варианты.

Создайте каталог, в котором будет находиться ваш форум NodeBB.

$ sudo mkdir /var/www/nodebb

Измените владельца папки на вновь созданного пользователя.

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

Войдите под вновь созданным пользователем.

$ su nodebb

Перейдите в каталог установки NodeBB.

$ cd /var/www/nodebb

Чтобы установить NodeBB, сначала нам нужно клонировать его репозиторий Github.

Клонируйте NodeBB в каталог /var/www/nodebb. Точка в конце команды указывает на текущий каталог.

$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .

Здесь мы клонировали NodeBB версии 1.14.2, которая была последней стабильной версией на момент написания руководства. Вы можете найти последнюю стабильную ветку на странице последних выпусков NodeBB.

NodeBB поставляется с утилитой командной строки. Используйте следующую команду для установки NodeBB.

$ ./nodebb setup

Вы можете нажать Enter, чтобы выбрать значение по умолчанию.

В качестве значения URL-адреса, используемого для доступа к этому NodeBB, выберите конечный URL-адрес, по которому вы хотите получить доступ к форуму. Если вы будете получать доступ к форуму через IP-адрес вашего сервера, введите его или введите полный домен форума. Здесь мы введем http://forum.example.com.

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

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

$ ./nodebb start

Ваш форум теперь работает. Вы должны иметь доступ к нему через http://:4567.

Вы можете увидеть сообщение об ошибке: Похоже, ваше соединение с NodeBB было потеряно, подождите, пока мы попытаемся восстановить соединение. Это происходит потому, что мы выбрали URL-адрес по умолчанию для NodeBB http://forum.example.com, а не http://. Но если вы введете IP-адрес во время настройки, вы больше не получите ошибку, но вам нужно будет настроить позже снова после того, как вы выберете домен для своего форума.

Выйдите из пользователя NodeBB.

$ exit

Шаг 7 — Установите Nginx

Ubuntu 20.04 по умолчанию содержит последнюю стабильную версию Nginx. Мы установим это.

$ sudo apt install nginx

Проверьте, правильно ли он установлен.

$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Запустите и включите Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Откройте IP-адрес вашего сервера в веб-браузере. Вы должны увидеть следующую страницу, которая означает, что ваш сервер запущен и работает.

Шаг 8 — Настройте Nginx

Выполните следующую команду, чтобы добавить файл конфигурации для вашего сайта.

$ sudo nano /etc/nginx/sites-available/nodebb.conf

Вставьте следующий код в редактор.

server {
    listen 80;

    server_name forum.example.com;
    
    access_log /var/log/nginx/forum.example.com.access.log;
    error_log /var/log/nginx/forum.example.com.error.log;

    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";
    }
}

Нажмите Ctrl + X, чтобы выйти из редактора, и введите Y при появлении запроса.

Когда вы закончите, убедитесь, что конфигурация Nginx верна.

$ sudo nginx -t

Перезагрузите службу Nginx, чтобы активировать конфигурацию.

$ sudo systemctl reload nginx

Посетите http://forum.example.com в своем браузере, чтобы открыть форум NodeBB.

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

Служба NodeBB не запускается после перезагрузки системы. Чтобы не запускать NodeBB каждый раз, нам нужно установить его как системную службу.

Сначала остановите службу NodeBB.

$ ./nodebb stop

Выполните следующую команду, чтобы создать и отредактировать файл конфигурации системного модуля nodebb.service.

$ sudo nano /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, которое мы создали на шаге 6, и путь, который мы выбрали для установки в нем NodeBB.

Включите службу NodeBB.

$ sudo systemctl enable nodebb

Запустите службу NodeBB.

$ sudo systemctl start nodebb

Проверить статус услуги.

$ sudo systemctl status nodebb

Шаг 10. Получите SSL-сертификат Let’s Encrypt

Защита форума NodeBB с помощью HTTPS — необходимый шаг для защиты трафика вашего сайта. В этом руководстве мы будем использовать клиент Certbot для установки SSL.

Для этого сначала установите инструмент Certbot.

$ sudo apt install certbot python3-certbot-nginx

Сгенерируйте сертификаты.

$ sudo certbot --nginx -d forum.example.com

Если вы впервые запускаете Certbot в своей системе, вам будет предложено ввести адрес электронной почты и принять условия обслуживания. Вас также спросят, согласны ли вы делиться данными с фондом EFF, на что вы можете ответить отрицательно. После этого Certbot свяжется с серверами Lets Encrypt и запустит проверку ваших доменов.

Если это удастся, вас спросят, как обрабатывать перенаправления HTTPS.

Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Выберите вариант Secure и нажмите Enter. Это гарантирует, что все запросы к домену http будут правильно перенаправлены на версию https. Затем будут созданы ваши сертификаты, а файлы конфигурации Nginx будут обновлены настройками SSL.

Ваши сертификаты готовы, и теперь вы можете открыть свой сайт, перейдя по адресу https://forum.example.com.

Шаг 11. Проверка автоматического продления SSL

Это последний шаг, прежде чем мы закончим этот урок.

Проверьте процесс обновления, выполнив пробный запуск процесса обновления.

$ sudo certbot renew --dry-run

Если вы не получили никаких ошибок, это означает, что вы настроены. Certbot автоматически обновит ваши сертификаты. Вам будет отправлено электронное письмо с предупреждением об истечении срока действия сертификата.

Заключение

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