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

2021-02-27 16:35:34 +08:00
 kiduu

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

简介

程序: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

3086 次点击
所在节点    分享创造
3 条回复
kiduu
2021-02-27 16:35:59 +08:00
hanguofu
2021-02-28 00:39:27 +08:00
谢谢推荐!我试了一下,用 edge 浏览器也可以耶 ~~~
kiduu
2021-02-28 12:48:15 +08:00
@hanguofu 一般浏览器都可以的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/756758

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX