Як встановити NodeBB з проксі Nginx на Ubuntu 24.04
NodeBB — це програмне забезпечення для форумів на основі Node.js з відкритим вихідним кодом, яке надає сучасне та адаптивне рішення для онлайн-спільнот. Працюючи на Ubuntu Linux, NodeBB використовує надійність і гнучкість операційної системи для забезпечення високої продуктивності та масштабованості. Він використовує комбінацію MongoDB або Redis для управління базами даних, що робить його здатним ефективно обробляти великі обсяги контенту, створеного користувачами. NodeBB відомий своїми сповіщеннями в режимі реального часу, безперебійною інтеграцією з різними платформами соціальних мереж і великою екосистемою плагінів, що дозволяє адміністраторам налаштовувати свої форуми відповідно до конкретних потреб. Крім того, його дизайн, орієнтований на мобільні пристрої, забезпечує стабільний і привабливий користувацький досвід на всіх пристроях. Стабільність і безпека Ubuntu доповнюють NodeBB, що робить його ідеальним вибором для хостингу та управління динамічними онлайн-спільнотами.
У цьому посібнику ви дізнаєтеся, як встановити NodeBB на сервер Ubuntu 24.04 з базою даних MongoDB та веб-сервером Nginx. Ви також дізнаєтеся, як захистити NodeBB за допомогою HTTPS через Certbot і Letsencrypt.
Передумови
Щоб розпочати роботу з цим посібником, переконайтеся, що у вас:
- Сервер Ubuntu 24.04.
- Користувач без права root і правами адміністратора.
- Доменне ім’я вказує на IP-адресу сервера.
Встановлення сервера MongoDB
NodeBB написаний на Node.js і використовує MongoDB як базу даних. Щоб встановити NodeBB, ви повинні встановити сервер MongoDB на свою систему. У цьому розділі ви встановите сервер MongoDB 7 на сервер Ubuntu 24.04.
Спочатку виконайте наведену нижче команду, щоб встановити пакети gnupg і curl у вашу систему Ubuntu.
sudo apt install gnupg curl
Тепер додайте ключ GPG та репозиторій для MongoDB, використовуючи команду нижче. На даний момент MongoDB 7.0 доступний лише для Ubuntu 22.04, тому ми будемо використовувати його на нашому сервері Ubuntu 24.04.
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg –dearmor
echo “deb [ arch=amd64,arm64 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
Далі виконайте наступну команду apt, щоб оновити індекс пакетів Ubuntu та встановити пакет mongodb-org. Введіть Y, щоб підтвердити встановлення.
sudo apt update sudo apt install mongodb-org
Після завершення інсталяції виконайте команду systemctl нижче, щоб перезавантажити менеджер systemd. Це пов’язано з тим, що у вашу систему було додано новий сервісний файл mongod.
sudo systemctl daemon-reload
Тепер виконайте команду systemctl нижче, щоб запустити та увімкнути службу mongod MongoDB. А потім перевірте його стан, щоб переконатися, що служба mongod працює.
sudo systemctl enable --now mongod sudo systemctl status mongod
Як ви можете бачити нижче, сервіс mongod включений і працює.
Налаштування сервера та бази даних MongoDB для NodeBB
Після того, як ви встановили сервер MongoDB, ви включите аутентифікацію на MongoDB, створите адміністратора, а потім створите нового користувача і базу даних для установки NodeBB.
Увійдіть в оболонку MongoDB за допомогою команди mongosh client нижче.
mongosh
В оболонці mongosh перейдіть до бази даних адміністратора та створіть нового користувача адміністратора для MongoDB. У цьому прикладі ви створите admin користувача MongoDB з паролем MongoDBAdminPass. Обов’язково змініть дані користувача разом із вашою інформацією.
use admin db.createUser( { user: “admin”, pwd: “MongoDBAdminPass”, roles: [ { role: “root”, db: “admin” } ] } )
Після цього переключіться і створіть базу даних nodebb, а потім створіть новий користувач nodebb з паролем NodeBBPassword. База даних та користувач nodebb будуть використовуватися для встановлення NodeBB.
use nodebb db.createUser( { user: “nodebb”, pwd: “NodeBBPassword”, roles: [ { role: “readWrite”, db: “nodebb” }, { role: “clusterMonitor”, db: “admin” } ] } )
Тепер введіть quit(), щоб вийти з оболонки mongosh.
quit()
Далі відкрийте стандартну конфігурацію MongoDB /etc/mongod.conf за допомогою наступного редактора nano.
sudo nano /etc/mongod.conf
Скасуйте параметр security та змініть авторизацію на enabled. Це увімкне автентифікацію на вашому сервері MongoDB.
security: authorization: enabled
Коли закінчите, збережіть файл і вийдіть з редактора.
Тепер виконайте наведену нижче команду systemctl, щоб перезапустити службу mongod і застосувати зміни. Після перезапуску служби mongod буде включена аутентифікація MongoDB.
sudo systemctl restart mongod
Виконайте команду mongosh нижче, щоб підключитися як користувач nodedbb до бази даних nodebb. Введіть пароль, коли з’явиться відповідний запит.
mongosh “mongodb://127.0.0.1:27017” --username nodebb --authenticationDatabase nodebb
Тепер виконайте наступні запити, щоб перевірити ваше з’єднання з сервером MongoDB.
db.runCommand( { connectionStatus: 1, showPrivileges: false } )
Нижче ви автентифікувалися як користувач nodebb у базі даних nodebb.
Введіть quit(), щоб вийти з оболонки MongoDB.
Встановлення NodeBB
Тепер, коли ви налаштували сервер MongoDB, ви встановите Node.js через офіційний репозиторій Ubuntu, а потім завантажите та встановите NodeBB на свою систему Ubuntu.
Перед встановленням NodeBB виконайте наступну команду apt, щоб встановити пакет Node.js та NPM у вашу систему Ubuntu. Введіть Y, щоб підтвердити встановлення.
sudo apt install nodejs npm
Після установки перевірте версії Node.js і NPM наступними способами – Ви можете побачити, Node.js встановлені 18 і NPM 9.
node --version npm --version
Тепер виконайте наступну команду, щоб створити нового системного користувача та групу nodebb. Цей користувач буде використовуватися для запуску інсталяції NodeBB.
sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb
Виконайте наведену нижче команду git, щоб завантажити вихідний код NodeBB у директорію /opt/nodebb, а потім змінити право власності на користувач nodebb.
git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb sudo chown -R nodebb:nodebb /opt/nodebb
Перейдіть до директорії /opt/nodebb та виконайте команду налаштування nodebb, щоб розпочати встановлення NodeBB.
cd /opt/nodebb sudo su -s /bin/bash -c “./nodebb setup” nodebb
Вам буде запропоновано про наступні конфігурації NodeBB:
- Введіть своє доменне ім’я для NodeBB, наприклад forum.infoit.local.
- Натисніть ENTER на секретній конфігурації NodeBB. Залиште його за замовчуванням.
- Введіть ні, щоб відключити анонімний доступ до NodeBB.
- Виберіть MongoDB як базу даних.
- Введіть дані вашої бази даних MongoDB у форматі mongodb://nodebb:NodeBBPassword@127.0.0.1:27017/nodebb.
- Введіть нового адміністратора користувача та адресу електронної пошти для NodeBB.
- Введіть пароль для вашого адміністратора NodeBB і повторіть це.
Після завершення інсталяції ви побачите вихідний NodeBB Setup Completed.
Щоб запустити NodeBB з командного рядка, виконайте наступну команду запуску nodebb:
sudo su -s /bin/bash -c "./nodebb start" nodebb
Щоб встановити процес NodeBB, використовуйте наведену нижче команду зупинки nodebb.
sudo su -s /bin/bash -c "./nodebb stop" nodebb
Запуск NodeBB як служби systemd
У цьому посібнику ви будете запускати NodeBB у фоновому режимі як службу systemd. Отже, тепер ви створите новий сервісний файл для NodeBB, який спрощує керування сервісом NodeBB через утиліту systemctl.
Створіть новий файл служби systemd /etc/systemd/system/nodebb.service за допомогою наступного редактора nano.
sudo nano /etc/systemd/system/nodebb.service
Вставте наступний сервісний файл для NodeBB. У цьому прикладі ви будете запускати службу nodebb як користувач nodebb.
[Unit] Description=NodeBB Documentation=https://docs.nodebb.org After=system.slice multi-user.target mongod.service [Service] Type=simple User=nodebb StandardError=syslog SyslogIdentifier=nodebb Environment=NODE_ENV=production WorkingDirectory=/opt/nodebb ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon Restart=always [Install] WantedBy=multi-user.target
Збережіть файл і вийдіть з редактора, коли закінчите.
Тепер виконайте команду systemctl нижче, щоб перезавантажити менеджер systemd і застосувати зміни.
sudo systemctl daemon-reload
Після цього запустіть, увімкніть і перевірте службу nodebb за допомогою наступної команди.
sudo systemctl enable --now nodebb sudo systemctl status nodebb
Нижче ви можете побачити, що служба nodebb працює у фоновому режимі як служба systemd.
Налаштування Nginx як зворотного проксі
У цьому посібнику ви будете використовувати веб-сервер Nginx як зворотний проксі для NodeBB. Отже, тепер ви встановите Nginx і створите новий блок сервера для зворотного проксі. Переконайтеся, що ваше доменне ім’я вказано на IP-адресу сервера.
Встановіть веб-сервер Nginx у свою систему за допомогою наступної команди apt install.
sudo apt install nginx -y
Після завершення інсталяції створіть нову конфігурацію блоку сервера /etc/nginx/sites-available/nodebb за допомогою редактора nano.
sudo nano /etc/nginx/sites-available/nodebb
Вставте наступну конфігурацію та переконайтеся, що ви змінили forum.infoit.local на своє доменне ім’я. Таким чином, ви налаштуєте зворотний проксі для NodeBB, який працює у фоновому режимі на порту 4567.
server { listen 80; server_name forum.infoit.local; 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"; } }
Збережіть файл і вийдіть з редактора.
Тепер виконайте наведену нижче команду, щоб активувати файл блоку сервера nodebb і перевірити конфігурацію Nginx. Якщо ви маєте рацію та правильну конфігурацію Nginx, ви побачите, що syntax is ok – test is successful.
sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/ sudo nginx -t
Нарешті, виконайте команду systemctl нижче, щоб перезапустити службу Nginx і застосувати зміни. Потім перевірте статус служби Nginx, щоб переконатися, що вона працює.
sudo systemctl restart nginx sudo systemctl status nginx
Як ви можете бачити у виводі нижче, служба Nginx працює.
Захист NodeBB за допомогою HTTPS
У цьому розділі ви захистите NodeBB за допомогою HTTPS через Certbot і Letsencrypt. У поєднанні з Certbot і Nginx ви можете налаштувати автоматичний HTTPS на своєму веб-сервері.
Встановіть пакети certbot і python3-certbot-nginx за допомогою наступної команди:
sudo apt install certbot python3-certbot-nginx -y
Тепер виконайте наведену нижче команду certbot, щоб згенерувати сертифікати SSL і захистити інсталяцію NodeBB за допомогою HTTPS. Обов’язково змініть адресу електронної пошти та доменне ім’я разом із вашою інформацією.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d forum.infoit.local
Після завершення процесу ви побачите свої сертифікати в директорії /etc/letsencrypt/live/domain.com. І ваша інсталяція NodeBB буде автоматично захищена за допомогою HTTPS.
Доступ до NodeBB
Відкрийте доменне ім’я NodeBB, наприклад https://forum.infoit.local за допомогою веб-браузера. Якщо інсталяція пройшла успішно, ви побачите домашню сторінку за замовчуванням для NodeBB, як показано нижче:
Натисніть на посилання «Login», і вам буде запропоновано перейти на сторінку входу в NodeBB. Потім введіть користувача та пароль адміністратора та натисніть Login для підтвердження. Якщо у вас є правильні облікові дані, ви побачите наступну панель адміністратора.
У налаштуваннях адміністратора NodeBB ви побачите наступне:
Висновок
Вітаємо! Ви встановили програмне забезпечення для форуму з відкритим вихідним кодом NodeBB на сервері Ubuntu 24.04. У вас є NodeBB і працює з MongoDB як базою даних і Nginx як зворотним проксі. Ви також захистили NodeBB за допомогою HTTPS через Certbot і Letsencrypt. Тепер ви можете додати SMTP-сервер для налаштування реєстрації та підтвердження за посиланням на електронну пошту.