Chanzhaoyu / chatgpt-web

用 Express 和 Vue3 搭建的 ChatGPT 演示网页
MIT License
31.49k stars 11.21k forks source link

我让gpt4总结了一下自建代理的搭建方法,在这里分享给需要的人 #1499

Closed iknow2333 closed 1 year ago

iknow2333 commented 1 year ago

参考https://blognas.hwb0307.com/linux/docker/4201

Model: GPT-4

1 / 1

在VPS里自建反向代理 自建代理可能经常不可用。如果失败,等待一段时间(比如1小时)后再测试。 目前公共反向代理已经不太稳了。有能力的小伙伴建议自建反向代理,比如基于linweiyuan / go-chatgpt-api项目或linweiyuan/java-chatgpt-api项目。这些方法对VPS的IP纯净程度要求较高。自建反代的稳定性应该会比一些公共地址更稳定。 这里我们以linweiyuan / go-chatgpt-api为例,其实项目README也说得挺清楚了: work3=~/docker/go-chatgpt-api mkdir -p $work3; cd $work3 新建docker-compose.yml文件并填入以下内容: services: go-chatgpt-api: container_name: go-chatgpt-api image: linweiyuan/go-chatgpt-api ports: - 8080:8080 # 宿主机8080端口可按需改为其它端口 environment: - GIN_MODE=release - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515 depends_on: - chatgpt-proxy-server restart: unless-stopped chatgpt-proxy-server: container_name: chatgpt-proxy-server image: linweiyuan/chatgpt-proxy-server restart: unless-stopped 完成部署后,必须要有这样的提示才算成功: chatgpt-proxy-server | ChromeDriver was started successfully. 这时,该自建IP的访问地址为http://:8080/conversation,它可以作为下面的API_REVERSE_PROXY参数的值。请注意,如果该反代和你的chatgpt-web属于同一个docker网段,你也可以使用局域网地址: http://172.17.0.1:8080/conversation。具体原理为:docker在安装时会自动创建一个名为docker0的虚拟网络接口,并分配这个地址作为网桥的网关地址;而172.17.0.1 是docker的默认网桥地址。 如果显示Access denied之类的报错,提示IP被屏蔽。这时可以使用Cloudflare WARP。Cloudflare WARP是Cloudflare开发的VPN工具,它通过将用户的网络流量路由到Cloudflare的服务器上来保护用户的网络连接。WARP主要基于Cloudflare的全球边缘网络,其包含大量的服务器并分布在世界各地。当用户使用WARP连接到Cloudflare的VPN服务器时,其网络流量将会被路由到最接近目标网站的服务器上,从而可以绕过目标网站所设置的地理位置限制和IP封锁。此外,WARP还使用了一些高级的加密和安全措施来保护用户的数据和隐私。这些措施包括TLS 1.3加密、AES-256-GCM加密等。这些措施可以确保用户的网络连接和数据是安全的,并且不会被恶意方获取和利用。 我的RackNerd VPS就是基于WARP成功自建反向代理的: services: go-chatgpt-api: container_name: go-chatgpt-api image: linweiyuan/go-chatgpt-api ports: - 8080:8080 # 宿主机8080端口可按需改为其它端口 environment: - GIN_MODE=release - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515 - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535 depends_on: - chatgpt-proxy-server - chatgpt-proxy-server-warp restart: unless-stopped chatgpt-proxy-server: container_name: chatgpt-proxy-server image: linweiyuan/chatgpt-proxy-server restart: unless-stopped chatgpt-proxy-server-warp: container_name: chatgpt-proxy-server-warp image: linweiyuan/chatgpt-proxy-server-warp restart: unless-stopped 这几个镜像体积还挺大的,总体积应该接近2G。所以玩docker的VPS真心推荐大容量的! 总结在linux vps上安装此项目的方法

1 / 1

在 Linux VPS 上自建反向代理并安装 linweiyuan / go-chatgpt-api 项目的方法如下:

  1. 安装 Docker 和 Docker Compose 确保你的 VPS 上已经安装了 Docker 和 Docker Compose。如果没有,请参考以下命令进行安装:

