目 录CONTENT

文章目录

突破网络封锁:在国内使用ChatGPT的方法

GrantLi
2023-04-20 / 0 评论 / 6 点赞 / 3029 阅读 / 11015 字 / 正在检测是否收录...

一、环境

环境要求

推荐VPS:Vultr.com
套餐选择如下:
套餐选择
套餐选择

VPS安装

CentOS 6和7/Debian6+/Ubuntu14+ ShadowsocksR/Shadowsocks一键部署管理脚本:

1. SS/SSR安装

(1)ubuntu 18.04 -

# Linux
apt-get -y install wget

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

(2) ubuntu 20.04+

# 设置python版本
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

# 选择python版本(选择python2 作为默认python版本)
sudo update-alternatives --config python

# 安装wget
apt-get -y install wget

# 安装SSR
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

参数设置如下:
(1)加密方式:none 协议:origin 混淆:tls1.2_ticket_auth

(2)加密方式:none 协议:auth_chain_a 混淆:tls1.2_ticket_auth

2. SS
# Linux
apt-get -y install wget

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ss-go.sh && chmod +x ss-go.sh && bash ss-go.sh

环境配置

docker安装

curl -sSL https://get.docker.com | sh

# 启动并设置开机自启
systemctl start docker
systemctl enable docker
systemctl status docker

部署docker-compose

# 定义Docker-Compose版本变量
export composeVer=v2.16.0

# 下载最新版本的 docker-compose 到 /usr/bin 目录下
curl -L https://github.com/docker/compose/releases/download/${composeVer}/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

# 给 docker-compose 授权
chmod +x /usr/bin/docker-compose

# 检查docker-compose安装情况
docker-compose -v

二、反向代理配置

部署反向代理模式1:VPS IP没有被拉黑

如果你的VPS IP稳定,或者你使用的科学上网地址稳定,那就首选这种方式

mkdir -p go-chatgpt-api && cd go-chatgpt-api

vim docker-compose.yml

添加如下内容:

version: "3" 
services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080         
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - TZ=Asia/Shanghai
      - PROXY=   
      - ARKOSE_TOKEN_URL=
      - BX=
      - BX_URL=
      - OPENAI_EMAIL=
      - OPENAI_PASSWORD=
    restart: always
    extra_hosts:
      - host.docker.internal:host-gateway
    logging:
      driver: "json-file"
      options:
        max-size: "10m"  
        max-file: "3"  
  1. 启动docker服务
docker-compose up -d
  1. 检查运行的容器;确保容器状态为UP
docker ps

image-1682099139181
4. 检测容器映射到宿主机的监听端口是否监听

ss -tnlp|grep 8080

image-1682099254754

  1. 检查web chatgpt是否连接正常
docker logs -f go-chatgpt-api

image-1682099875239

部署反向代理模式2:基于Cloudflare WARP模式解决VPS IP被拉黑(推荐)

  1. 解决IP被Ban,提示Access denied之类的报错
    如果使用此模式还是提示Access denied,大概率是你机器IP不干净或者用的国内服务器导致验证码过不去
    Cloudflare WARP官网文档:https://developers.cloudflare.com/warp-client/get-started/linux
vim docker-compose.yml

添加如下内容:

version: "3"
services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - TZ=Asia/Shanghai
      - PROXY=socks5://chatgpt-proxy-server-warp:65535
      - BX=
      - BX_URL=
      - OPENAI_EMAIL=
      - OPENAI_PASSWORD=
    depends_on:
      - chatgpt-proxy-server-warp
    restart: always
    extra_hosts:
      - host.docker.internal:host-gateway
    logging:
      driver: "json-file"
      options:
        max-size: "10m"  
        max-file: "3"  
        
  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    environment:
      - LOG_LEVEL=OFF
    restart: always
    extra_hosts:
      - host.docker.internal:host-gateway
    logging:
      driver: "json-file"
      options:
        max-size: "10m"  
        max-file: "3"  
  1. 启动docker服务
docker-compose up -d
  1. 检查运行的容器;确保容器状态为UP
docker ps

image-1682099139181
4. 检测容器映射到宿主机的监听端口是否监听

ss -tnlp|grep 8080

image-1682099254754

  1. 检查web chatgpt是否连接正常
docker logs -f go-chatgpt-api

image-1682099875239

三、使用自建代理

使用access token模式,并使用我们自建的代理地址进行访问;自建IP的访问地址为
http://ip:8080/chatgpt/backend-api/conversation

四、chatgpt-web安装

安装node和npm

# 安装node
sudo apt install nodejs

# 安装npm
sudo apt install npm

# 查看node版本
node -v

node 需要 ^16 || ^18 || ^19 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本,接下来升级node:

# 清除node的缓存
sudo npm cache clean -f

# 安装n模块【管理模块 n是管理 nodejs版本】
sudo npm install -g n

# 升级node
sudo n stable // 把当前系统的 Node 更新成最新的 “稳定版本”
n lts // 长期支持版
n latest // 最新版
n 16 // 指定安装版本

# 安装pnpm
npm install pnpm -g

安装及配置chatgpt-web

# 下载源码
git clone -b v1.3 https://github.com/GJXS1980/chatgpt-web.git

cd chatgpt-web/service && cp .env.example .env

vi .env

切换方式:

  1. 使用 OpenAI API Key 请填写 OPENAI_API_KEY 字段 (获取 apiKey)
  2. 使用 Web API 请填写 OPENAI_ACCESS_TOKEN 字段 (获取 accessToken)
    同时存在时以 OpenAI API Key 优先
  3. 添加API_REVERSE_PROXY= http://ip:8080/conversation

安装依赖

进入文件夹 /service 运行以下命令

pnpm install

根目录下运行以下命令

pnpm bootstrap

测试环境

进入文件夹 /service 运行以下命令

pnpm start

根目录下运行以下命令

pnpm dev

demo演示

点击chatgpt进入网页体验(验证码:GrantLi)
image-1682100044406

五、使用 systemctl 部署,实现开机自启动

后端服务开机自启动

# 打开chatgpt-backend.service文件
sudo vim /etc/systemd/system/chatgpt-backend.service

添加以下内容:

# 添加以下内容
[Unit]
Description=chatgpt-backend
[Service]
WorkingDirectory=xxx/chatgpt-web/service # 请修改成你的后端服务文件夹的绝对路径
ExecStart=/usr/local/bin/pnpm start
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

设置开机自启动:

sudo systemctl enable chatgpt-backend.service  # 开机自启
sudo systemctl start chatgpt-backend.service  # 启动服务
sudo systemctl status chatgpt-backend.service # 查看服务状态
sudo systemctl stop chatgpt-backend.service # 停止服务

前端服务开机自启动

sudo vim /etc/systemd/system/chatgpt-frontend.service

添加以下内容:

# 添加以下内容
[Unit]
Description=chatgpt-frontend
[Service]
WorkingDirectory=xxx/chatgpt-web # 请修改成你的前端服务文件夹的绝对路径
ExecStart=/usr/local/bin/pnpm run dev
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

设置开机自启动:

sudo systemctl enable chatgpt-frontend.service  # 开机自启
sudo systemctl start chatgpt-frontend.service  # 启动服务
sudo systemctl status chatgpt-frontend.service # 查看服务状态
sudo systemctl stop chatgpt-frontend.service # 停止服务

六、内网穿透

frp

[chatgpt_tcp]
type = tcp
local_ip = 172.17.0.1     
local_port = 1995
remote_port = 1095

参考链接

  1. Docker容器如何优雅地访问宿主机网络
6

评论区