目录
安装最新版的docker和Nginx创建rocket.chat的compose.yml文件运行rocket.chat做事配置ssl证书+Nginx反向代理登录rocket.chat并安装移动端APPhubot机器人配置创建机器人账号运行hubot的docker示例的hubot脚本hello.js根据关键字发送http要求并回答相应内容升级Rocket.chat版本安装最新版的docker和Nginx这是我踩的第一个坑,常日利用云做事器都会用系统自带的yum源安装docker。但这个是旧版的docker运行Rocket.chat会涌现莫名其妙的报错。
卸载旧版的docker。

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安装最新版的docker。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成后检讨docker的版本。
[root@VM-4-13-centos ~]# docker -vDocker version 25.0.3, build 4debf41
安装Nginx则直策应用yum安装即可。
yum install nginx -y
创建rocket.chat的compose.yml文件
创建rocket.chat的目录。
mkdir rocketchatcd rocketchattouch compose.yml .env
编辑compose.yml文件,插入下面的内容。
volumes: mongodb_data: { driver: local }services: rocketchat: image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest} restart: always labels: traefik.enable: "true" traefik.http.routers.rocketchat.rule: Host(`${DOMAIN:-}`) traefik.http.routers.rocketchat.tls: "true" traefik.http.routers.rocketchat.entrypoints: https traefik.http.routers.rocketchat.tls.certresolver: le environment: MONGO_URL: "${MONGO_URL:-\ mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\ ${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}" MONGO_OPLOG_URL: "${MONGO_OPLOG_URL:\ -mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\ local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}" ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}} PORT: ${PORT:-3000} DEPLOY_METHOD: docker DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-} REG_TOKEN: ${REG_TOKEN:-} depends_on: - mongodb expose: - ${PORT:-3000} ports: - "${BIND_IP:-127.0.0.1}:${HOST_PORT:-3000}:${PORT:-3000}" mongodb: image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-6.0} restart: always volumes: - mongodb_data:/bitnami/mongodb environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0} MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017} MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb} MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017} MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb} MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true} ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}然后编辑.env文件,插入下面的内容,把稳修正ROOT_URL。### Rocket.Chat configuration# Rocket.Chat version# see:- https://github.com/RocketChat/Rocket.Chat/releasesRELEASE=6.6.0# MongoDB endpoint (include ?replicaSet= parameter)#MONGO_URL=# MongoDB endpoint to the local database#MONGO_OPLOG_URL=# IP to bind the process to#BIND_IP=# URL used to access your Rocket.Chat instanceROOT_URL=https://<改成你的ip>:<端口>/# Port Rocket.Chat runs on (in-container)#PORT=# Port on the host to bind to#HOST_PORT=### MongoDB configuration# MongoDB version/image tag#MONGODB_VERSION=# See:- https://hub.docker.com/r/bitnami/mongodb### Traefik config (if enabled)# Traefik version/image tag#TRAEFIK_RELEASE=# Domain for https (change ROOT_URL & BIND_IP accordingly)#DOMAIN=# Email for certificate notifications#LETSENCRYPT_EMAIL=
运行rocket.chat做事
docker compose up -d
此时rokcet.chat是监听在127.0.0.1:3000的,目前只有本机可以访问。
docker compose logs
如果日志中有rocket.chat输出的版本号就解释运行没有问题。
目前基本上搭建完成一大半。
配置ssl证书+Nginx反向代理如果要利用移动真个app则必须哀求有配置ssl证书,以是必须要用的Nginx进行反向代理。申请ssl证书网上有很多干系的文章,或者可以直策应用cloudflare的代理转发(会自动配置ssl),这里就不赘述了。
编辑Nginx的配置文件nginx.conf。
#必须要加上这段,否则Nginx不支持websocketmap $http_upgrade $connection_upgrade { default upgrade;'' close;}server {listen 443 ssl;access_log logs/wordpress.log combinediox;error_log logs/wordpress.error.log;server_name zgao.top; #填写您的证书绑定的域名,例如:cloud.tencent.comssl_certificate 1_zgao.top_bundle.crt; #填写您的证书文件名称,例如:1_cloud.tencent.com_bundle.crtssl_certificate_key 2_zgao.top.key; #填写您的私钥文件名称,例如:2_cloud.tencent.com.keyssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 可参考此 SSL 协议进行配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:3000; #反向代理到本地rokcet.chat监听的端口 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 Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade;}}
完成后重启Nginx,访问你的ip:443就能看到rocket.chat的初始界面了。第一次须要须要验证管理员的邮箱并登录。
登录rocket.chat并安装移动端APP这里我的433端口给博客用了,以是我监听的442端口给到rocket.chat。
同时也可以在苹果商店(外区)搜索下载rocket.chat的app利用。
让其他朋友也填写你的做事器做事器ip和端口并注册用户,就可以一起在私人做事器上谈天了。再也不用担心谈天记录被监控了。
hubot机器人配置配置好Rocket.Chat后可以添加hubot机器人做一些自动化的事情。官方推举的机器人仓库为:https://github.com/RocketChat/hubot-rocketchat
创建机器人账号给机器人配置一个账号密码。
运行hubot的docker在Rocket.Chat的目录下运行。
docker run -it -e ROCKETCHAT_URL=https://<域名>:<端口> \ -e ROCKETCHAT_ROOM='general' \ -e RESPOND_TO_DM=false \ -e ROCKETCHAT_USER=<bot的用户名> \ -e ROCKETCHAT_PASSWORD=<bot的密码> \ -e ROCKETCHAT_AUTH=password \ -e BOT_NAME=<bot的别名> \ -e EXTERNAL_SCRIPTS=hubot-pugme,hubot-help \ -v $PWD/scripts:/home/hubot/scripts \ rocketchat/hubot-rocketchat-e RESPOND_TO_DM=false //bot是否回答私聊的,否则只在群里中回答
-v $PWD/scripts:/home/hubot/scripts 会将当前目录下的scripts目录挂载到容器的/home/hubot/scripts目录下,这个便是hubot实行脚本的目录。
scripts中存放自己开拓的hubot脚本。如果语法没有问题查看容器运行的日志如下:
示例的hubot脚本hello.js
module.exports = (robot) => { robot.hear(/hello/i, (res) => {// 利用 res.message.user.name 获取发送的用户名称 const userName = res.message.user.name;// 向群聊发送回答 res.reply(`Hello, ${userName}!`);});};
当我发送hello时 ,就会触发机器人的代码,自动@ 发送的人进行回答。
根据关键字发送http要求并回答相应内容module.exports = function(robot) { robot.respond(/mobile\s+(\d+)/i, function(res) { var mobileNumber = res.match[1]; var queryUrl = "http://xxxxx:xxx/sgk?mobile=" + mobileNumber; robot.http(queryUrl).get()(function(err, response, body) {if (err) { res.send("发生缺点: " + err);return;}// 确认相应状态码为200if (response.statusCode === 200) {try {// 解析相应体的JSON内容 var jsonResponse = JSON.parse(body);// 提取并发送message内容 var message = jsonResponse.message; res.send("要求成功,查询结果:\n" + message);} catch (error) { res.send("解析相应内容时发生缺点:" + error);}} else { res.send("要求失落败,状态码:" + response.statusCode);}});});};
这是一段查询社工库的脚本,根据mobile参数拼接要求URL接口,然后解析json并返回。
至于如何开拓hubot的脚本,直接让GPT帮忙写就可以了。
升级Rocket.chat版本每隔一段韶光rc官方都会更新版本,并且逼迫哀求你更新,否则将会停用你当前利用的rc。如果是用本文的办法进行的支配,升级版本只须要先停掉旧的rc然后修正目录下的.env文件重启即可。
docker compose down
docker compose up -d
重启后重新拉取新的镜像,看日志显示当前rc版本已更新。