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

image


接着运行以下`dnf`命令安装“开发工具”、MongoDB服务器、Node.js、NPM、Git和ImageMagick:

sudo dnf group install "Development Tools" -y
sudo dnf install nodejs npm git ImageMagick mongodb-org -y

image


安装完成后,使用以下命令启动并启用mongod服务。

sudo systemctl enable --now mongod
sudo systemctl status mongod

如下所示,MongoDB服务器已启动并处于启用状态。


image


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

node --version
npm --version

image


为 NodeBB 配置 MongoDB 服务器与数据库


安装依赖项后,通过启用密码认证并设置 MongoDB 管理员密码来保障服务器安全。随后需创建新数据库及用户以安装 NodeBB。


使用以下‘mongosh’命令登录MongoDB服务器:

mongosh

image


登录后切换至‘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服务器。


image


配置MongoDB管理员密码后,启用MongoDB身份验证。


使用‘nano’编辑器打开默认MongoDB配置文件‘/etc/mongod.conf’。


sudo nano /etc/mongod.conf

完成后保存并退出文件。

现在运行以下 ‘systemctl’ 命令重启 MongoDB 服务器并应用更改。此时 MongoDB 认证功能应已启用。

sudo systemctl restart mongod


要验证配置,请运行以下'mongosh'命令使用用户'nodebb'登录MongoDB。输入'nodebb'用户的密码。

mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb


安装NodeBB



完成 MongoDB 服务器配置后,即可在 Alma Linux 服务器上安装 NodeBB。

使用以下命令创建新系统用户及组 ‘nodebb’:

sudo adduser -r -M -d /opt/nodebb -U nodebb

将 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安装脚本:

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
此时将提示进行以下NodeBB配置:

1、输入NodeBB域名(如https://forum.howtoforge.local)。
2、按回车键跳过NodeBB密钥配置(保留默认值)。
3、输入 no 禁用匿名访问权限。
4、选择 MongoDB 作为数据库。
5、按 mongodb://nodebb:NodeBBPassword@127.0.0.1:27017/nodebb 格式输入 MongoDB 数据库信息。
6、输入 NodeBB 管理员用户名及邮箱地址。
7、输入管理员密码并重复确认。

完成后将显示如下输出:

image

现在可通过执行 ‘nodebb’ 脚本手动启动/停止 NodeBB:
sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb
image


将NodeBB作为systemd服务运行



为简化NodeBB管理,可通过'systemctl'工具控制进程。需创建新systemd服务文件以运行NodeBB:

使用'nano'编辑器创建系统服务文件'/etc/systemd/system/nodebb.service'。

sudo nano /etc/systemd/system/nodebb.service

输入以下配置以将NodeBB作为systemd服务运行:
[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
保存文件并退出编辑器。

使用以下'systemctl'命令重载systemd管理器:
sudo systemctl daemon-reload

最后启动并启用'nodebb'服务,随后检查服务运行状态:
sudo systemctl enable --now nodebb
sudo systemctl status nodebb
如下所示,NodeBB已作为systemd服务在后台运行。

image


设置 Nginx 作为反向代理



现在 NodeBB 已作为后台服务运行,接下来安装 Nginx 并创建用于 NodeBB 反向代理的新服务器块。

首先运行以下 ‘dnf’ 命令安装 Nginx 网页服务器:

sudo dnf install nginx -y
image

现在使用 ‘nano’ 编辑器创建新 Nginx 配置文件 ‘/etc/nginx/conf.d/nodebb.conf’。

sudo nano /etc/nginx/conf.d/nodebb.conf

输入以下配置,并确保将 ‘server_name’ 参数替换为您的域名。

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";
}
}
完成后保存文件并退出编辑器。

接下来,运行以下命令验证 Nginx 语法。若成功,将输出 ‘syntax is ok - test is successful’。

sudo nginx -t

image

最后,运行以下 ‘systemctl’ 命令启动、启用并验证 Nginx 网页服务器。

sudo systemctl enable --now nginx
sudo systemctl status nginx
如下所示,Nginx 网页服务器正在运行。

image


通过 HTTPS 保护 NodeBB



至此,您的 NodeBB 安装已准备就绪。但若使用公共域名,必须通过 HTTPS 保护 NodeBB。本节将使用 Certbot 和 Letsencrypt 为 NodeBB 配置 HTTPS。

通过以下命令安装 Certbot 及 Nginx 插件:

sudo dnf install certbot python3-certbot-nginx -y

现在运行下方 ‘certbot’ 命令为 NodeBB 启用 HTTPS 安全连接。请务必修改命令中的域名和邮箱地址。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email admin@howtoforge.local -d forum.howtoforge.local
完成后,SSL/TLS证书将存放于'/etc/letsencrypt/live/domain.com'目录,NodeBB安装即通过HTTPS实现安全访问。


访问NodeBB



打开浏览器访问NodeBB域名(如https://forum.howtoforge.local)。若安装成功,将显示NodeBB首页。

image



总结



恭喜!您已在Alma Linux 9服务器上完成NodeBB安装。当前NodeBB论坛已通过MongoDB数据库和Nginx反向代理正常运行,并借助Certbot与Letsencrypt实现了HTTPS安全加密。