完全解決 something went wrong 這個惱人的報錯,我尊貴的 GPT4 用戶怎麼能受這委屈!
會用到#
docker
nginx proxy manager
需要#
一台可以訪問 gpt 的伺服器,我用的日本,warp ipv6 解鎖的 GPT(可選,也可使用在線部署平台 vercel)
域名解析到伺服器上
openai 帳號
了解 linux 命令行基礎操作
開始操作#
伺服器 warp ipv6 解鎖 gpt#
參考的勇哥 ykk 的腳本
選擇 1 安裝 warp-go
然後選擇 2. 安裝 / 切換 WARP 單棧 IPV6
伺服器安裝 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
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 托管的,可以看到我這邊已經解析好了
然後設置 npm
domain names 就是你要設置的域名名稱,我建議二級域名,如果你就一個項目,那就直接用一級域名就行了。
然後這個 forward hostname/ip 不要無腦填 127.0.0.1!
因為 npm 是在 docker 容器裡通過 bridge 橋接到伺服器的,穿透了伺服器本機的端口,所以這裡要填你的 docker 的網關,來實現你的數據始終在你的伺服器中傳輸,(我這裡說的不明白,我盡力了,docker 的六種網絡模式我學過都忘了,還有我是文科生
獲取 docker 網關#
ip route
然後 forward port 端口 我用的 7862 因為我佈置了兩個,一個 gpt 普通號給朋友一起用,占用了 7861 端口,我又開了 7862 端口給我的 20 美刀一個月的尊貴的 gpt4 訂閱用戶用。
然後 ssl 證書這裡選獲取新證書,或者一步到位獲取泛域名證書,自行研究
配置訪問限制#
這是很重要的,關乎到你自己開小灶還是完全暴露到公網
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!
不多贅述。
大功告成!#
兩個字,優雅!
任何不懂的歡迎在Twitter私信我,喂飯教程第一次寫,肯定有很多漏洞請見諒,但這真的是我實踐得出的成果,感謝你的閱讀。