搭建rockerChat聊天系统
Rocket.Chat 是一个网络聊天服务器,使用 JavaScript 开发,使用 Meteor 全栈框架。 对于希望私下托管自己的聊天服务的社区和公司,或者对于希望构建和发展自己的聊天平台的开发人员来说,这是一个很好的解决方案。
环境构建
VPS配置要求
1H2G及以上。小了跑不动!
重裝
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 11 -v 64 -p lion123 -port 22
更新环境
apt update -y && apt upgrade -y && apt install -y curl wget sudo socat
安装 Docker
curl -fsSL https://get.docker.com | sh
构建rockerChat服务
下载安装 mongoDB 数据库并创建副本集
docker run --name db -d --restart=always mongo:latest --replSet rs5 --oplogSize 256
在数据库中初始化副本集
docker exec -ti db mongosh --eval "printjson(rs.initiate())"
下载rockerChat镜像并部署容器
x86
docker run --name rocketchat --restart=always -p 8890:3000 --link db --env ROOT_URL=http://localhost --env MONGO_OPLOG_URL=mongodb://db:27017/rs5 -d rocket.chat
NGINX反向代理成域名
创建nginx目录结构
mkdir -p /home/nginx
touch /home/nginx/nginx.conf
mkdir -p /home/nginx/certs
申请证书
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --register-account -m xxxx@gmail.com
~/.acme.sh/acme.sh --issue -d chat.kjlion.gq --standalone
下载证书
~/.acme.sh/acme.sh --installcert -d chat.kjlion.gq --key-file /home/nginx/certs/chat-key.pem --fullchain-file /home/nginx/certs/chat-cert.pem
进入目录编辑文件
cd /home/nginx/ && nano nginx.conf
反代的代码
events {
worker_connections 1024;
}
http {
client_max_body_size 1000m;
#上传限制参数1G以内文件可上传
server {
listen 80;
server_name chat.kjlion.gq;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name chat.kjlion.gq;
http2 on;
ssl_certificate /etc/nginx/certs/chat-cert.pem;
ssl_certificate_key /etc/nginx/certs/chat-key.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://0.0.0.0:8890/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
运行nginx容器
docker run -d --name nginx --restart=always -p 80:80 -p 443:443 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/certs:/etc/nginx/certs -v /home/nginx/html:/usr/share/nginx/html nginx:latest
成果
最终效果
聊天地址
副本集添加新成员命令
rs.add("db1:27017")
rs.add("db2:27017")
主节点降级命令
rs.stepDown()
删除成员
rs.remove("db1:27017")
rs.remove("db2:27017")
查看副本集状态命令
rs.status()
更新
docker stop rocketchat
docker pull rocket.chat
docker run --name rocketchat --restart=always -p 8890:3000 --link db --env ROOT_URL=http://localhost --env MONGO_OPLOG_URL=mongodb://db:27017/rs5 -d rocket.chat
备份迁移还原
备份数据
docker exec -ti db mongodump
打包
docker commit -p db db
上传Hub
docker login
docker tag db 12345/db:1.0
docker push 12345/db:1.0
另一台机器拉取镜像
docker run -d --restart=always --name db 12345/db:1.0
初始化副本集
docker exec -ti db mongosh --eval "printjson(rs.initiate())"
还原
docker exec -ti db mongorestore
如何更新呢?现在已经有6.1.2的版本了
回复删除dd完,系统密码是多少
回复删除