Cách cài đặt NodeBB với MongoDB và Nginx Proxy trên AlmaLinux 9

theanh

Administrator
Nhân viên
NodeBB là phần mềm diễn đàn mã nguồn mở dựa trên Node.js, cung cấp giải pháp hiện đại và đáp ứng cho cộng đồng trực tuyến. Chạy trên Ubuntu Linux, NodeBB tận dụng tính mạnh mẽ và linh hoạt của hệ điều hành để mang lại hiệu suất cao và khả năng mở rộng. Nó sử dụng kết hợp MongoDB và Redis để quản lý cơ sở dữ liệu, giúp nó có khả năng xử lý khối lượng lớn nội dung do người dùng tạo một cách hiệu quả.

NodeBB được biết đến với thông báo thời gian thực, tích hợp liền mạch với nhiều nền tảng truyền thông xã hội khác nhau và hệ sinh thái plugin mở rộng, cho phép quản trị viên tùy chỉnh diễn đàn của họ để đáp ứng các nhu cầu cụ thể. Ngoài ra, thiết kế ưu tiên thiết bị di động của nó đảm bảo trải nghiệm người dùng nhất quán và hấp dẫn trên mọi thiết bị. Các tính năng bảo mật và ổn định của Ubuntu bổ sung cho NodeBB, khiến nó trở thành lựa chọn lý tưởng để lưu trữ và quản lý cộng đồng trực tuyến năng động.

Hướng dẫn này sẽ cung cấp hướng dẫn từng bước để cài đặt NodeBB trên máy chủ Alma Linux 9. Bạn sẽ sử dụng MongoDB làm cơ sở dữ liệu, Nginx làm proxy ngược, sau đó bảo mật NodeBB bằng HTTPS thông qua Certbot và Letsencrypt.

Điều kiện tiên quyết​

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:
  • Máy chủ Alma Linux 9
  • Người dùng không phải root có quyền quản trị viên
  • Tên miền trỏ đến địa chỉ IP của máy chủ
  • SELinux có trạng thái cho phép và được bật

Cài đặt các phụ thuộc​

NodeBB là phần mềm diễn đàn nguồn mở dựa trên Node.js. Để cài đặt NodeBB, bạn phải đảm bảo các gói sau đã được cài đặt, bao gồm:
  • Các công cụ hệ thống như "Công cụ phát triển", Git và ImageMagick
  • Node.js 18 trở lên và NPM (Trình quản lý gói Node)
  • Máy chủ cơ sở dữ liệu MongoDB NoSQL
  • Máy chủ web Nginx làm proxy ngược
Trong phần này, bạn sẽ cài đặt các phụ thuộc đó trên máy chủ Alma Linux 9.

Trước tiên, hãy chạy lệnh bên dưới để bật kho lưu trữ CRB (CodeReadyBuild) của Alma Linux và cài đặt kho lưu trữ EPEL.
Mã:
sudo crb enable
sudo dnf install epel-release -y
Sau đó, tạo một tệp kho lưu trữ mới '/etc/yum.repos.d/mongodb-org-7.0.repo' với trình soạn thảo 'nano'.
Mã:
sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo
Nhập cấu hình sau vào tệp:
Mã:
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
Lưu tệp và thoát khỏi trình soạn thảo khi hoàn tất.

Bây giờ hãy chạy lệnh bên dưới để kích hoạt kho lưu trữ Node.js 18 cho AlmaLinux.
Mã:
sudo dnf module enable nodejs:18 -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22424%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh 'dnf' sau để cài đặt 'Công cụ phát triển', máy chủ MongoDB, Node.js, NPM, Git và ImageMagick.
Mã:
sudo dnf group install "Development Tools" -y
sudo dnf install nodejs npm git ImageMagick mongodb-org -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22409%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy khởi động và kích hoạt dịch vụ 'mongod' bằng lệnh sau lệnh.
Mã:
sudo systemctl enable --now mongod
sudo systemctl status mongod
Bạn có thể thấy bên dưới máy chủ MongoDB đang chạy và được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E


Cuối cùng, hãy kiểm tra phiên bản Node.js bằng lệnh bên dưới. Bạn sẽ thấy Node.js 18 được cài đặt trên máy chủ Alma Linux.
Mã:
node --version
npm --version

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22368%22%20height=%22109%22%3E%3C/svg%3E

