社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

各种折腾 • 1 年前 • 257 次点击  

本文软件由网友 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/

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/149450
 
257 次点击