Docker 安装:

bash

curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker

Docker Compose 安装:

bash

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  1. 创建工作目录

bash

work3=~/docker/go-chatgpt-api
mkdir -p $work3; cd $work3
  1. 新建 docker-compose.yml 文件并填入以下内容:

yaml

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
    depends_on:
      - chatgpt-proxy-server
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    restart: unless-stopped
  1. 部署项目 在含有 docker-compose.yml 文件的工作目录下,运行以下命令:

bash

docker-compose up -d
  1. 确认部署成功 部署成功后,控制台应该出现如下提示:

chatgpt-proxy-server | ChromeDriver was started successfully.

  1. 使用自建反向代理 自建反向代理的访问地址为:http://<vps-ip>:8080/conversation,可作为 API_REVERSE_PROXY 参数的值。

  2. (可选)使用 Cloudflare WARP 如果出现 IP 被屏蔽的问题,可以考虑使用 Cloudflare WARP。在 docker-compose.yml 文件中添加相应的配置,然后重新部署。

总之,在 Linux VPS 上自建反向代理并安装 linweiyuan / go-chatgpt-api 项目的步骤如上所述。遵循这些步骤,你应该能够成功部署并使用自建反向代理。

iknow2333 commented 1 year ago

这里是access denied的docker-compose.yml文件

yaml

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
      - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    restart: unless-stopped
necopp commented 1 year ago

请问大佬自建代理以后,accesstoken的方式还可以用吗?我说这两天怎么不可以了~原来官方搞了点小动作。

iknow2333 commented 1 year ago

请问大佬自建代理以后,accesstoken的方式还可以用吗?我说这两天怎么不可以了~原来官方搞了点小动作。

这就是给accesstoken用的啊

necopp commented 1 year ago

好的谢谢,现在就去试试!

dqzboy commented 1 year ago

基于上面大佬提供的步骤,写了一篇比较详细的搭建教程,供大家自行搭建参考ChatGPT-Porxy

gygy commented 1 year ago

花费5分钟,自建代理一次成功,测试能使用

ieiian commented 1 year ago

感谢你的提供

fishslidenas commented 1 year ago

谢谢大神的辛苦付出。 我有一个问题,我实在群晖的docker上部署,图形化的docker,请问如下内容更应该再群晖docker的哪个地方部署呢?

depends_on:

我知道environment是在“环境”标签里配置,但是depends_on应该在哪儿配置呢?

7noemo commented 1 year ago

没arm机器的包,没啥用

stanle1 commented 1 year ago

有没使用 函数计算 的代理方法 最大节省成本。

zhangsanproject commented 1 year ago

有没使用 函数计算 的代理方法 最大节省成本。

https://developer.aliyun.com/article/1181969?utm_content=g_1000370122 阿里云函数计算

stanle1 commented 1 year ago

有没使用 函数计算 的代理方法 最大节省成本。

https://developer.aliyun.com/article/1181969?utm_content=g_1000370122 阿里云函数计算

这种不支持 accesstoken吧。。api调用是能通

GitHubChrisChen8035 commented 1 year ago

自建代理能正常启动,显示ChromeDriver was started successfully. 但是进入chatgpt-web,显示Network Error

huan1936 commented 1 year ago

基于上面大佬提供的步骤,写了一篇比较详细的搭建教程,提供大家自行搭建参考ChatGPT-Porxy

请问香港的服务器可以吗 还是必须其他国家的

dqzboy commented 1 year ago

基于上面大佬提供的步骤,写了一篇比较详细的搭建教程,提供大家自行搭建参考ChatGPT-Porxy

请问香港的服务器可以吗 还是必须其他国家的

香港、澳门、大陆的IP都没法访问chatGPT

2018ybq commented 1 year ago

昨天返回的是这个[OpenAI] 错误的网关 | Bad Gateway 今天又变成这样 ChatGPT error 523:

Origin is unreachable Error code 523

