使用docker部署qsign
Qsign和Gocqhttp的时代已经结束了
因为腾讯如此长久的围杀堵截,加之官方接口的推出,实际上目前第三方bot都不是您最好的选择,这篇教程将最后将xzhouqd/qsign的使用方式简单梳理,其中会包含部分并不准确但是方便您理解的描述。
如何安装Docker?
如果您是Windows用户,您该怎样安装docker?
如果您是Windows用户,那么请回去看《使用docker在Windows系统环境下部署qsign》这篇文章,其中告诉了您如何安装docker,但是因为各种原因,老版本的协议有可能也会让您的qsign失效,建议从8.9.63协议开始尝试,失败后升级协议直到可以正常登录。
至于linux用户请百度“如何安装docker”,您都用linux了不会这都不会吧.jpg。
如果您使用 8.9.63 ~ 8.9.73 版本的协议
根据xzhouqd/qsign的镜像tag与包含协议txlib情况:
core-1.1.9 | core-1.1.8 | core-1.1.7b2 | core-1.1.7 | core-1.1.6 | core-1.1.5 | core-1.1.4 | |
---|---|---|---|---|---|---|---|
8.9.63 | Included | Included | Included | Included | Included | Included | Included |
8.9.68 | Included | Included | Included | Included | Included | Included | Included |
8.9.70 | Use 8.9.71 | Use 8.9.71 | Use 8.9.71 | Included | Included | N/A | N/A |
8.9.71 | Included | Included | Included | N/A | N/A | N/A | N/A |
8.9.73 | Included | Included | Included | N/A | N/A | N/A | N/A |
3.5.1 | Included | N/A | N/A | N/A | N/A | N/A | N/A |
3.5.2 | Included | N/A | N/A | N/A | N/A | N/A | N/A |
您可以自行选择想使用的协议版本,使用形如下所示的命令部署您的容器:
1 | docker run -d --restart=always --name qsign -p {host_port}:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/{version} xzhouqd/qsign:core-{core-ver} |
--restart=always
参数为“一直重启”,会使容器在关闭、停止后自动重启;--name qsign
会将容器名命名为qsign
;-p {host_port}:8080
用于指定主机端口与容器端口的映射关系,左侧为主机端口,右侧为容器端口;-e BASE_PATH=/srv/qsign/qsign/txlib/{version}
用于指定一个环境变量,在这则是用于指定您所想使用的协议版本;xzhouqd/qsign:core-{core-ver}
用于指定您所想使用的核心版本号;
其中,需要注意的是{host_port}
,{version}
,{core-ver}
三处,您需要自己填写合适的数值,例如:
1 | docker run -d --restart=always --name qsign -p 8080:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/8.9.71 xzhouqd/qsign:core-1.1.9 |
这条命令将创建一个在后台以守护进程方式运行,退出时总是重新启动,容器名称 “qsign”,容器的端口 8080 映射到主机的端口 8080,使用 8.9.71 版本协议, 1.1.9 版本核心的qsign的Docker进程,具体配置项请去查看xzhouqd/qsign所提供的默认配置。
以下是一些比较重要的配置项
1 | "server": { |
您在对接gocq时,需要将gocq的配置文件中的对应配置修改,这一部分具体操作本教程不再赘述,一般情况改为如下即可:
1 | sign-servers: |
如果您使用 8.9.80 ~ 8.9.85 版本的协议
如果您在尝试 8.9.63 ~ 8.9.73 版本的协议都无法登录时,您也许就该使用更高版本的协议来运行您的qsign,这并不能完全解决风控或冻结,但是也许可以让您正常登录一段时间。
因为 8.9.80 ~ 8.9.85 版本的协议并未被包含在xzhouqd/qsign所提供的txlib中,所以您需要通过传入txlib的方式来部署qsign。
接下来您将使用形如下所示的命令部署您的容器:
1 | docker run -d --restart=always --name qsign -p {host_port}:{internal_port} -e BASE_PATH={internal_abs_base_path} -v {host_abs_txlib_path}:{internal_abs_base_path} xzhouqd/qsign:core-{core-ver} |
BASE_PATH={internal_abs_base_path}
在此处可以直接视为BASE_PATH=/srv/qsign/qsign/txlib/{version}
;-v {host_abs_txlib_path}:{internal_abs_base_path}
这个参数会将您指定的路径建立映射,使得您自己的txlib可以传入容器内部使用。
在此我默认您使用的是linux系统环境下的root账户,您应该先运行
1 | mkdir /root/qsign/txlib |
这条命令将在/root/qsign/
路径下创建名为txlib
的文件夹并且让您切换到那个目录,如果您没有现成的txlib请接着运行:
如果您已经有了现成的txlib,请忽略这一步,并手动将txlib内的协议文件夹置入
/root/qsign/txlib
路径下。
1 | git clone https://github.com/RikoNeko/qsign-txlib.git |
这将下载您可能需要的协议包,需要一段时间完成后运行 cd /root/qsign/txlib
确保路径正确,运行 ls
应该会存在:
1 | 3.5.1 3.5.2 8.9.58 8.9.63 8.9.68 8.9.70 8.9.71 8.9.73 8.9.80 8.9.83 8.9.85 |
这些文件夹,接下来您需要将{host_port},{internal_port},{internal_abs_base_path},{host_abs_txlib_path},{internal_abs_base_path},{core-ver}替换为合适的数值,例如:
1 | docker run -d --restart=always --name qsign -p 8080:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/8.9.83 -v /root/qsign/txlib:/srv/qsign/qsign/txlib xzhouqd/qsign:core-1.1.9 |
这条命令将创建一个在后台以守护进程方式运行,退出时总是重新启动,容器名称 “qsign”,容器的端口 8080 映射到主机的端口 8080,将主机的 /root/qsign/txlib 目录挂载到容器的 /srv/qsign/qsign/txlib 目录,使用 8.9.83 版本协议, 1.1.9 版本核心的qsign的Docker进程,具体配置项请修改 /root/qsign/txlib 目录下您所使用的协议版本对应的目录。
在一切完成后,请去qsign-txlib或者您自己所使用的txlib中找到您使用的协议版本对应的文件夹,将其中的 android_pad.json
的内容复制,接着在您的gocq目录下的/data/versions下新建 6.json
,粘贴您刚才复制到内容,将 protocol_type
字段的值改为 6
,保存并尝试启动gocq。
使用docker ps
查看容器运行状态,如果步骤正确,那么现在您的容器已经成功运行了,至于gocq如何使用qsign请自行解决。