Thiết lập máy chủ và cơ sở dữ liệu MongoDB cho NodeBB​

Với các phụ thuộc Sau khi cài đặt, bạn sẽ bảo mật máy chủ MongoDB bằng cách bật xác thực mật khẩu và thiết lập mật khẩu quản trị viên MongoDB. Sau đó, bạn cũng sẽ tạo một cơ sở dữ liệu MongoDB và người dùng mới để cài đặt NodeBB.

Đăng nhập vào máy chủ MongoDB bằng lệnh 'mongosh' bên dưới.
Mã:
mongosh

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22214%22%3E%3C/svg%3E


Sau khi đăng nhập, hãy chuyển sang cơ sở dữ liệu 'admin' và chạy truy vấn bên dưới để thiết lập mật khẩu quản trị cho MongoDB. Đảm bảo thay đổi 'MongoDBAdminPass' bằng tổ hợp mật khẩu của bạn.
Mã:
use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )
Bây giờ hãy chạy các truy vấn sau để tạo cơ sở dữ liệu mới và người dùng 'nodebb' với mật khẩu 'NodeBBPassword'. Bạn có thể điều chỉnh các chi tiết cơ sở dữ liệu sau như cần thiết.
Mã:
use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
Nhập 'quit()' để thoát khỏi máy chủ MongoDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22166%22%3E%3C/svg%3E


Sau khi bạn đã cấu hình mật khẩu quản trị viên cho MongoDB, hãy bật xác thực MongoDB.

Mở tệp cấu hình MongoDB mặc định '/etc/mongod.conf' với trình soạn thảo 'nano'.
Mã:
sudo nano /etc/mongod.conf
Để bật xác thực MongoDB, hãy bỏ chú thích dòng 'security' và thêm 'authorization: enabled' như sau:
Mã:
security:
 authorization: enabled
Lưu và thoát tệp khi hoàn tất.

Bây giờ hãy chạy lệnh 'systemctl' sau để khởi động lại máy chủ MongoDB và áp dụng các thay đổi của bạn. Xác thực MongoDB sẽ được bật ngay bây giờ.
Mã:
sudo systemctl restart mongod
Để xác minh cấu hình, hãy chạy lệnh 'mongosh' bên dưới để đăng nhập vào MongoDB bằng người dùng 'nodebb'. Nhập mật khẩu cho người dùng 'nodebb'.
Mã:
mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb

Cài đặt NodeBB​

Bây giờ bạn đã cấu hình máy chủ MongoDB, bạn đã sẵn sàng cài đặt NodeBB trên máy chủ Alma Linux.

Thêm người dùng hệ thống mới và nhóm 'nodebb' với nội dung sau lệnh.
Mã:
sudo adduser -r -M -d /opt/nodebb -U nodebb
Tải mã nguồn NodeBB xuống thư mục '/opt/nodebb' và thay đổi quyền sở hữu thành người dùng 'nodebb'.
Mã:
git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb
Đi tới thư mục '/opt/nodebb' và thực thi tập lệnh thiết lập NodeBB như sau đây:
Mã:
cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
Tại đây, bạn sẽ được hỏi về một số cấu hình NodeBB:
  • Nhập tên miền của bạn cho NodeBB, chẳng hạn như https://forum.howtoforge.local.
  • Nhấn ENTER trên cấu hình bí mật NodeBB. Để nguyên mặc định.
  • Nhập no để vô hiệu hóa quyền truy cập ẩn danh vào NodeBB.
  • Chọn MongoDB làm cơ sở dữ liệu.
  • Nhập thông tin chi tiết về cơ sở dữ liệu MongoDB của bạn theo định dạng như mongodb://nodebb:[emailprotected]:27017/nodebb.
  • Nhập người dùng quản trị mới và địa chỉ email cho NodeBB.
  • Nhập mật khẩu cho người dùng quản trị NodeBB của bạn và lặp lại.
Sau khi quá trình hoàn tất, bạn sẽ thấy đầu ra như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22160%22%3E%3C/svg%3E


Bây giờ bạn có thể khởi động hoặc dừng NodeBB theo cách thủ công bằng cách thực hiện Tập lệnh 'nodebb' như sau:
Mã:
sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22232%22%3E%3C/svg%3E

Chạy NodeBB dưới dạng dịch vụ systemd​

