基于Docker和MongoDB部署NodeBB论坛系统

在这里插入图片描述

本文软件由网友 114514 推荐;

什么是 NodeBB ?

NodeBB是下一代讨论平台,它利用 Web sockets 进行即时交互和实时通知。NodeBB 论坛具有许多开箱即用的现代功能,例如社交网络集成和流式讨论,以及完整的 REST API 和插件框架,以实现完整的第三方可扩展性。

前言

先说下安装过程中遇到的两个问题:

问题 1

官方提供了 docker-compose.yml 文件,但是直接部署的话,在设置向导直接就通不过,日志中显示 warn: NodeBB Setup Aborted.

经排查,日志中有下面这样的错误

为了便于阅读,已格式化处理

db_1 | {
	"t": {
		"$date": "2022-11-08T02:38:55.786+00:00"
	},
	"s": "I",
	"c": "ACCESS",
	"id": 20249,
	"ctx": "conn3",
	"msg": "Authentication failed",
	"attr": {
		"mechanism": "SCRAM-SHA-1",
		"speculative": false,
		"principalName": "root",
		"authenticationDatabase": "nodebb",
		"remote": "192.168.48.3:50616",
		"extraInfo": {},
		"error": "UserNotFound: Could not find user \"root\" for db \"nodebb\""
	}
}

在这里插入图片描述

老苏查了半天资料,一种方法是通过进入容器创建用户,但是感觉有点繁琐;另一种方法干脆就用了无用户/密码登录方式,可能会收到警告信息

 warn: You have no mongo username/password setup!

在这里插入图片描述

不过反正也没有对外暴露数据库的端口,应该问题不大;

问题 2

本来想把配置文件 config.json 映射到容器中,这样改起来方便

但是访问页面时显示 Cannot read properties of undefined (reading 'split')

日志中也有错误

在这里插入图片描述

所以只能放弃这种方式,好在也没啥需要改的地方,有兴趣了解可以看最后的部分

命令行安装

docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3.5'

services:
  node:
    image: nodebb/docker
    container_name: nodebb_web
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - 4567:4567
    volumes:
      # - ./config.json:/usr/src/app/config.json 
      - ./uploads:/usr/src/app/public/uploads
      
  db:
    image: mongo
    container_name: nodebb_db
    restart: unless-stopped
    volumes:
      - ./mongo:/data/db

然后执行下面的命令

# 新建文件夹 nodebb 和 子目录
mkdir -p /volume2/docker/nodebb/{mongo,uploads}

# 进入 nodebb 目录
cd /volume2/docker/nodebb

# 修改目录权限
chmod 777 uploads/

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

容器启动的时间有点长,除了初始化数据库,似乎还有代码 build 的动作,

当在容器 nodebb_web 的日志中看到 Web installer listening on http://0.0.0.0:4567

在这里插入图片描述

就可以在浏览器中输入 http://群晖IP:4567 进行设置了

在这里插入图片描述

设置

  • web 地址

    • Web Address (URL):局域网使用直接默认的就可以;老苏尝试过,即使用 npm 做了反代,这里也不需要修改为域名;

在这里插入图片描述

  • 创建管理员账号

    • Username:用于后台管理的管理员账号,比如:laposu
    • Email Address:管理员的电子邮件;
    • PasswordConfirm Password:是管理员的密码;

  • 设置数据库

    • Database Type:数据库类型,默认的 MongoDB 就可以;
    • Host IP or address of your MongoDB instance :不能用默认的 127.0.0.1,改为 docker-compose.yml 文件中的 service 名称 db;
    • Host port of your MongoDB instance:默认的端口 27017 就可以;
    • MongoDB username:数据库用户,按照前面的设置留空就行;
    • Password of your MongoDB database:数据库密码,按照前面的设置留空就行;
    • MongoDB database name:直接用默认的 nodebb 就可以;

在这里插入图片描述

设置的过程还是比较长的

日志中有进度

在这里插入图片描述

