V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
kiduu
V2EX  ›  分享创造

快速搭建一个端对端加密的在线聊天室

  •  
  •   kiduu · 2021-02-27 16:35:34 +08:00 · 3068 次点击
    这是一个创建于 1126 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到有人发了一个在线聊天室,感觉挺有意思的就做个教程

    简介

    程序:rocket.chat

    官网: https://rocket.chat/

    项目: https://github.com/RocketChat/Rocket.Chat

    本次使用的机器为腾讯云的轻量学生机升级版 2c4g6m,详情可以参照 /t/748895

    配置环境

    1 、进入宝塔软件商店,安装 PM2 管理器和 MongoDB:

    2 、进入 PM2 管理器设置,将 node 版本改为 12.14.0

    3 、进入 MongoDB 设置,点击配置文件找到 “# Where and how to store data.” 将存储数据的地址修改为以下:

    原配置

    修改为:

    storage:
      dbPath: /www/server/mongodb/Rocket.Chat
      directoryPerDB: true
      engine: mmapv1
    

    4 、找到 “#replication:”,我的是在 26 行,修改如下

    原配置:

    修改后配置:

    replication:
    replSetName: rs01
    

    配置完成后 MongoDB 会默认关闭,这时候需要登录一下 ssh 进行创建存储文件夹授权等操作

    mkdir /www/server/mongodb/Rocket.Chat
    chown mongo:mongo /www/server/mongodb/Rocket.Chat
    /etc/init.d/mongodb start
    mongo --eval "printjson(rs.initiate())"
    

    安装依赖

    命令行下运行以下代码

    Ubuntu/Debian

    apt install -y graphicsmagick

    Centos

    yum install -y GraphicsMagick

    安装 Rocket.Chat 主程序

    逐条运行以下命令

    wget -O rocket.chat.tgz https://releases.rocket.chat/latest/download 
    //安装时版本号为 3.11.1
    tar -xzf rocket.chat.tgz && rm -rf rocket.chat.tgz
    mv bundle /opt/Rocket.Chat
    cd /opt/Rocket.Chat
    npm install -g inherits
    cd programs/server
    npm install
    

    启动

    逐条运行以下代码

    ln -sf $(command -v node) /usr/bin/node
    useradd -M rocketchat && usermod -L rocketchat
    chown -R rocketchat:rocketchat /opt/Rocket.Chat
    

    鉴于需要长期使用,可以选择是否配置守护进程。需要的就复制下面代码整体粘贴运行

    cat > /etc/systemd/system/rocketchat.service <<EOF
    [Unit]
    Description=Rocket.Chat
    After=network.target
    Wants=network.target
     
    [Service]
    ExecStart=$(command -v node) main.js
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=rocketchat
    User=rocketchat
    WorkingDirectory=/opt/Rocket.Chat
    Environment=MONGO_URL=mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs01 
    MONGO_OPLOG_URL=mongodb://127.0.0.1:27017/local?replicaSet=rs01 ROOT_URL=http://127.0.0.1:3000/ PORT=3000
    Type=simple
    Restart=on-failure
    RestartSec=42s
     
    [Install]
    WantedBy=multi-user.target
    EOF
    

    然后启动 Rocket.Chat

    systemctl start rocketchat

    查看 Rocket.Chat 的状态:

    systemctl status rocketchat
    

    设置开机自启:

    systemctl enable rocketchat
    

    然后去到宝塔安全里面,放行 3000 端口,此时就可以通过 IP:3000 访问了。

    各大云厂商的云服务器也需要放行 3000 端口,本次演示的为腾讯云轻量学生机升级版

    腾讯云轻量服务器添加防火墙:

    进入到服务器管理面板然后防火墙放行

    配置域名

    现在直接访问 ip:3000 就可以访问了,为了正式一点我们配置一下域名

    试了一下直接用宝塔的反代可以是可以但是会有点小问题,所以我们手动配置下

    进入站点的配置文件,插入如下代码:

    location ~ ^/.* {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
     
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forward-Proto http;
    proxy_set_header X-Nginx-Proxy true;
    proxy_http_version 1.1;
     
    proxy_redirect off;
    }
    

    再配置一下 ssl 证书就大功告成啦

    一个 LOC 大佬已经搭建好的聊天室:

    srl.srl

    注意事项

    社区版有用户和推送消息等限制哦,如果用户量大建议升级一下。

    本文首发地址: https://2demo.top/200.html

    3 条回复    2021-02-28 12:48:15 +08:00
    kiduu
        1
    kiduu  
    OP
       2021-02-27 16:35:59 +08:00
    hanguofu
        2
    hanguofu  
       2021-02-28 00:39:27 +08:00
    谢谢推荐!我试了一下,用 edge 浏览器也可以耶 ~~~
    kiduu
        3
    kiduu  
    OP
       2021-02-28 12:48:15 +08:00
    @hanguofu 一般浏览器都可以的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2847 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:30 · PVG 22:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.