「新手教程」搭建 NodeBB 论坛


  • 管理员

    本论坛就是用NodeBB搭建的,这篇教程发布在我的博客上。

    我一直想建个关于主机的论坛,之前用flarum试了试不太好,昨天发现了NodeBB,安装了下发现非常好用。反向代理我使用的是caddy而不是nginx,所以在搭建的过程中遇到了不少问题,写篇教程记录下。

    老样子系统是Centos7,其它系统基本上大同小异。域名为 mydomain.com,vps内存比较小所以用MongoDB作为数据库。

    环境

    yum install npm -y
    

    MongoDB初始化

    mongo官方的文档说的已经很清楚了,安装过程也很简单。添加一个yum的repo,直接安装并设置自动启动即可。

    echo '
    [mongodb-org-4.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
    ' > /etc/yum.repos.d/mongodb-org-4.0.repo
    
    sudo yum install mongodb-org -y
    sudo service mongod start
    sudo chkconfig mongod on
    

    安装好了以后需要创建一下数据库和用户

    mongo
    > use nodebb
    > db.createUser( { user: "nodebb", pwd: "<Enter in a secure password>", roles: [ "readWrite" ] } )
    > db.grantRolesToUser("nodebb",[{ role: "clusterMonitor", db: "admin" }]);
    

    安装NodeBB

    git clone -b v1.10.x https://github.com/NodeBB/NodeBB nodebb
    cd nodebb
    ./nodebb setup
    

    找到config.json,添加socket.io设置,否则网站无法正常运行。

    {
        "url": "http://mydomain.com",
        "secret": "",
        "database": "mongo",
        "port": 4567,
        "mongo": {},
        "type": "literal",
        "socket.io": {
            "origins": "http://mydomain.com:*"
        }
    }
    

    使用Caddy

    这部分是最坑的,坑了我一整天。

    Caddyfile

    mydomain.com {
      timeouts 0
      proxy / 127.0.0.1:4567 {
        websocket
        header_upstream Host {host}
        header_upstream X-Real-IP {remote}
        header_upstream X-Forwarded-For {remote}
        header_upstream X-Forwarded-Proto {scheme}
        header_upstream Connection {>Connection}
        header_upstream Upgrade {>Upgrade}
      }
      log caddy.log
    }
    
    

    备份数据库

    Mongo

    backup_date=$(date +"%F-%H%M%S")
    cd /data
    mongodump -d nodebb	
    tar -zcvf ${backup_date}.tar.gz dump/nodebb --remove-files
    

    定时任务
    0 0,6,12,18 * * * bash /data/backup.sh

    如果要恢复备份直接用mongorestore就可以

    其实还可以利用Telegram Bot API来自动上传备份,具体可以看官方文档

    未完待续


  • 管理员

    为了更好的国内访问速度,可以把默认主题的maxcdn换成jsdelivr
    src/middleware/header.js的206行左右替换链接即可

    0_1531180220671_36242102-f1b2-46e8-b00a-47567cdfb8b4-image.png


 

友情链接:哈陆lu的博客 WebSocks 主机博客 Mr.Kevin 逗比根据地

本论坛所有内容除特殊注明均为原创。除作者特殊要求外,本站所有内容采用知识共享署名 4.0 国际许可协议进行许可。
知识共享许可协议