無根生

無根生

使用traefik解決ChatGPT的API無法訪問的問題

traefik.png
OpenAI 剛更新了 ChatGPT 的 api 接口,在某不知名地區當天就被牆了,看到網上五花八門反代教程,有用 cf work 的,有 NGINX 的,我也來水一篇


首先#

確保你安裝了 traefik 並配置了 file provider 文件目錄

[providers]
  [providers.file]
    directory = "/etc/traefik/conf.d/"

docker 文件中掛載了對應 volume,如下

    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
      # Add folder with dynamic configuration yml
      - ./data/configurations://etc/traefik/conf.d/

配置#

在 data/configurations 創建 openai.yaml 文件並添加以下內容:

http:
  routers:
    openai:
      entryPoints:
        - websecure
      rule: "Host(`yourdomain.com`) && Path(`/v1/chat/completions`)"
      service: openai
  services:
    openai:
      loadBalancer:
        passHostHeader: true
        servers:
          - url: "https://api.openai.com"

配置完畢等待一會在 traefik dashbard 查看配置是否加載traefik.png

我本以為這樣就好了。但是嘗試了下好像不能代理非容器服務?但是容器服務這樣配置是正常的,還是我的使用方式有問題?有知道的請告知我,謝謝

I make a new one#

動手糊了一個 docker 鏡像 https://hub.docker.com/r/mirrors2/chatgpt-api-proxy

version: '3.7'
services: 
  chatgpt-api-proxy:
    image: mirrors2/chatgpt-api-proxy
    container_name: chatgpt-api-proxy 
    restart: unless-stopped
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik"
      - "traefik.http.routers.chatgpt-api-proxy.entrypoints=websecure"
      - "traefik.http.routers.chatgpt-api-proxy.rule=Host(`your.domains`)"
      
networks:
  traefik:
    external: true

這回搞定了。

順便在 Koyeb 上部署了個公共代理 (不保證穩定性):

https://chatgpt.mirrors2.eu.org

IMG_0136.PNG

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。