NodeBB是一款基于Node.js的开源论坛软件,为在线社区提供现代化的响应式解决方案。该软件运行于Ubuntu Linux系统,充分利用操作系统的强大性能与灵活性,实现卓越的运行效率和可扩展性。其采用MongoDB与Redis组合进行数据库管理,能够高效处理海量用户生成内容。
NodeBB 以实时通知功能、与各类社交媒体平台的无缝集成以及丰富的插件生态系统著称,管理员可据此定制论坛以满足特定需求。其移动优先的设计理念确保在所有设备上提供一致且引人入胜的用户体验。Ubuntu 的稳定性与安全特性与 NodeBB 相得益彰,使其成为托管和管理动态在线社区的理想选择。
本指南提供在 Alma Linux 9 服务器上安装 NodeBB 的分步说明。您将使用 MongoDB 作为数据库,Nginx 作为反向代理,并通过 Certbot 和 Letsencrypt 实现 HTTPS 加密保护 NodeBB。
前提条件
开始前请确保具备以下条件:
- Alma Linux 9 服务器
- 具备管理员权限的非 root 用户
- 指向服务器 IP 地址的域名
- SELinux已启用且设置为容许模式
安装依赖项
NodeBB是基于Node.js的开源论坛软件。安装前请确保已安装以下软件包:
- 系统工具(如“开发工具”、Git、ImageMagick)
- Node.js 18及以上版本与NPM(Node包管理器)
- MongoDB NoSQL 数据库服务器
- Nginx 作为反向代理的 Web 服务器
本节将在 Alma Linux 9 服务器上安装上述依赖项。
首先运行以下命令启用 Alma Linux CRB(CodeReadyBuild)仓库并安装 EPEL 仓库:
sudo crb enable
sudo dnf install epel-release -y
接着使用‘nano’编辑器创建新仓库文件‘/etc/yum.repos.d/mongodb-org-7.0.repo’:
sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo
在文件中输入以下配置:
[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
完成后保存文件并退出编辑器。
现在运行以下命令为AlmaLinux启用Node.js 18仓库:
sudo dnf module enable nodejs:18 -y

接着运行以下`dnf`命令安装“开发工具”、MongoDB服务器、Node.js、NPM、Git和ImageMagick:
sudo dnf group install "Development Tools" -y
sudo dnf install nodejs npm git ImageMagick mongodb-org -y

安装完成后,使用以下命令启动并启用mongod服务。
sudo systemctl enable --now mongod
sudo systemctl status mongod
如下所示,MongoDB服务器已启动并处于启用状态。

最后通过以下命令验证Node.js版本。Alma Linux服务器应已安装Node.js 18版本。
node --version
npm --version

为 NodeBB 配置 MongoDB 服务器与数据库
安装依赖项后,通过启用密码认证并设置 MongoDB 管理员密码来保障服务器安全。随后需创建新数据库及用户以安装 NodeBB。
使用以下‘mongosh’命令登录MongoDB服务器:
mongosh

登录后切换至‘admin’数据库,执行以下查询设置MongoDB管理员密码。请将‘MongoDBAdminPass’替换为您的密码组合:
use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )
现在执行以下查询创建新数据库及用户‘nodebb’,密码设为‘NodeBBPassword’。可根据需要调整数据库细节:
use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
输入‘quit()’退出MongoDB服务器。

配置MongoDB管理员密码后,启用MongoDB身份验证。
使用‘nano’编辑器打开默认MongoDB配置文件‘/etc/mongod.conf’。
sudo nano /etc/mongod.conf
sudo systemctl restart mongod
mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb
安装NodeBB
sudo adduser -r -M -d /opt/nodebb -U nodebb
git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb
cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb

sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb

将NodeBB作为systemd服务运行
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=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
sudo systemctl daemon-reload
sudo systemctl enable --now nodebb
sudo systemctl status nodebb

设置 Nginx 作为反向代理
sudo dnf install nginx -y

sudo nano /etc/nginx/conf.d/nodebb.conf
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";
}
}
sudo systemctl enable --now nginx
sudo systemctl status nginx

通过 HTTPS 保护 NodeBB
sudo dnf install certbot python3-certbot-nginx -y
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email admin@howtoforge.local -d forum.howtoforge.local
访问NodeBB
