chatgpt-web icon indicating copy to clipboard operation
chatgpt-web copied to clipboard

关于自建代理,大家看过来

Open zhangpetergo opened this issue 1 year ago • 13 comments

大家不论是使用clash、ss还是其他搭建的代理,使用docker部署chatgot-web时,如果出现了 https://api.openai.com/v1/chat/completions failed, reason: connect ECONNREFUSED 127.0.0.1:1080 https://api.openai.com/v1/chat/completions failed, reason: connect ECONNREFUSED 127.0.0.1:7890 上面的错误

解决办法 先说原理:原理就是使用docker部署chatgot-web时或者docker-compose部署时容器使用的网络的driver是bridge,和host本机是不互通的。(不知道解释的有没有问题,欢迎大家指正) 解决 我目前的方法是使用Dockerfile构建镜像,运行容器时 docker run --name chatgpt-api -d --net=host --env OPENAI_API_KEY=xxx --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=7890 chatgpt-web-api --net=host指定运行时的网络,指定网络是host,这里直接使用主机的ip和端口号,指定的-p映射会被忽略。 所以实际运行的还是3002端口

zhangpetergo avatar Mar 06 '23 05:03 zhangpetergo

docker run --name chatgpt-web -d --net=host --env OPENAI_API_KEY=xxx --env TIMEOUT_MS=60000 --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=10808 chatgpt-web

有出现有这个问题,不过按照您这个运行后,localhost:3002页面也进不去了,显示的是 无法连接到 ,是哪里有不对吗<T.T>

我出现这个问题的复现方法是,构建镜像前在compose.yaml文件里写入了sock_proxy_host和port,随后构建镜像并运行

docker build -t chatgpt-web .
docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEY=xxx --env TIMEOUT_MS=60000 --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=10808 chatgpt-web

wurarara avatar Mar 06 '23 10:03 wurarara

docker run --name chatgpt-web -d --net=host --env OPENAI_API_KEY=xxx --env TIMEOUT_MS=60000 --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=10808 chatgpt-web

有出现有这个问题,不过按照您这个运行后,localhost:3002页面也进不去了,显示的是 无法连接到 ,是哪里有不对吗<T.T>

我出现这个问题的复现方法是,构建镜像前在compose.yaml文件里写入了sock_proxy_host和port,随后构建镜像并运行

docker build -t chatgpt-web .
docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEY=xxx --env TIMEOUT_MS=60000 --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=10808 chatgpt-web

你好,对于你的问题,首先你可以docker ps查看下容器是否启动,如果没有启动,你可以docker logs 你的容器ID,查看这个容器的日志。看是否有什么报错,如果docker ps容器正常启动,使用docker logs 你的容器ID,成功的信息会输出 > [email protected] start /app > esno ./src/index.ts Server is running on port 3002

zhangpetergo avatar Mar 06 '23 11:03 zhangpetergo

docker run --name chatgpt-web -d --net=host --env OPENAI_API_KEY=xxx --env TIMEOUT_MS=60000 --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=10808 chatgpt-web

有出现有这个问题,不过按照您这个运行后,localhost:3002页面也进不去了,显示的是 无法连接到 ,是哪里有不对吗<T.T> 我出现这个问题的复现方法是,构建镜像前在compose.yaml文件里写入了sock_proxy_host和port,随后构建镜像并运行

docker build -t chatgpt-web .
docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEY=xxx --env TIMEOUT_MS=60000 --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=10808 chatgpt-web

你好,对于你的问题,首先你可以docker ps查看下容器是否启动,如果没有启动,你可以docker logs 你的容器ID,查看这个容器的日志。看是否有什么报错,如果docker ps容器正常启动,使用docker logs 你的容器ID,成功的信息会输出 > [email protected] start /app > esno ./src/index.ts Server is running on port 3002

我使用的是docker desktop,提供了可视化界面,我看到日志是正常的,正在3002端口运行。按照您的方法我也尝试了,输出结果一致。然后我被提示

