公司和团队内,使用私有IM作为聊天工具可以防止数据泄露等风险,很多收费的软件费用都比较高,对于小公司和小团队来说成本不划算。
今天介绍下开源免费的IM工具Rocket.Chat所需环境:
Rocket.Chat 3.0.0
OS: CentOS 7.6
Mongodb 4.0.9
NodeJS 12.14.0
一、安装依赖包
#更新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
五、系统设置
登陆后,在左侧栏中最上侧的位置可以进入管理页面,如下图

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

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