Visit cloudflare.com for more information.
2023-04-18 12:36:28 UTC
You Browser Working Los Angeles [Cloudflare](https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_523&utm_campaign=bypass.churchless.tech) Working 这是什么原因啊?
stanle1 commented 1 year ago

自用nas的 其实只需要在 yml 上加上 自己的http酸酸乳,就能直接用 也不用租外服.赞

GitHubChrisChen8035 commented 1 year ago

8080:8080 # 宿主机8080端口可按需改为其它端口 譬如VPS的对外访问端口是3002,是不是设置成3002:8080?

MicroMatrixOrg commented 1 year ago

这里是access denied的docker-compose.yml文件

yaml

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
      - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    restart: unless-stopped

启动成功了,然后访问我自建的也出现了提示{"errorMessage":"Missing accessToken."},但是我在chatgpt-web上使用就提示ChatGPT error 404: 404 page not found

nikissXI commented 1 year ago

这里是access denied的docker-compose.yml文件 yaml

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
      - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    restart: unless-stopped

启动成功了,然后访问我自建的也出现了提示{"errorMessage":"Missing accessToken."},但是我在chatgpt-web上使用就提示ChatGPT error 404: 404 page not found

地址写错了,这个是/conversation,不是/api/conversation

MicroMatrixOrg commented 1 year ago

这里是access denied的docker-compose.yml文件 yaml

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
      - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    restart: unless-stopped

启动成功了,然后访问我自建的也出现了提示{"errorMessage":"Missing accessToken."},但是我在chatgpt-web上使用就提示ChatGPT error 404: 404 page not found

地址写错了,这个是/conversation,不是/api/conversation 我发现到了。😮‍💨

brodyxchen commented 1 year ago

补一个点 (原因就是楼主所说的 docker虚拟网络导致) 若在同一台vps上,都用docker-compose配置chatweb+反向代理服务, 则反向代理地址应该是下面的第一个(至少我是这样)

  1. http://172.17.0.1:8080/conversation (应该用这个)
  2. http://127.0.0.1:8080/conversation (这个在vps上能curl通,但是chatweb就是访问不了)

这里的port,按需改为你自己设置反向代理port

1VeniVediVeci1 commented 1 year ago

感谢,已经搭建成功,plus加自建反代,感觉可以放心分享了,再也不用担心api一天几刀。不过如果会话个数太多会有问题吗?

kwingart commented 1 year ago

自用nas的 其实只需要在 yml 上加上 自己的http酸酸乳,就能直接用 也不用租外服.赞

我也是这样做的,但是出现问题如下,能帮忙诊断下吗,谢谢。

