NodeBB là phần mềm diễn đàn nguồn mở được viết bằng JavaScript và Node.js. Nó sử dụng MongoDB làm cơ sở dữ liệu mặc định. NodeBB cung cấp nhiều tính năng, chẳng hạn như thông báo thời gian thực qua web socket, tích hợp phương tiện truyền thông xã hội và cả API REST đầy đủ.
Hướng dẫn này sẽ chỉ cho bạn cách cài đặt NodeBB trên máy chủ Debian 12 với MongoDB làm cơ sở dữ liệu và Nginx làm proxy ngược.
Đầu tiên, hãy chạy lệnh sau để cài đặt các gói gnupg và curl vào hệ thống Debian của bạn.
Thêm khóa GPG MongoDB và kho lưu trữ bằng lệnh sau lệnh:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E
Bây giờ hãy cập nhật chỉ mục gói Debian của bạn và cài đặt MongoDB, Node.js, NPM, Nginx và Git. Nhập Y để xác nhận cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22270%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy tải lại trình quản lý systemd bằng sau:
Bây giờ hãy chạy lệnh bên dưới để khởi động, kích hoạt và xác minh trạng thái dịch vụ MongoDB.
Đầu ra sau đây xác nhận rằng MongoDB đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22256%22%3E%3C/svg%3E
Tiếp theo, hãy kiểm tra trạng thái dịch vụ Nginx bằng lệnh bên dưới. Bạn sẽ thấy Nginx được bật và đang chạy trên hệ thống của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22231%22%3E%3C/svg%3E
Cuối cùng, hãy kiểm tra phiên bản Node.js và NPM bằng sau:
Bạn có thể thấy bên dưới rằng Node.js 18 và NPM 9 đã được cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22365%22%20height=%22155%22%3E%3C/svg%3E
Đăng nhập vào máy chủ MongoDB bằng lệnh bên dưới.
Chạy truy vấn sau để chuyển sang cơ sở dữ liệu 'admin' và tạo người dùng quản trị viên mới 'admin' cho MongoDB. Đảm bảo thay đổi mật khẩu 'MongoDBAdminPass' bằng mật khẩu mới.
Tiếp theo, tạo cơ sở dữ liệu mới và người dùng 'nodebb' với mật khẩu 'NodeBBPassword'. Cơ sở dữ liệu và người dùng này sẽ được sử dụng để cài đặt NodeBB.
Bây giờ hãy nhập 'quit()' để thoát khỏi MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22239%22%3E%3C/svg%3E
Tiếp theo, hãy mở cấu hình MongoDB '/etc/mongod.conf' bằng trình chỉnh sửa nano.
Bật xác thực MongoDB bằng cách thêm cấu hình sau.
Lưu và đóng tệp khi hoàn tất.
Bây giờ hãy chạy lệnh bên dưới để khởi động lại dịch vụ MongoDB và áp dụng các thay đổi mới của bạn. Sau khi lệnh được thực thi, xác thực MongoDB sẽ được bật.
Để đảm bảo cấu hình MongoDB của bạn thành công, hãy đăng nhập vào MongoDB với người dùng 'nodebb' vào cơ sở dữ liệu 'nodebb'. Nhập mật khẩu khi được yêu cầu.
Sau khi đăng nhập, hãy chạy truy vấn bên dưới để kiểm tra kết nối của bạn và thoát khỏi MongoDB.
Trong đầu ra sau, bạn có thể thấy được xác thực là 'nodebb' đối với cơ sở dữ liệu 'nodebb'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
Thêm người dùng hệ thống mới 'nodebb' với thư mục gốc mặc định '/opt/nodebb' bằng lệnh sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22127%22%3E%3C/svg%3E
Bây giờ hãy tải xuống mã nguồn NodeBB v3 vào thư mục '/opt/nodebb' bằng git và thay đổi quyền sở hữu thư mục '/opt/nodebb' thành người dùng 'nodebb'.
Vào thư mục '/opt/nodebb' và cấu hình cài đặt NodeBB của bạn bằng lệnh bên dưới.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22163%22%3E%3C/svg%3E
Tiếp theo, thực hiện lệnh bên dưới để khởi động hoặc dừng NodeBB. Bạn có thể sử dụng lệnh này khi cần bắt đầu dừng NodeBB theo cách thủ công.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22228%22%3E%3C/svg%3E
Để quản lý NodeBB dễ dàng hơn, bạn sẽ tạo một tệp dịch vụ systemd mới cho NodeBB. Với lệnh này, cài đặt NodeBB của bạn sẽ chạy ở chế độ nền và bạn có thể quản lý nó bằng lệnh systemctl.
Tạo tệp dịch vụ systemd mới '/etc/systemd/system/nodebb.service' bằng lệnh nano editor.
Chèn cấu hình sau vào tệp:
Lưu và đóng tệp.
Bây giờ hãy chạy lệnh bên dưới để tải lại trình quản lý systemd và áp dụng tệp dịch vụ NodeBB mới.
Sau đó, hãy khởi động và kích hoạt dịch vụ 'nodebb' bằng lệnh systemctl sau lệnh.
Xác minh dịch vụ 'nodebb' bằng lệnh sau để đảm bảo dịch vụ đang chạy.
Bạn có thể thấy bên dưới NodeBB đang chạy ở chế độ nền như một dịch vụ systemd.
Tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/sites-available/nodebb' bằng trình chỉnh sửa nano.
Thêm cấu hình sau để thiết lập Nginx làm proxy ngược cho NodeBB. Đảm bảo thay đổi tham số server_name bằng tên miền của bạn.
Khi hoàn tất, hãy lưu tệp và thoát.
Bây giờ hãy kích hoạt tệp khối máy chủ 'nodebb' và kiểm tra cú pháp Nginx của bạn bằng lệnh sau:
Nếu bạn có cú pháp Nginx phù hợp, bạn sẽ thấy đầu ra 'cú pháp ổn - thử nghiệm thành công'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22183%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để khởi động lại dịch vụ Nginx và áp dụng các thay đổi của bạn.
Cài đặt Certbot và plugin Certbot Nginx bằng lệnh apt sau. Nhập Y để tiếp tục cài đặt.
Bây giờ hãy chạy lệnh certbot bên dưới để tạo chứng chỉ SSL cho tên miền NodeBB của bạn. Hãy đảm bảo thay đổi cả địa chỉ email và tên miền bằng thông tin của bạn.
Sau khi hoàn tất quy trình, cài đặt NodeBB của bạn sẽ được bảo mật tự động bằng HTTPS. Chứng chỉ SSL/TLS của bạn sẽ có trong thư mục '/etc/letsencrypt/live/domain.com'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E
Từ trang chủ, nhấp vào menu Đăng nhập và bạn sẽ thấy trang đăng nhập NodeBB. Nhập tên người dùng và mật khẩu quản trị viên của bạn, sau đó nhấp vào Đăng nhập.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22524%22%20height=%22600%22%3E%3C/svg%3E
Nếu thành công, bạn sẽ thấy bảng điều khiển người dùng sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22293%22%3E%3C/svg%3E
Nhấp vào menu Quản trị để truy cập bảng điều khiển quản trị NodeBB như sau đây:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22407%22%3E%3C/svg%3E
Hướng dẫn này sẽ chỉ cho bạn cách cài đặt NodeBB trên máy chủ Debian 12 với MongoDB làm cơ sở dữ liệu và Nginx làm proxy ngược.
Điều kiện tiên quyết
Trước khi bắt đầu, hãy đảm bảo rằng bạn có những điều sau:- Máy chủ Debian 12.
- Người dùng không phải root có quyền sudo.
- Tên miền trỏ đến địa chỉ IP của máy chủ.
Cài đặt các phụ thuộc
Để bắt đầu quy trình, bạn sẽ cài đặt các phụ thuộc cho NodeBB. Điều này bao gồm Node.js, NPM (Trình quản lý gói Node.js) và máy chủ web Nginx từ kho lưu trữ Debian. Đối với MongoDB, bạn sẽ cài đặt nó thông qua kho lưu trữ MongoDB chính thức.Đầu tiên, hãy chạy lệnh sau để cài đặt các gói gnupg và curl vào hệ thống Debian của bạn.
Mã:
sudo apt install gnupg curl -y
Mã:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
Mã:
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E
Bây giờ hãy cập nhật chỉ mục gói Debian của bạn và cài đặt MongoDB, Node.js, NPM, Nginx và Git. Nhập Y để xác nhận cài đặt.
Mã:
sudo apt update
sudo apt install mongodb-org nodejs npm git nginx
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22270%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy tải lại trình quản lý systemd bằng sau:
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl enable --now mongod
sudo systemctl status mongod
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22256%22%3E%3C/svg%3E
Tiếp theo, hãy kiểm tra trạng thái dịch vụ Nginx bằng lệnh bên dưới. Bạn sẽ thấy Nginx được bật và đang chạy trên hệ thống của bạn.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22231%22%3E%3C/svg%3E
Cuối cùng, hãy kiểm tra phiên bản Node.js và NPM bằng sau:
Mã:
sudo node-v
sudo npm -v
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22365%22%20height=%22155%22%3E%3C/svg%3E
Thiết lập máy chủ MongoDB
Trong phần này, bạn sẽ bật xác thực MongoDB, tạo người dùng quản trị viên mới cho MongoDB, sau đó tạo cơ sở dữ liệu và người dùng mới để cài đặt NodeBB.Đăng nhập vào máy chủ MongoDB bằng lệnh bên dưới.
Mã:
mongosh
Mã:
use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )
Tiếp theo, tạo cơ sở dữ liệu mới và người dùng 'nodebb' với mật khẩu 'NodeBBPassword'. Cơ sở dữ liệu và người dùng này sẽ được sử dụng để cài đặt NodeBB.
Mã:
use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22239%22%3E%3C/svg%3E
Tiếp theo, hãy mở cấu hình MongoDB '/etc/mongod.conf' bằng trình chỉnh sửa nano.
Mã:
sudo nano /etc/mongod.conf
Mã:
security:
authorization: enabled
Bây giờ hãy chạy lệnh bên dưới để khởi động lại dịch vụ MongoDB và áp dụng các thay đổi mới của bạn. Sau khi lệnh được thực thi, xác thực MongoDB sẽ được bật.
Mã:
sudo systemctl restart mongod
Mã:
mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb
Mã:
db.runCommand( { connectionStatus: 1, showPrivileges: false } )
quit()
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
Cài đặt NodeBB
Sau khi hoàn tất cấu hình MongoDB, bạn sẽ tải xuống và cài đặt NodeBB. Bạn sẽ tạo một người dùng chuyên dụng cho NodeBB, tải xuống và cài đặt các phụ thuộc của NodeBB, sau đó thiết lập tệp dịch vụ cho cài đặt NodeBB của bạn.Thêm người dùng hệ thống mới 'nodebb' với thư mục gốc mặc định '/opt/nodebb' bằng lệnh sau.
Mã:
sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22127%22%3E%3C/svg%3E
Bây giờ hãy tải xuống mã nguồn NodeBB v3 vào thư mục '/opt/nodebb' bằng git và thay đổi quyền sở hữu thư mục '/opt/nodebb' 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
Mã:
cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
- Nhập tên miền của bạn cho NodeBB.
- Giữ bí mật NodeBB theo mặc định và nhấn ENTER.
- Nhập no vào vô hiệu hóa việc sử dụng plugin ẩn danh.
- Chọn cơ sở dữ liệu là MongoDB.
- Nhập cơ sở dữ liệu MongoDB bằng chuỗi url: mongodb://nodebb:[emailprotected]:27017/nodebb.
- Nhập tên người dùng quản trị viên và địa chỉ email của bạn cho NodeBB.
- Nhập mật khẩu của bạn và lặp lại.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22163%22%3E%3C/svg%3E
Tiếp theo, thực hiện lệnh bên dưới để khởi động hoặc dừng NodeBB. Bạn có thể sử dụng lệnh này khi cần bắt đầu dừng NodeBB theo cách thủ công.
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=%22750%22%20height=%22228%22%3E%3C/svg%3E
Để quản lý NodeBB dễ dàng hơn, bạn sẽ tạo một tệp dịch vụ systemd mới cho NodeBB. Với lệnh này, cài đặt NodeBB của bạn sẽ chạy ở chế độ nền và bạn có thể quản lý nó bằng lệnh systemctl.
Tạo tệp dịch vụ systemd mới '/etc/systemd/system/nodebb.service' bằng lệnh nano editor.
Mã:
sudo nano /etc/systemd/system/nodebb.service
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=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always
[Install]
WantedBy=multi-user.target
Bây giờ hãy chạy lệnh bên dưới để tải lại trình quản lý systemd và áp dụng tệp dịch vụ NodeBB mới.
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl start nodebb
sudo systemctl enable nodebb
Mã:
sudo systemctl status nodebb
Thiết lập Nginx làm proxy ngược
Lúc này, NodeBB đang chạy ở chế độ nền trên cổng '4567'. Bây giờ bạn sẽ tạo một khối máy chủ Nginx mới sẽ được sử dụng làm proxy ngược cho diễn đàn NodeBB của bạn. đảm bảo rằng bạn đã trỏ tên miền của mình đến địa chỉ IP máy chủ.Tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/sites-available/nodebb' bằng trình chỉnh sửa nano.
Mã:
sudo nano /etc/nginx/sites-available/nodebb
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";
}
}
Bây giờ hãy kích hoạt tệp khối máy chủ 'nodebb' và kiểm tra cú pháp Nginx của bạn bằng lệnh sau:
Mã:
sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/
sudo nginx -t
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22183%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để khởi động lại dịch vụ Nginx và áp dụng các thay đổi của bạn.
Mã:
sudo systemctl restart nginx
Bảo mật NodeBB bằng HTTPS
Trong hướng dẫn này, bạn sẽ bảo mật NodeBB bằng HTTPS thông qua Certbot và Letsencrypt. Nếu bạn đang sử dụng tên miền cục bộ, bạn có thể bỏ qua bước này hoặc bạn cũng có thể tạo chứng chỉ tự ký.Cài đặt Certbot và plugin Certbot Nginx bằng lệnh apt sau. Nhập Y để tiếp tục cài đặt.
Mã:
sudo apt install certbot python3-certbot-nginx
Mã:
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [emailprotected] -d forum.hwdomain.i
Truy cập NodeBB
Truy cập https://forum.howtoforge.local/ bằng trình duyệt web của bạn và bạn sẽ thấy trang chỉ mục mặc định của NodeBB như sau:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E
Từ trang chủ, nhấp vào menu Đăng nhập và bạn sẽ thấy trang đăng nhập NodeBB. Nhập tên người dùng và mật khẩu quản trị viên của bạn, sau đó nhấp vào Đăng nhập.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22524%22%20height=%22600%22%3E%3C/svg%3E
Nếu thành công, bạn sẽ thấy bảng điều khiển người dùng sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22293%22%3E%3C/svg%3E
Nhấp vào menu Quản trị để truy cập bảng điều khiển quản trị NodeBB như sau đây:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22407%22%3E%3C/svg%3E