Cloudflare warp的docker方案一键解决chatgpt无法访问的问题

接续上篇讲述的近期chatgpt访问困难的问题,上篇是基于ubuntu的本地安装。使用起来还是不够快速舒服,并且假如使用的是老版的centos7还要切换操作系统,不方便,因此花了一点时间将warp的proxy封装成了docker,满足一键启动的需求,方便大家一把梭。

官方文档安装文档:

https://developers.cloudflare.com/warp-client/get-started/linux/

Dockerfile详解:

FROM ubuntu:22.10
LABEL mantainer="galtjay<galtjay@foxmail.com>"
#下边这一行主要是完成supervisor和cloudflare-warp的安装
RUN apt update && apt install -y curl gpg supervisor && curl https://pkg.cloudflareclient.com/pubkey.gpg |  gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ jammy main" |  tee /etc/apt/sources.list.d/cloudflare-client.list && apt update && apt install cloudflare-warp -y &&  apt-get clean
#生成supervisor守护配置文件,原本的warp-svc基于systemd进行管理,docker内部不太好实现,切换成supervisor进行守护。
RUN echo "[program:warp-svc]\ncommand=/bin/bash -c /usr/bin/warp-svc\nautostart=true\nautorestart=true\nstartretries=3\nstderr_logfile=/var/log/warp.log\nstdout_logfile=/var/log/warp.log\n" > /etc/supervisor/conf.d/warp.conf
#生成docker启动脚本,输出日志到控制台。每次启动会自动的完成注册,切换模式。假如各位需要嵌入现有的license,此处自行修改。主要修改warp-cli --accept-tos register这条。
RUN echo  "supervisord\nsleep 5\nwarp-cli --accept-tos register\nwarp-cli --accept-tos  set-mode proxy\nwarp-cli  --accept-tos connect\ntail -f /var/log/warp.log\n"  > /init.sh && chmod +x /init.sh
#默认暴露40000端口
EXPOSE "40000/tcp"
CMD ["bash","-c","/init.sh"]

docker build -t warp:v1 ./

docker run -d --name warp --network host warp:v1

本人已经打包了一个版本,信的过可以直接拿去使用:

docker run -d --name warp --network host galtjay/warp:v1

运行后将在本地启动一个40000的proxy端口,将现有的代理的流量进行引入即可。可以临时设置代理检查本地的40000端口是否生效:

export ALL_PROXY=socks5://127.0.0.1:40000

curl ifconfig.me

curl myip.ipip.net

但是,目前即使生效了,你在连接chatgpt的时候,仍然可能出现429的错误,这个是由于目前warp连接的IP处于限流导致的,经过我的测试可以透过不断的切换节点来解决:

docker exec -it warp bash #交互式进入docker内部,执行下边的命令,进行节点的切换。

warp-cli disconnect && sleep 1 &&warp-cli connect

最后让chatgpt帮忙写一个docker-compose.yml: