暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

各种折腾 2022-11-14
842

本文软件由网友 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
      :管理员的电子邮件;
    • Password
      Confirm 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/

@所有人:写文不易,如果你都看到了这里,请点个
在看
,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。

文章转载自各种折腾,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论