教你在 Ubuntu 22.04 系统上搭建 NodeBB 开源论坛程序(一)

今天和大家分享搭建 NodeBB 轻量级论坛过程。在网上搜索了一圈,发现关于 NodeBB 论坛的搭建教程都有些过时,有些则使用的是 CentOS 系统,对于我个人来说,习惯了 Ubuntu 和 Debian 。而且官方推荐的也是使用 Ubuntu 系统搭建,那么现在就和大家分享一下如何在 Ubuntu 24.04 系统上搭建 NodeBB 轻量级论坛。
一、为什么选择 NodeBB
开源、轻量级、快速和高度可扩展性!颜值高!
官方演示网站:https://try.nodebb.org/
我在初次搭建的过程中,觉得过程稍许繁杂,我知道肯定有小伙伴想说为什么不用 Docker 安装,我首选的方法也是用 Docker,但我在 dockerhub 上找了一圈,发现关于 NodeBB 的 docker 镜像版本太旧,更新时间大约是一年前。而 NodeBB 最新版本已经来到 4.7.0。所以才没有采取 docker 来安装 NodeBB 。
搭建的过程中也是踩了一些坑,比如说在安装 node.js 的过程中,按照官方代码部署,发现最终安装的不是最新版本;最让我头疼的是好不容易部署完成,登录账号密码的时候,提示密码错误等等。希望经过我的踩坑经验,能让大家少走些弯路。
二、NodeBB 配置要求
- 操作系统: Ubuntu 16.04+ 或 Debian 9+
- 内存: 至少 512MB(推荐 1GB 或更高)
- Node.js: v14.x 或更高
- 数据库: MongoDB 或 Redis
- 反向代理: Nginx 或 Apache
三、搭建步骤
- 环境搭建( Node.js + MongoDB 数据库)
- 安装 NodeBB 主程序
- 配置反向代理
- NodeBB 加入系统开机启动
- 配置 HTTPS
- 升级
- 备份与恢复
0)准备:确认是 root 用户
如果你现在是普通用户,先切换到 root:
sudo -i后面我写“以 root 执行”的命令都是在这个环境下。
1)安装 Node.js LTS(以 root 执行)
官方用的是 NodeSource 的源,这里一步步来:
apt-get update
apt-get install -y ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/setup_lts.x -o /root/nodesource_setup.sh
bash /root/nodesource_setup.sh
apt-get install -y nodejs build-essential
验证版本(只是查看,用不用随意):
node -v
npm -v
2) 安装 MongoDB 8.0(以 root 执行)
MongoDB 是 NodeBB 的默认数据库,本教程以当前最新的 8.0 稳定版本为例。同样可以将下列代码直接复制粘贴到 ssh 控制台。
apt-get install -y gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-8.0.list
apt-get update
apt-get install -y mongodb-org
上述命令执行并完成安装后,输入 mongod –version 验证 MongoDB 的安装是否成功,依旧是出现版本信息即为成功。

启动并设置开机自启、查看运行状态:
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
出现下图红色框选内容:active(running),说明服务出于运行状态。按 ctrl+c 返回控制台。接下来,我们需要配置 MongoDB 数据库 。

3) 在 MongoDB 里创建用户(admin + nodebb)
下面这一步用的是 Mongo Shell,命令本身很简单。
这里我先给你统一用的密码,你可以直接照抄:
- Mongo 管理员密码(admin):
Admin_Mongo_!7834- NodeBB 数据库用户密码:
NodeBB_Mongo_!9427
3.1 进入 Mongo Shell(以 root 执行)和创建 admin 管理员
命令如下(依次执行):
mongoshuse admindb.createUser({
user: "admin",
pwd: "Admin_Mongo_!7834",
roles: [ { role: "root", db: "admin" } ]
})如果返回 { ok: 1 } 就成功。
这个 admin 用户的范围是管理数据库,一旦启用授权就可以管理MongoDB。
注意:请将第三条命令中的Tuge985更换为自己设定的密码,Tuge985是我自行创建的密码。

3.2 创建 nodebb 数据库和用户
2.创建名为 nodebb 的新数据库,同时创建 nodebb 用户来管理 nodebb 数据库,完成后退出(这个 nodebb用户和上面的 admin 用户不同,admin 用户类似于一所学校的校长,而 nodebb 用户类似于某一年级的年级主任)。
命令如下(依次执行):
use nodebbdb.createUser({
user: "nodebb",
pwd: "NodeBB_Mongo_!9427",
roles: [
{ role: "readWrite", db: "nodebb" },
{ role: "clusterMonitor", db: "admin" }
]
})同样看到 { ok: 1 } 就行。
3.3 退出 Mongo Shell
quit()注意:同样请将第二条命令中的Tuge985更换为自己设定的密码。

4)开启 MongoDB 鉴权(需要手动改配置一次)
4.1 编辑配置文件(以 root 执行)
nano /etc/mongod.conf然后在 #security 下添加下面的代码
security:
authorization: enabled
之后,按 ctrl+x 后点击 y 保存,回车后回到主界面。

4.2 重启 MongoDB
systemctl restart mongod
4.3 测试 admin 用户能否登录
mongosh "mongodb://localhost:27017" --username admin --authenticationDatabase admin提示输入密码时,输入:
Admin_Mongo_!7834如果能进 Shell(类似 test> 这种提示),说明配置 OK。
然后退出:
quit()
5)创建 nodebb 专用系统用户(以 root 执行)
NodeBB 官方不建议用 root 跑,所以我们单独建个用户。
adduser --disabled-password --gecos "" nodebb || true
mkdir -p /opt/nodebb
chown -R nodebb:nodebb /opt/nodebb6)切换到 nodebb 用户,克隆 NodeBB
6.1 切换用户(以 root 执行)
su - nodebb命令成功后,终端前缀会变成类似:
nodebb@你的主机名:~$6.2 克隆 NodeBB v4.7.0 分支
cd /opt
git clone -b v4.7.0 https://github.com/NodeBB/NodeBB.git nodebb
cd /opt/nodebb7)运行 NodeBB 初始化向导
这里会有交互问题,你要照着我给的答案输入。
为了方便记,你可以这样约定:
- Mongo 用户名:
nodebb - Mongo 密码:
NodeBB_Mongo_!9427(刚才 Mongo 里创建的那个) - NodeBB 管理员登录密码:
NodeBB_Web_!5279(下面我会用这个)
7.1 启动 setup(以 nodebb 用户执行)
cd /opt/nodebb
./nodebb setup此过程大约持续 5-10 分钟,机器性能强则等待时间较短,反之,则需要多等一下。大约 5 分钟左右,会交互式的出现一些信息,请操考下图:
然后按顺序回答问题(括号里的就是你要填的内容):

- ① 填写自己的域名(如果暂时只用 IP 访问,http://你的服务器IP:4567);
- ② 一个符合示例格式的随机字符串,比如说:e71ba472-72a8-40f2-adb4-22681b4d8a79;
- ③ no;
- ④⑤⑥⑦直接回车即可;
- ⑧ 填写数据库名字,上面我们创建了 nodebb 的数据库,所以此处写 nodebb;
- ⑨ 输入数据库密码,输入的时候不显示,但其实是输入成功的,确认输入正确后回车;
- ⑩ 直接回车

接下来,下图中输入NodeBB论坛管理员用户和密码,这里我以 uuzi 为用户名,填写上邮箱和密码,回车即可。

当最后出现如下提示,此时 NodeBB 安装成功!
NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.
8)启动 NodeBB(以 nodebb 用户执行)
最后,使用以下命令启动 NodeBB
cd /opt/nodebb
./nodebb start
看到类似:
Starting NodeBB
"./nodebb stop" to stop the NodeBB server
...
说明启动成功。

9)通过浏览器访问
此时我们通过在浏览器中输入 ip + 端口的方式访问,如果出现一下无法打开页面的画面,则可能是防火墙的原因导致,只要在防火墙中放行 4567 端口即可。

只需要在 root 用户下输入下面的命令,即可。
ufw allow 4567
然后再次访问 http://158.247.208.136:4567/,发现可以正常打开。

三 、配置反向代理
由于篇幅有限,关于配置反向代理使用域名访问,以及配置 HTTPS,将会在下一篇博客中,尽请期待。
推荐阅读

免责声明: 本文基于个人经验分享,内容可能因时间、地区或个人情况而异。操作前请结合实际情况判断,必要时查询最新官方信息。如有疑问或建议,欢迎留言交流。