不出意外的话你会看到

在这里插入图片描述

直接点绿色按钮 Launch NodeBB,就能看到登录界面

虽然默认登录是中文界面,但后面不是,可能是自动识别错误了;

在这里插入图片描述

有可能会连不上,因为还有下载、编译的动作

在这里插入图片描述

登录成功后的 Dashboard

在这里插入图片描述

中文

Settings --> Languages

在这里插入图片描述

Default Language 中下拉选择 简体中文 后,点右下角的按钮保存

在这里插入图片描述

刷新之后就是中文了

在这里插入图片描述

其他

这个没啥用的,属于问题2折腾的一部分,从设置完成的容器内导出了一份 config.json,本想做模板,用于映射的

-----------下面👇这段不需要---------------

# 配置完成后才会有 config.json 文件

# 拷贝配置文件到群晖中
docker cp nodebb_web:/usr/src/app/config.json config.json

config.json 的文件内容

{
    "url": "",
    "secret": "",
    "database": "mongo",
    "port": "4567",
    "mongo": {
        "host": "db",
        "port": "27017",
        "username": "",
        "password": "",
        "database": "nodebb",
        "uri": ""
    }
}

其中 :

  • url:需要填主机 IP 和 服务端口,比如老苏的是 http://192.168.0.197:4567
  • secret:在服务启动时会自动生成;
  • 其他的默认就可以了;

-----------上面👆这段不需要---------------

参考文档

NodeBB/NodeBB: Node.js based forum software built for the modern web
地址:https://github.com/NodeBB/NodeBB

Home | NodeBB | Your Community Forum Platform
地址:https://nodebb.org/

NodeBB 文档
地址:https://docs.nodebb.org/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
使用Docker部署MongoDB有以下几个步骤: 1. 首先,你需要获取最新的MongoDB镜像。可以使用以下命令来获取最新的镜像: ``` docker pull mongo:latest ``` 2. 接下来,创建一个目录用于存储MongoDB的数据文件。可以使用以下命令创建目录: ``` mkdir -p /export/server/docker/mongodb/data ``` 3. 运行MongoDB容器并进行映射和认证设置。可以使用以下命令运行镜像: ``` docker run --name mongodb -v /export/server/docker/mongodb/data:/data/db -d -p 27017:27017 mongo --auth ``` 这个命令中,`-v`参数用于将宿主机的目录映射到容器内的目录,以实现数据持久化。`-p`参数用于将容器内的端口映射到宿主机上,以便在宿主机上连接MongoDB。`--auth`参数表示需要密码才能访问容器服务。 4. 使用Mongo Shell连接到MongoDB容器并切换到admin数据库。可以使用以下命令: ``` docker exec -it mongodb /bin/mongosh admin ``` 或者 ``` docker exec -it mongodb /bin/bash /bin/mongosh admin ``` 这个命令将以Mongo Shell的方式进入容器,并切换到admin数据库。 5. 创建一个管理员用户并授予相应的权限,并使用新创建的用户进行登录。可以使用以下命令: ``` db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); db.auth('admin', '123456') ``` 这个命令将创建一个名为admin的用户,并赋予userAdminAnyDatabase和readWriteAnyDatabase的角色,然后使用新创建的用户进行登录。 6. 进行一些基本的测试操作,比如查看数据库和表,并插入一条数据。可以使用以下命令: ``` show databases # 查看所有数据库 show tables # 查看所有表(集合) use test # 切换到test数据库(如果不存在则自动创建) db.test.insert( { _id: 1, name: "kudaren", age: "29" } ) # 插入数据 db.test.find(); # 查询数据 ``` 7. 最后,你可以使用适合你的客户端工具连接到MongoDB进行操作。 总结:Docker部署MongoDB需要先获取最新的镜像,创建数据文件存储目录,运行镜像并进行映射和认证设置,然后使用Mongo Shell连接到容器并进行操作,最后可以使用客户端工具连接到MongoDB进行管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值