go-chatgpt-api我也成功了, go-chatgpt-api | INFO[0012] Welcome to ChatGPT chatgpt-proxy-server | [1682555989.587][INFO]: [b8f91aa06537d6526d840b389c69bda2] COMMAND ExecuteScript { chatgpt-proxy-server | "args": [ ], chatgpt-proxy-server | "script": "open('https://chat.openai.com/chat');"

但是,我起chatgpt-web,配置了我自己的反代,启动是没错,只要打开web界面,与gpt互动就报错了,报无效的proxy,又不知咋整了,看来得去作者那里问问了,这里的大佬们,能指点一二么,谢谢

[root@VM-20-12-centos chatgpt-web]# docker-compose up Creating network "chatgpt-web_default" with the default driver Creating chatgpt-web_app_1 ... done Attaching to chatgpt-web_app_1 app_1 | app_1 | > chatgpt-web-service@1.0.0 prod /app app_1 | > node ./build/index.mjs app_1 | app_1 | Server is running on port 3002 app_1 | POST https://172.17.0.1:8082/conversation { app_1 | body: { app_1 | action: 'next', app_1 | messages: [ [Object] ], app_1 | model: 'gpt-3.5-turbo', app_1 | parent_message_id: '08bec7ac-3fad-468f-bac8-23168416d5e1' app_1 | }, app_1 | headers: { app_1 | Authorization: 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkQ05UZzVNRFUxUlRVd1FVSkRNRU13UmtGRVFrRXpSZyJ9.eyJodHRwczovL2FwaS5vcGVuYWkuY29tL3Byb2ZpbGUiOnsiZW1haWwiOiJiaW5nNzhAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWV9LCJodHRwczovL2FwaS5vcGVuYWkuY29tL2F1dGgiOnsidXNlcl9pZCI6InVzZXItbmtlaDFsclNhSXlNVWRYMzAzUmRPWW5VIn0sImlzcyI6Imh0dHBzOi8vYXV0aDAub3BlbmFpLmNvbS8iLCJzdWIiOiJhdXRoMHw2Mzk5YWQ0N2E4MGRiZTVlMzMwNjE3ODMiLCJhdWQiOlsiaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MSIsImh0dHBzOi8vb3BlbmFpLm9wZW5haS5hdXRoMGFwcC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNjgxMzYyMjg0LCJleHAiOjE2ODI1NzE4ODQsImF6cCI6IlRkSkljYmUxNldvVEh0Tjk1bnl5d2g1RTR5T282SXRHIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCBtb2RlbC5yZWFkIG1vZGVsLnJlcXVlc3Qgb3JnYW5pemF0aW9uLnJlYWQgb2ZmbGluZV9hY2Nlc3MifQ.U7sWfolNPSXmsDk8_iNTWgloxrOKAszwpV6YV9B20Hc4Pdsj4gZJhbJ3xUv167yOUfgat0j3k4jucYLxBGC9wlacxNVZN01gmwWOKcrrbH1LnQ0Gn0HABGo1owYACUkCqTU1YQfYPsXBqXlMZBi1v7xAvWl4AapJicyikVTz-DfVF-VgzAmac_vBcXjUkWLZGKraQIHov9_6_XSO6Df3CFD2Jz8KXCmqRM-awF0IkCl6ezMmmZif1JqpnGmjj9Hmi5SPXdNWpvfO9hWbnGr1gF7-XXw1AW9dCJCs-pvxMSJZ3VeJp-ohACofAgsQUSXKQDjBbd4Duk4WrcEpbx9WTQ', app_1 | Accept: 'text/event-stream', app_1 | 'Content-Type': 'application/json' app_1 | } app_1 | } app_1 | FetchError: request to https://172.17.0.1:8082/conversation failed, reason: Invalid SOCKS proxy details were provided. app_1 | at ClientRequest. (file:///app/node_modules/.pnpm/node-fetch@3.3.0/node_modules/node-fetch/src/index.js:108:11) app_1 | at ClientRequest.emit (node:events:525:35) app_1 | at onerror (/app/node_modules/.pnpm/agent-base@6.0.2/node_modules/agent-base/dist/src/index.js:117:21) app_1 | at callbackError (/app/node_modules/.pnpm/agent-base@6.0.2/node_modules/agent-base/dist/src/index.js:136:17) app_1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { app_1 | type: 'system', app_1 | errno: undefined, app_1 | code: undefined, app_1 | erroredSysCall: undefined app_1 | }

@brodyxchen 请问,你成功了吗?能指导下么,谢谢!

kwingart commented 1 year ago

补充下,我的go-chatgpt-api配置

version: "3" services: go-chatgpt-api: container_name: go-chatgpt-api image: linweiyuan/go-chatgpt-api ports:

  • 8082:8080 # 宿主机8080端口可按需改为其它端口 environment:
  • GIN_MODE=release
  • CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
  • NETWORK_PROXY_SERVER=socks5://172.17.0.1:7890 depends_on:
  • chatgpt-proxy-server restart: unless-stopped

    chatgpt-proxy-server: container_name: chatgpt-proxy-server image: linweiyuan/chatgpt-proxy-server restart: unless-stopped

github-actions[bot] commented 1 year ago

This issue is stale because it has been open for 10 days with no activity.

github-actions[bot] commented 1 year ago

This issue was closed because it has been inactive for 2 days since being marked as stale.