Unable to connect
Firefox can’t establish a connection to the server at 127.0.0.1:3002.

或许是我自身的问题吧<T.T>

wurarara avatar Mar 06 '23 12:03 wurarara

大家不论是使用clash、ss还是其他搭建的代理,使用docker部署chatgot-web时,如果出现了 https://api.openai.com/v1/chat/completions failed, reason: connect ECONNREFUSED 127.0.0.1:1080 https://api.openai.com/v1/chat/completions failed, reason: connect ECONNREFUSED 127.0.0.1:7890 上面的错误

解决办法 先说原理:原理就是使用docker部署chatgot-web时或者docker-compose部署时容器使用的网络的driver是bridge,和host本机是不互通的。(不知道解释的有没有问题,欢迎大家指正) 解决 我目前的方法是使用Dockerfile构建镜像,运行容器时 docker run --name chatgpt-api -d --net=host --env OPENAI_API_KEY=xxx --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=7890 chatgpt-web-api --net=host指定运行时的网络,指定网络是host,这里直接使用主机的ip和端口号,指定的-p映射会被忽略。 所以实际运行的还是3002端口

群晖docker部署chatgot-web后,他的上游是路由器 路由器已经翻了 同一路由器下电脑都可以直接访问api,但是docker里的就不能访问api,路由器全局翻docker里的chatgot-web还是不能访问咋回事

luuziiyoo avatar Mar 06 '23 13:03 luuziiyoo

大家不论是使用clash、ss还是其他搭建的代理,使用docker部署chatgot-web时,如果出现了 https://api.openai.com/v1/chat/completions failed, reason: connect ECONNREFUSED 127.0.0.1:1080 https://api.openai.com/v1/chat/completions failed, reason: connect ECONNREFUSED 127.0.0.1:7890 上面的错误 解决办法 先说原理:原理就是使用docker部署chatgot-web时或者docker-compose部署时容器使用的网络的driver是bridge,和host本机是不互通的。(不知道解释的有没有问题,欢迎大家指正) 解决 我目前的方法是使用Dockerfile构建镜像,运行容器时 docker run --name chatgpt-api -d --net=host --env OPENAI_API_KEY=xxx --env SOCKS_PROXY_HOST=127.0.0.1 --env SOCKS_PROXY_PORT=7890 chatgpt-web-api --net=host指定运行时的网络,指定网络是host,这里直接使用主机的ip和端口号,指定的-p映射会被忽略。 所以实际运行的还是3002端口

群晖docker部署chatgot-web后,他的上游是路由器 路由器已经翻了 同一路由器下电脑都可以直接访问api,但是docker里的就不能访问api,路由器全局翻docker里的chatgot-web还是不能访问咋回事

这个我就不太懂了,你可以谷歌或者问下chatgpt

zhangpetergo avatar Mar 07 '23 01:03 zhangpetergo

我的建议是

  1. 如果clash是docker搭建的,一般创建容器docker都是用同一个虚拟桥接网卡。也就是所有桥接网络的docker的应用都在一个内网下,直接用clash的桥接内网地址就行了。
  2. 不是的话,直接用服务器地址也行,还是建议第一种(反正我是),host对我来说有诸多不便。

xiaoer666 avatar Mar 07 '23 02:03 xiaoer666

我的建议是

  1. 如果clash是docker搭建的,一般创建容器docker都是用同一个虚拟桥接网卡。也就是所有桥接网络的docker的应用都在一个内网下,直接用clash的桥接内网地址就行了。
  2. 不是的话,直接用服务器地址也行,还是建议第一种(反正我是),host对我来说有诸多不便。

即便是第一种情况也可以直接用服务器地址

xiaoer666 avatar Mar 07 '23 02:03 xiaoer666

我的建议是

  1. 如果clash是docker搭建的,一般创建容器docker都是用同一个虚拟桥接网卡。也就是所有桥接网络的docker的应用都在一个内网下,直接用clash的桥接内网地址就行了。
  2. 不是的话,直接用服务器地址也行,还是建议第一种(反正我是),host对我来说有诸多不便。

