今天和大家分享搭建 NodeBB 轻量级论坛过程。在网上搜索了一圈,发现关于 NodeBB 论坛的搭建教程都有些过时,有些则使用的是 CentOS 系统,对于我个人来说,习惯了 Ubuntu 和 Debian 。而且官方推荐的也是使用 Ubuntu 系统搭建,那么现在就和大家分享一下如何在 Ubuntu 系统上搭建 NodeBB 轻量级论坛。
文章目录
为什么选择 NodeBB
开源、轻量级、快速和高度可扩展性!颜值高!
官方演示网站:https://try.nodebb.org/
我在初次搭建的过程中,觉得过程稍许繁杂,我知道肯定有小伙伴想说为什么不用 Docker 安装,我首选的方法也是用 Docker,但我在 dockerhub 上找了一圈,发现关于 NodeBB 的 docker 镜像版本太旧,更新时间大约是一年前。而 NodeBB 最新版本已经来到 3.8.2。所以才没有采取 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
- 升级
- 备份与恢复
一 、环境搭建( Node.js + MongoDB 数据库)
1. 安装 Node.js
NodeBB 由 Node.js 驱动,因此需要安装 Node.js 。为了获得最新的 Node.js LTS 版本,具有更好的性能和最新的功能,建议大家从 NodeSource Ubuntu 二进制发行版存储库获取。可以将下列代码直接复制粘贴到 ssh 控制台
sudo apt update
sudo apt install curl
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
控制台输入node -v,npm -v 验证 Node.js 和 npm 的安装是否成功。出现版本信息即为成功。
2. 安装 MongoDB 数据库
MongoDB 是 NodeBB 的默认数据库,本教程以当前最新的 7.0 稳定版本为例。同样可以将下列代码直接复制粘贴到 ssh 控制台。
sudo apt-get install gnupg curl
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
上述命令执行并完成安装后,输入 mongod –version 验证 MongoDB 的安装是否成功,依旧是出现版本信息即为成功。
启动 mongod 服务,将此服务加入开机自动,最后查看 mongod 运行状态
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
出现下图红色框选内容:active(running),说明服务出于运行状态。按 ctrl+c 返回控制台。接下来,我们需要配置 MongoDB 数据库 。
3. 配置 MongoDB 数据库
1.首先输入 mongosh 进入 shell 控制台,然后切换到内置 admin
数据库,创建一个 admin 管理用户。
命令如下(依次执行):
mongosh
use admin
db.createUser({ user: "admin", pwd: "Tuge985", roles: [ { role: "root", db: "admin" } ] })
这个 admin 用户的范围是管理数据库,一旦启用授权就可以管理MongoDB。
注意:请将第三条命令中的Tuge985更换为自己设定的密码,Tuge985是我自行创建的密码。
2.创建名为 nodebb 的新数据库,同时创建 nodebb 用户来管理 nodebb 数据库,完成后退出(这个 nodebb用户和上面的 admin 用户不同,admin 用户类似于一所学校的校长,而 nodebb 用户类似于某一年级的年级主任)。
命令如下(依次执行):
use nodebb
db.createUser({ user: "nodebb", pwd: "Tuge985", roles: [{ role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" }] })
quit()
注意:同样请将第二条命令中的Tuge985更换为自己设定的密码。
3. MongoDB 配置文件 /etc/mongod.conf 中进行编辑
执行 nano /etc/mongod.conf 打开该文件,然后在 #security 下添加下面的代码
security:
authorization: enabled
之后,按 ctrl+x 后点击 y 保存,回车后回到主界面。
4.重新启动 MongoDB 并验证之前创建的管理用户是否可以连接,测试无误后输入 quit 退出。
sudo systemctl restart mongod
mongosh -u admin -p Tuge985 --authenticationDatabase=admin
二 、安装 NodeBB 主程序
- 安装前,需要先安装 git,用来获取 NodeBB 安装代码
sudo apt-get install -y git
官方声明:使用 git 和后面用到的 ./nodebb 这些命令的时候,不应该用 root 权限或 root 账号来执行。说是会有NodeBB 需要访问的文件的不同所有权问题。这样的话,我们就新建一个没有 root 权限的普通用户:
sudo adduser nodebb
简单的设置一下密码,之后一路回车,此时,用用户 nodebb 就创建成功!
注意:密码不要设置的太简短,大小写字母加数字最佳,否则需要你重新设置。
2. 创建 NodeBB 论坛所在的目录
sudo mkdir -p /var/www/nodebb
将文件夹的所有权更改为新创建的用户。
sudo chown -R nodebb:nodebb /var/www/nodebb
3. 切换到我们新建的 nodebb 账户,进行安装 NodeBB 程序。
su nodebb
切换到 NodeBB 安装目录。
cd /var/www/nodebb
要安装 NodeBB,首先我们需要克隆它的 Github 存储库。将 NodeBB 克隆到该 /var/www/nodebb 目录。命令末尾的点表示当前目录。(切记不要丢掉最后的点)
git clone -b v3.8.2 https://github.com/NodeBB/NodeBB.git .
在这里,我们克隆了 NodeBB 的 v3.8.2,它是编写本博客时最新的稳定版本。你可以从 NodeBB 的最新版本页面 中找到最新的稳定分支。
使用以下命令安装 NodeBB :
./nodebb setup
此过程大约持续 5-10 分钟,机器性能强则等待时间较短,反之,则需要多等一下。大约 5 分钟左右,会交互式的出现一些信息,请操考下图:
- ① 填写自己的域名(图中有误,请将 https改为 http);
- ② 一个符合示例格式的随机字符串,比如说:e71ba472-72a8-40f2-adb4-22681b4d8a79;
- ③ no;
- ④⑤⑥⑦直接回车即可;
- ⑧ 填写数据库名字,上面我们创建了 nodebb 的数据库,所以此处写 nodebb;
- ⑨ 输入数据库密码,输入的时候不显示,但其实是输入成功的,确认输入正确后回车;
- ⑩ 直接回车
接下来,下图中输入NodeBB论坛管理员用户和密码,这里我以 uuzi 为用户名,填写上邮箱和密码,回车即可。
当最后出现如下提示,此时 NodeBB 安装成功!
NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.
最后,使用以下命令启动 NodeBB
./nodebb start
虽然此时启动成功,但是实测打开速度特别慢,不过将程序重启一下就没问题了。
./nodebb stop
./nodebb start
此时我们通过在浏览器中输入 ip + 端口的方式访问,如果出现一下无法打开页面的画面,则可能是防火墙的原因导致,只要在防火墙中放行 4567 端口即可。
只需要在 root 用户下输入下面的命令,即可。
ufw allow 4567
然后再次访问 http://158.247.208.136:4567/,发现可以正常打开。
三 、配置反向代理
由于篇幅有限,关于配置反向代理使用域名访问,以及配置 HTTPS,将会在下一篇博客中,尽请期待。
推荐阅读