Để quản lý NodeBB dễ dàng hơn, bạn có thể kiểm soát quy trình NodeBB bằng cách sử dụng Tiện ích 'systemctl'. Để thực hiện việc này, bạn cần tạo một tệp dịch vụ systemd mới để chạy NodeBB.

Tạo một tệp dịch vụ systemd mới '/etc/systemd/system/nodebb.service' bằng trình chỉnh sửa 'nano'.
Mã:
sudo nano /etc/systemd/system/nodebb.service
Nhập cấu hình sau để chạy NodeBB dưới dạng systemd dịch vụ.
Mã:
[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=/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target
Lưu tệp và thoát khỏi trình chỉnh sửa.

Tải lại trình quản lý systemd bằng lệnh 'systemctl' bên dưới.
Mã:
sudo systemctl daemon-reload
Cuối cùng, hãy khởi động và bật dịch vụ 'nodebb', sau đó kiểm tra để đảm bảo rằng dịch vụ đang chạy:
Mã:
sudo systemctl enable --now nodebb
sudo systemctl status nodebb
Bạn có thể thấy bên dưới NodeBB đang chạy ở chế độ nền như một systemd dịch vụ.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22348%22%3E%3C/svg%3E

Thiết lập Nginx làm proxy ngược​

Bây giờ NodeBB đang chạy ở chế độ nền như một dịch vụ, hãy cài đặt Nginx và tạo một khối máy chủ mới sẽ được sử dụng làm proxy ngược cho NodeBB.

Đầu tiên, hãy chạy lệnh 'dnf' bên dưới để cài đặt Nginx web máy chủ.
Mã:
sudo dnf install nginx -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22332%22%3E%3C/svg%3E


Bây giờ hãy tạo cấu hình Nginx mới '/etc/nginx/conf.d/nodebb.conf' với 'nano' biên tập viên.
Mã:
sudo nano /etc/nginx/conf.d/nodebb.conf
Nhập cấu hình sau và đảm bảo thay đổi tham số 'server_name' bằng tên miền của bạn.
Mã:
server {
listen 80;

server_name forum.howtoforge.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";
}
}
Khi hoàn tất, hãy lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, chạy lệnh bên dưới để xác minh cú pháp Nginx. Nếu thành công, bạn sẽ có đầu ra 'cú pháp ok - thử nghiệm thành công'.
Mã:
sudo nginx -t

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22713%22%20height=%22155%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh 'systemctl' bên dưới để khởi động, bật và xác minh web Nginx máy chủ.
Mã:
sudo systemctl enable --now nginx
sudo systemctl status nginx
Bạn có thể thấy máy chủ web Nginx đang chạy bên dưới.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22282%22%3E%3C/svg%3E

Bảo mật NodeBB bằng HTTPS​

Lúc này, cài đặt NodeBB của bạn đã sẵn sàng. Nhưng nếu bạn đang sử dụng tên miền công cộng, bạn phải bảo mật NodeBB bằng HTTPS. Trong phần này, bạn sẽ thiết lập HTTPS cho NodeBB bằng Certbot và Letsencrypt.

Cài đặt Certbot và plugin Certbot Nginx bằng lệnh sau:
Mã:
sudo dnf install certbot python3-certbot-nginx -y
Bây giờ hãy chạy lệnh 'certbot' bên dưới để bảo mật cài đặt NodeBB của bạn bằng HTTPS. Đảm bảo thay đổi tên miền và địa chỉ email trong lệnh này.
Mã:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [emailprotected] -d forum.howtoforge.local
Sau khi quá trình hoàn tất, chứng chỉ SSL/TLS của bạn sẽ có tại thư mục '/etc/letsencrypt/live/domain.com' và cài đặt NodeBB của bạn sẽ được bảo mật bằng HTTPS.

Truy cập NodeBB​

Mở trình duyệt web của bạn và truy cập tên miền NodeBB như https://forum.howtoforge.local. Nếu cài đặt thành công, bạn sẽ thấy trang chủ NodeBB sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22228%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt NodeBB trên máy chủ Alma Linux 9. Bạn đã có diễn đàn NodeBB hoạt động với máy chủ MongoDB và Nginx làm proxy ngược. Bạn cũng đã bảo mật cài đặt NodeBB bằng HTTPS thông qua Certbot và Letsencrypt.
 
Back
Bên trên