主体
现在启动gocq需要签名服务器,夜梦查阅了许多资料,终于发现了 自己不会搞 一个使用docker在Linux服务器上面部署签名服务器的方法。
夜梦翻过的所有文档(夜梦自己基本看不懂嗷:
- Docker容器:xzhouqd/qsign – Docker Image | Docker Hub
- gocqGitHub地址:Mrs4s/go-cqhttp at dev (github.com)
- qsignGitHub地址:fuqiuluo/unidbg-fetch-qsign: 获取QQSign通过Unidbg (github.com)
- qsign部署方法:Home · fuqiuluo/unidbg-fetch-qsign Wiki (github.com)
- ⭐签名服务器相关问题 · Issue #2242 · Mrs4s/go-cqhttp (github.com)
- ⭐签名服务器相关问题 · Mrs4s/go-cqhttp · Discussion #2245 (github.com)
由于夜梦水平有限,既不会在本地部署签名服务器,也不会在Linux使用常规方法部署签名服务器。所以这篇文章仅讲述如何使用docker部署签名服务器,别的方法小伙伴自己研究吧,或者找夜梦讨论讨论也可以(不用指望夜梦能够帮你解决了
我们先准备一台配置还行的服务器(1C1G吧),然后安装docker:
apt-get update
wget -qO- get.docker.com | bash
docker -v #查看 docker 版本
systemctl enable docker # 设置开机自动启动
在运行过gocq后,应该会有device.json文件生成。我们找到其中的
"android_id":"yemengtaicaile"
然后运行docker(修改ANDROID_ID参数)
docker run -d --restart=always --name qsign -p 8080:8080 -e ANDROID_ID=yemengtaicaile xzhouqd/qsign:8.9.63
接着我们在gocq的config.yml中,把
# 数据包的签名服务器
# 兼容 https://github.com/fuqiuluo/unidbg-fetch-qsign
# 如果遇到 登录 45 错误, 或者发送信息风控的话需要填入一个服务器
# 示例:
# sign-server: 'http://127.0.0.1:8080' # 本地签名服务器
# sign-server: 'https://signserver.example.com' # 线上签名服务器
# 服务器可使用docker在本地搭建或者使用他人开放的服务
sign-server: '-'
修改为如下,sign-server改为自己服务器的IP地址!
# 数据包的签名服务器
# 兼容 https://github.com/fuqiuluo/unidbg-fetch-qsign
# 如果遇到 登录 45 错误, 或者发送信息风控的话需要填入一个服务器
# 示例:
# sign-server: 'http://127.0.0.1:8080' # 本地签名服务器
# sign-server: 'https://signserver.example.com' # 线上签名服务器
# 服务器可使用docker在本地搭建或者使用他人开放的服务
sign-server: 'http://yourIP:8080'
然后我们重启gocq即可!
./go-cqhttp.exe
不出所料的话(反正夜梦成功了,你自己看着办吧!振声)
提示会从令人头疼的code45
[2023-08-08 19:39:39] [WARNING]: 登录失败: 登录失败,请前往QQ官网im.qq.com下载最新版QQ后重试,或通过问题反馈与我们联系。 Code: 45
[2023-08-08 19:39:39] [WARNING]: 你的账号被限制登录, 请配置 SignServer 后重试
变为
[2023-08-08 20:10:07] [WARNING]: 1. 向手机 666*6 发送短信验证码
[2023-08-08 20:10:07] [WARNING]: 2. 使用手机QQ扫码验证.
[2023-08-08 20:10:07] [WARNING]: 请输入(1 - 2):
到这里输入1填入验证码就可以登录啦!
这时候看到
[2023-08-08 20:11:59] [INFO]: 开始尝试连接到反向WebSocket Universal服务器: ws://127.0.0.1:8080/onebot/v11/ws/
[2023-08-08 20:12:01] [WARNING]: 连接到反向WebSocket Universal服务器 ws://127.0.0.1:8080/onebot/v11/ws/ 时出现错误: dial tcp 127.0.0.1:8080: connectex: No connection could be made because the target machine actively refused it.
也觉得情切了捏!
其他
适配
xzhouqd/qsign:8.9.63 (amd64, arm64)
适配版本 release v1.1.0 ,带适配1.1.0及以前的txlib/8.9.63
如果你的arm64版本跑不起来,请先试试指定count为1!
docker直接跑(host侧8080端口)
必须加ANDROID_ID了!这东西在你的device.json里!找出来替换掉{android_id}
不然直接退出的!跑了白跑!
运行命令之后,用docker container ls -a
查看一下你的容器是否跑起来,没跑起来的(状态是Exited (1)
)用docker container logs qsign
看一下是不是没填android_id!
docker run -d --restart=always --name qsign -p 8080:8080 -e ANDROID_ID={android_id} xzhouqd/qsign:8.9.63
如果你要改端口,看下面!
docker改改参数跑
external_port: host侧端口 internal_port: container侧端口,要改就必须有-e PORT={internal_port} count: 并行数量 android_id: device.json里的android_id
docker run -d --restart=always --name qsign -p {external_port}:{internal_port} -e PORT={internal_port} -e COUNT={count} -e ANDROID_ID={android_id} xzhouqd/qsign:8.9.63
用Docker-Compose跑:
docker-compose.yml:
version: "3.0"
services:
qsign:
image: xzhouqd/qsign:8.9.63
ports:
- "8080:8080" # {external_port}:{internal_port}
environment:
- PORT=8080 # {internal_port} 可选填,必须和ports里的internal_port一致,要改就必填
- COUNT=3 # {count} 可选填
- ANDROID_ID=xxxxxxxxxxxxx 必填!到你的device.json里找!
container_name: qsign
restart: always
然后docker-compose up -d