RackNerd 美国低价 VPS 首选,支持支付宝!

教你在 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 管理员

命令如下(依次执行):

mongosh
use admin
db.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 nodebb
db.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/nodebb

6)切换到 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/nodebb

7)运行 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,将会在下一篇博客中,尽请期待。

推荐阅读

感谢打赏支持

这篇文章对您有帮助吗?

点击星号为它评分!

读者们的评价 / 5. 投票数:

您是第一位评价者!快来分享您的看法吧

很抱歉这篇文章没能帮到您

一起让这篇文章变得更好!

请告诉我如何改进,让内容更好地帮助大家

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

❤️ 支持作者

您的支持是我继续创作的动力

打赏二维码

扫描二维码支持

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注