即便是第一种情况也可以直接用服务器地址

是的,这样做最好了

zhangpetergo avatar Mar 07 '23 04:03 zhangpetergo

有一种更加优雅地方案,能兼容Linux,Mac,Windows三平台,而且不用写宿主机IP,也不使用host模式,使用host.docker.internal。 具体详情参考我的博文: Docker容器如何优雅地访问宿主机网络

eryajf avatar Mar 07 '23 06:03 eryajf

学习学习去

二丫讲梵 @.***> 于2023年3月7日周二 14:15写道:

有一种更加优雅地方案,能兼容Linux,Mac,Windows三平台,而且不用写宿主机IP,也不使用host模式,使用 host.docker.internal。 具体详情参考我的博文: Docker容器如何优雅地访问宿主机网络 https://wiki.eryajf.net/pages/674f53/

— Reply to this email directly, view it on GitHub https://github.com/Chanzhaoyu/chatgpt-web/issues/336#issuecomment-1457604752, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACR5P4V34H6OT45CWMFQKKDW23G6PANCNFSM6AAAAAAVQVSFUM . You are receiving this because you commented.Message ID: @.***>

luuziiyoo avatar Mar 07 '23 06:03 luuziiyoo

我用的群晖,群晖的域名挺好用的 直接用群晖反代把chatgpt-web反代出去 稳得很 估计群晖里的docker也不支持这种方式

刘智勇 @.***> 于2023年3月7日周二 14:15写道:

学习学习去

二丫讲梵 @.***> 于2023年3月7日周二 14:15写道:

有一种更加优雅地方案,能兼容Linux,Mac,Windows三平台,而且不用写宿主机IP,也不使用host模式,使用 host.docker.internal。 具体详情参考我的博文: Docker容器如何优雅地访问宿主机网络 https://wiki.eryajf.net/pages/674f53/

— Reply to this email directly, view it on GitHub https://github.com/Chanzhaoyu/chatgpt-web/issues/336#issuecomment-1457604752, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACR5P4V34H6OT45CWMFQKKDW23G6PANCNFSM6AAAAAAVQVSFUM . You are receiving this because you commented.Message ID: @.***>

luuziiyoo avatar Mar 07 '23 06:03 luuziiyoo

正好你可以测试下能行不

| | eryajf | | @.*** 行者常至,为者常成! |

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年03月07日 14:20 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [Chanzhaoyu/chatgpt-web] 关于自建代理,大家看过来 (Issue #336) |

我用的群晖,群晖的域名挺好用的 直接用群晖反代把chatgpt-web反代出去 稳得很 估计群晖里的docker也不支持这种方式

刘智勇 @.***> 于2023年3月7日周二 14:15写道:

学习学习去

二丫讲梵 @.***> 于2023年3月7日周二 14:15写道:

有一种更加优雅地方案,能兼容Linux,Mac,Windows三平台,而且不用写宿主机IP,也不使用host模式,使用 host.docker.internal。 具体详情参考我的博文: Docker容器如何优雅地访问宿主机网络 https://wiki.eryajf.net/pages/674f53/

— Reply to this email directly, view it on GitHub https://github.com/Chanzhaoyu/chatgpt-web/issues/336#issuecomment-1457604752, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACR5P4V34H6OT45CWMFQKKDW23G6PANCNFSM6AAAAAAVQVSFUM . You are receiving this because you commented.Message ID: @.***>

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

eryajf avatar Mar 07 '23 06:03 eryajf

docker run --name chatgpt-web --rm -it -p 3002:3002 --add-host="host.docker.internal:host-gateway" --env OPENAI_API_KEY=sk-Axxxxxxxxxxxxxxxxxxxxxx --env SOCKS_PROXY_HOST="socks5://host.docker.internal" --env SOCKS_PROXY_HOST=7890 chatgpt-web
理论上来说这个可以work,给大家死马当活马医吧,前台运行,不能用就Ctril C掉

wanmyj avatar Mar 09 '23 06:03 wanmyj