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私信我,喂饭教程第一次写,肯定有很多漏洞请见谅,但这真的是我实践得出的成果,感谢你的阅读。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。