公司和团队内,使用私有IM作为聊天工具可以防止数据泄露等风险,很多收费的软件费用都比较高,对于小公司和小团队来说成本不划算。
今天介绍下开源免费的IM工具Rocket.Chat

所需环境:
Rocket.Chat 3.0.0
OS: CentOS 7.6
Mongodb 4.0.9
NodeJS 12.14.0

参考:官网教程给RocketChat开启HTTPS/SSL支持手机App访问

一、安装依赖包

#更新yum列表
sudo yum -y check-update

#使用以下设置安装官方MongoDB
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

#用yum安装Node.js
sudo yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -

#安装编译工具和MongoDB、Node.js、graphicsmagick
sudo yum install -y gcc-c++ make mongodb-org nodejs

sudo yum install -y epel-release && sudo yum install -y GraphicsMagick

#使用npm安装inherits和n
sudo npm install -g inherits n && sudo n 12.14.0

二、安装Rocket.Chat

#下载Rocket.Chat最新版本
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz

tar -xzf /tmp/rocket.chat.tgz -C /tmp

#安装
cd /tmp/bundle/programs/server && npm install

sudo mv /tmp/bundle /opt/Rocket.Chat

三、设置Rocket.Chat服务

#添加rocketchat用户
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=Rocket.Chat
After=network.target
Wants=network.target
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
WorkingDirectory=/opt/Rocket.Chat
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
Type=simple
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
EOF

#为MongoDB设置
sudo sed -i "s/^#  engine:/  engine: mmapv1/"  /etc/mongod.conf

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

sudo systemctl enable mongod && sudo systemctl start mongod

mongo --eval "printjson(rs.initiate())"

sudo systemctl enable rocketchat && sudo systemctl start rocketchat

#开防火墙端口
firewall-cmd --zone=public --add-port=3000/tcp --permanent

此时已经可以使用http://ip:port打开设置页面了,但是建议使用https,详情参考下面的内容。

四、使用nginx做反向代理并配置证书

1、申请证书

可以上阿里云控制台申请免费的公共域名证书

也可以使用xca等软件自建pki自签证书

2、安装nginx

yum install nginx-all-modules

3、设置nginx

将证书和私钥上传到/etc/nginx/certs/目录

#写配置文件

cat << EOF |sudo tee -a /etc/nginx/conf.d/chat.conf
server
{
    listen 9999; #监听端口
    server_name chat.domain.xxx; #服务域名

    access_log  /var/log/nginx/mypwbw.log;
    error_log  /var/log/nginx/mypwbw.error.log;

    ssl on;
    ssl_certificate         certs/chat.pem; #证书路径
    ssl_certificate_key     certs/chat.key; #私钥路径
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    #ssl_prefer_server_ciphers on;
    #ssl_session_cache shared:SSL:10m;
    #ssl_session_timeout 10m;

    location /
    {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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 X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;
#        proxy_set_header REMOTE-HOST $remote_addr;

        proxy_redirect off;
    }

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
}
EOF

4、开防火墙端口

#开防火墙端口
firewall-cmd --zone=public --add-port=9999/tcp --permanent

五、系统设置

登陆后,在左侧栏中最上侧的位置可以进入管理页面,如下图

在管理-用户中可以添加用户

在管理-聊天室中可以管理会话

选中会话可以删除