mu_cat

mu_cat

github

曲線救國使用GPT4

完全解決 something went wrong 這個惱人的報錯,我尊貴的 GPT4 用戶怎麼能受這委屈!

會用到#

docker

pandora

nginx proxy manager

pake

需要#

一台可以訪問 gpt 的伺服器,我用的日本,warp ipv6 解鎖的 GPT(可選,也可使用在線部署平台 vercel)

域名解析到伺服器上

openai 帳號

了解 linux 命令行基礎操作

開始操作#

伺服器 warp ipv6 解鎖 gpt#

參考的勇哥 ykk 的腳本

選擇 1 安裝 warp-go

然後選擇 2. 安裝 / 切換 WARP 單棧 IPV6

image-20230426011250748

伺服器安裝 docker 與 docker compose#

是個伺服器應該都有趴!我的 linux 系統是 Ubuntu,以下為 Ubuntu 系統演示,不同的 linux 版本命令會有所不同自行谷歌

卸載舊版本#

sudo apt-get remove docker \
               docker-engine \
               docker.io

使用 APT 安裝#

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

安裝 docker#

sudo apt-get install docker.io

安裝 docker compose#

curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

安裝 Nginx proxy manager#

新建一個 npm 文件夾來存儲數據#

cd /root
mkdir npm
cd npm

編輯 docker-compose.yml 文件#

vim docker-compose.yml
version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

運行容器#

docker-compose up -d 

進入 npm web 面板#

記得開啟伺服器硬體防火牆(伺服器商界面的 firewall)與伺服器本身的軟體防火牆,Ubuntu 為 ufw

npm 網頁地址即你的伺服器 ip:81

一開始會讓你設置用戶名和密碼之類的

默認用戶名為 [email protected]

默認密碼 changeme

更多 npm 細節可以看這篇文章,我的 linux 基礎很多都是實戰他的教程學會的

教程

安裝 pandora#

這裡我們演示的是,把 Accesstoken 寫死在環境變量裡面的方式,我很懶不想訪問一次就輸入一次,所以直接寫死,後面會用 npm 的 access list 實現不被濫用

如何獲取 accesstoken

請在 ChatGPT 官網登錄完成後,打開 F12 查看https://chat.openai.com/api/auth/session 請求返回的 accessToken

image-20230426010400758

docker run \
    -itd \
    --name pandora2 \
    --restart always \
		-p 7862:7861 \
    -e PANDORA_ACCESS_TOKEN=你的acesstoken  \
    -e PANDORA_SERVER='0.0.0.0:7861' \
    pengzhile/pandora

確認防火牆開啟響應端口(7861)後,先用 ip: 端口看看是否正常運行

如果不正常的話!docker logs pandora 查看一下報錯信息然後問 chatgpt,一般來說不會有問題!

配置反向代理#

現在 npm 和 pandora 已經正常運行了,現在要做的就是實現域名訪問,首先確保你的域名已經解析到了你的 ip

我是 dnspod 托管的,可以看到我這邊已經解析好了

image-20230426011842148

然後設置 npm

image-20230426011642437

domain names 就是你要設置的域名名稱,我建議二級域名,如果你就一個項目,那就直接用一級域名就行了。

然後這個 forward hostname/ip 不要無腦填 127.0.0.1!

因為 npm 是在 docker 容器裡通過 bridge 橋接到伺服器的,穿透了伺服器本機的端口,所以這裡要填你的 docker 的網關,來實現你的數據始終在你的伺服器中傳輸,(我這裡說的不明白,我盡力了,docker 的六種網絡模式我學過都忘了,還有我是文科生

獲取 docker 網關#

ip route

image-20230426012340965

然後 forward port 端口 我用的 7862 因為我佈置了兩個,一個 gpt 普通號給朋友一起用,占用了 7861 端口,我又開了 7862 端口給我的 20 美刀一個月的尊貴的 gpt4 訂閱用戶用。

image-20230426012551362

然後 ssl 證書這裡選獲取新證書,或者一步到位獲取泛域名證書,自行研究

image-20230426012636336

配置訪問限制#

這是很重要的,關乎到你自己開小灶還是完全暴露到公網

image-20230426012738264

allow 這裡改成你的ip地址或者你分流的訪問這個gpt的特定ip;
deny all;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

因為我在宿舍,無論怎麼撥號都會給一個確定的號段的 ip,所以我就設置了僅限這個號段的 ip 區間,當然你也可以通過 npm 的 accesss lists 去限制訪問的 ip,設置密碼等等,我試了,我只能說,我玩不來,我還是吃 nginx 的老本直接寫在配置裡。

當我在宿舍時,很好的就能訪問。

當我在外面時,我通過連接內網穿透我宿舍軟路由的 vmess server 端口進行利用宿舍的內網環境進行訪問,我是個懶狗,這樣穿透內網端口很危險,被爆破的話所有內網設備就都暴露了。

你也可以設置一個單獨的代理伺服器進行訪問,或者設置密碼。

所有都設置好之後,手機流量訪問一下確認一下 ip 限制是否成功了,

通過 pake 打包鏡像網頁#

環境配置 Windows/Linux 注意點#

  • 十分重要 查看 Tauri 提供的依賴指南

  • 把依賴指南的東西全部安裝然後重啟

    安裝#

    npm install -g pake-cli
    

    打包你的 gpt 網頁#

    pake url
    

    然後他會指引你起名字的,或者 diy 圖標,pake 的教程文檔真的非常非常清楚,很 nice!

    不多贅述。

大功告成!#

image-20230426013801378

image-20230426013830412

兩個字,優雅!

任何不懂的歡迎在Twitter私信我,喂飯教程第一次寫,肯定有很多漏洞請見諒,但這真的是我實踐得出的成果,感謝你的閱讀。

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