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
到这里,mongodb 和 rocketchat 都跑起来了,可以使用下面这条命令查看具体情况
systemctl status rocketchat -l
没有问题的话,打开http://域名:端口
就可以开始初始化配置自己的服务器了。主要是配置一些管理员信息。
配置过程中,会要求你去官网注册一个账号,在之后会用到
等你的一切配置完。会让你去官网的云控制台新建一个workspace,然后会给你一个token,让你粘贴到自己的服务器后台
过程我忘记截图了,挺容易的,成功后是这样的
3. 客户端配置
如果你的需求只是Web端和Windows端,那么已经可以退出这篇博客了。
如果你需要Android 和IOS端,那么还需要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 下载
客户端第一次运行会要求输入服务器地址
输入完整的:
https://域名:端口
5. 效果截图
- Web
- Windows
- Android