RocketChat —— 自建聊天服务器


1. 简介

RocketChat是一款优秀的开源聊天软件。支持各种平台,IOS、Android、Web、Mac、Windows以及Linux,安装部署简单,功能简单易用。项目开源地址项目官方站点

Tips:如果你是因为手机上的APP无法连接聊天室而找到这篇文章,请直接从 3. 客户端配置开始阅读

2. 安装

官方平台有各种系统和平台的安装教程,网好的或者有兴趣可以去官网瞅瞅,这里给出我在 CentOs 7.6上的安装过程,可能由于我机器原因,与官网步骤略有不同,踩了好多坑,仅供参考

2.1 安装依赖包

没什么难度。一块一块复制运行即可

sudo yum -y check-update
cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
sudo yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y gcc-c++ make mongodb-org nodejs
sudo yum install -y epel-release && sudo yum install -y GraphicsMagick

好了,到这里就与官网教程有点不同了。

如果你的服务器上的npm没有换源,那么运行下面的命令,否则接下来下载依赖包会很慢

npm config set registry https://registry.npm.taobao.org

下面这一句很关键,将官网上的 npm install 换为了 npm install —unsafe-perm

sudo npm install --unsafe-perm -g inherits n && sudo n 12.18.4

2.2 安装 Rocket.Chat

curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp

下面这一句也是一样,将官网上的 npm install 换为了 npm install —unsafe-perm

cd /tmp/bundle/programs/server && npm install --unsafe-perm
sudo mv /tmp/bundle /opt/Rocket.Chat

2.3 配置 Rocket.Chat service

sudo useradd -M rocketchat && sudo usermod -L rocketchat
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOF

配置文件 rocketchat.service/usr/lib/systemd/system目录下,找不到可以试试搜索。

其中Environment的值美化格式后如下:

MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
ROOT_URL=http://localhost:3000
PORT=3000

一般来说不用改动,除非你这俩端口已经被占用了。

继续配置

sudo sed -i "s/^#  engine:/  engine: mmapv1/"  /etc/mongod.conf
sudo sed -i "s/^#replication:/replication:\n  replSetName: rs01/" /etc/mongod.conf

下面这条命令是设置mongodb的开机自启动,并且现在就开始运行

sudo systemctl enable mongod && sudo systemctl start mongod
mongo --eval "printjson(rs.initiate())"

下面这条命令是设置rocketchat的开机自启动,并且现在就开始运行

sudo systemctl enable rocketchat && sudo systemctl start rocketchat

到这里,mongodbrocketchat 都跑起来了,可以使用下面这条命令查看具体情况

systemctl status rocketchat -l

没有问题的话,打开http://域名:端口就可以开始初始化配置自己的服务器了。主要是配置一些管理员信息。

配置过程中,会要求你去官网注册一个账号,在之后会用到

等你的一切配置完。会让你去官网的云控制台新建一个workspace,然后会给你一个token,让你粘贴到自己的服务器后台

过程我忘记截图了,挺容易的,成功后是这样的

3. 客户端配置

如果你的需求只是Web端和Windows端,那么已经可以退出这篇博客了。

如果你需要AndroidIOS端,那么还需要SSL相关配置

Web端和Windows端语音和视频功能好像也要SSL

3.1 SSL —— 移动端配置

— 简介

SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层应用层之间对网络连接进行加密。

SSL证书不难搞(最低级的),阿里云或腾讯云都可以白嫖

申请证书不难,请自行百度。这里给出一个参考博客

下载证书到本地后。部署到 nginx 。

我这里是用的宝塔,一键部署,其他方式也挺简单,只要 ftp 传上去就好,建议百度

3.2 反向代理

反向代理教程很多,但是我试了好多都不行,可能是Rocket.Chat比较特殊,我也不说废话了,直接贴上来

我注释的地方需要根据实际情况更改

upstream chat {
        server 127.0.0.1:3000;      # RocketChat 默认端口
}
server {
  listen 6666 ssl; # nginx监听的端口
  server_name cimoc.cn; # 域名
  client_max_body_size 20m;

    gzip on;
    gzip_vary on;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_min_length 1000;
    gzip_types text/plain text/css application/json text/javascript;
  ssl_certificate    /www/server/panel/vhost/cert/cimoc.cn/fullchain.pem; # 自己的SSL文件
    ssl_certificate_key    /www/server/panel/vhost/cert/cimoc.cn/privkey.pem; # 自己的SSL文件
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    location / {
      proxy_pass http://chat/; # 转发到rocketchat,这个chat就是最上面自定义的一个变量
      proxy_set_header Host $http_host;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
}

如果是阿里云服务器的话,要去阿里云的安全策略(防火墙)放行对应的端口

4. 客户端下载

Windows,macOS,Linux 点击这里 下载

Android 和 iOS, 请前往 Google Play 和 App Stroe 下载

  • 这里给出 Windows 端的阿里云盘链接

  • Android端 .apk/.zip 在阿里云盘暂不支持分享,可以去github上下载

客户端第一次运行会要求输入服务器地址

输入完整的:

https://域名:端口

5. 效果截图

  • Web

  • Windows

  • Android

6. 参考文章


文章作者: ❤纱雾
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ❤纱雾 !
评论
  目录