<
Chatgpt 服务器 搭建
>
上一篇

无图形界面的 linux 使用代理
下一篇

Android 打开自定义 scheme 的链接

(2023.12 更新,api 配额使用完了,但在 openai 官网是可以直接使用 3.5 的,需要登录,先用着吧,收费的只是所有的 api 和 官网的 4.0)

(2023.11.05 更新, 近端时间 风太大, 很多 qiang 都倒了,删库了但软件本身依然能用。
可依靠备份仓库或已下载的安装包续命,或指定 gpt 的代理地址 OPENAI_API_BASE_URL 为国内镜像)

最近,白嫖的 New Bing (Bing AI) 又抽风了,想要稳定使用还得靠自己,于是便自己搞了个相对稳定点的,

方案1:qiang外 IP 服务器 + ChatGPT(key) + docker 镜像

方案2:qiang内 IP 服务器 + ChatGPT(key) + 代理 + docker 镜像

方案3;本地搭建, 只需 ChatGPT(key) + 代理 + docker 镜像

根据自己的资源选择方案。根据当前手上的资源 我选了方案2

安装

  1. 下载 docker.sh 脚本
curl -fsSL https://get.docker.com -o get-docker.sh
  1. 执行脚本
sh get-docker.sh
  1. 运行docker
// 运行
systemctl start docker

// 可查看运行状态
systemctl status docker
  1. 创建 OpenAI 容器,会自动下载镜像
docker run --name chatgpt-web -d -p 1024:3002 \
--env OPENAI_API_KEY=秘钥 \
--env AUTH_SECRET_KEY=密码 \
--env OPENAI_API_BASE_URL=https://api.openai.com \
chenzhaoyu94/chatgpt-web:latest

-e 指定代理 其它同上, IP 和端口 替换为真实 IP 和代理端口, IP 不能使用 localhost 和 127.0.0.1 等

docker run --name chatgpt-web -d -p 1024:3002 \
-e HTTP_PROXY=http://IP:7890 \
-e HTTPS_PROXY=http://IP:7890 \
--env OPENAI_API_KEY=密钥 \
--env AUTH_SECRET_KEY=密码 \
--env OPENAI_API_BASE_URL=https://api.openai.com \
chenzhaoyu94/chatgpt-web:latest

这一步安装时间较长,

秘钥:OpenAI的key,将你自己的key复制进去,key的获取可在网t上b了解

密码:访问密码,可以自己随意设置

  1. 检查容器运行情况
docker ps -a

将安全组添加端口1024

到这就可以访问了,不过只能IP访问(端口是1024)

域名

利用 Nginx 进行端口转发

重启

// 查看容器
docker ps -a

// 停止 by容器名
docker stop chatgpt-web

// 启动 by容器名
docker start chatgpt-web

重置秘钥 (删除容器 重新创建)

docker ps -a

docker stop chatgpt-web

docker rm -f chatgpt-web

docker ps -a

docker run --name chatgpt-web -d -p 1024:3002 \
--env OPENAI_API_KEY=秘钥 \
--env AUTH_SECRET_KEY=密码 \
--restart always chenzhaoyu94/chatgpt-web:latest

其它说明

官方已免费开放 ChatGPT 3.5

搞到账号后(可以自己想办法注册,或购买独享账号),使用 API 超出额度后,可以直接访问官网免费使用 ChatGPT 3.5

代理 IP 可能被 Ban,尝试切换 IP

镜像

Docker 镜像 chenzhaoyu94/chatgpt-web:latest (ChatGPT 3.5, 模型是 2021 年 9 月完成训练,GPT回答中说的)(截至 2024 年 1 月 官网最新的 3.5 模型的数据是 2022 年 1 月的)

阿里云镜像 registry.cn-hangzhou.aliyuncs.com/generative/chatgpt-web

Docker 镜像地址 https://hub.docker.com/r/chenzhaoyu94/chatgpt-web

Docker compose 及 相关参数

version: '3'

services:
  app:
    image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
    ports:
      - 3002:3002
    environment:
      # 二选一
      OPENAI_API_KEY: xxxxxx
      # 二选一
      OPENAI_ACCESS_TOKEN: xxxxxx
      # API接口地址,可选,设置 OPENAI_API_KEY 时可用
      OPENAI_API_BASE_URL: xxxx
      # API模型,可选,设置 OPENAI_API_KEY 时可用
      OPENAI_API_MODEL: xxxx
      # 反向代理,可选
      API_REVERSE_PROXY: xxx
      # 访问权限密钥,可选
      AUTH_SECRET_KEY: xxx
      # 每小时最大请求次数,可选,默认无限
      MAX_REQUEST_PER_HOUR: 0
      # 超时,单位毫秒,可选
      TIMEOUT_MS: 60000
      # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
      SOCKS_PROXY_HOST: xxxx
      # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
      SOCKS_PROXY_PORT: xxxx

Linux 代理客户端 使用

查看另外一篇 无图形界面的 Linux 使用代理

关于 docker 代理

本地测试 不需要给 docker 再次设置代理,可以直接走宿主机代理

服务器测试 以下的 代理2 代理3 设置了但无效, 最终我是用了 代理1

以下的 IP 地址不要用 localhost 和 127.0.0.1,需要实际的 IP 才能访问到,docker 容器相当于一台独立的主机所以 localhost 和 127.0.0.1 是指向 容器本身 而不是服务器 IP

创建容器时指定

docker run xxx -e -e HTTP_PROXY=http://IP:7890 -e HTTPS_PROXY=http://IP:7890 镜像

vim ~/.docker/config.json

{
  "proxies":
    {
      "default":
        {
          "httpProxy": "http://IP:7890", 
          "httpsProxy": "http://IP:7890"
        }
    }
}

sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://IP:7890/" "HTTPS_PROXY=https://IP:7890/"

验证 docker 代理

先在 http://clash.razord.top/ 代理客户端设置 全局代理 便于测试

// 重新加载Docker配置
sudo systemctl daemon-reload

// 重启Docker服务
sudo systemctl restart docker

// 启动容器
docker start chatgpt-web

// 进入容器
docker exec -it chatgpt-web sh
// 测试ip。默认不带 curl 命令,只好用 wget。有的话直接 `curl myip.ipip.net`
wget myip.ipip.net
// 也可一步到位, 像 adb 命令一样
// docker exec -it chatgpt-web wget myip.ipip.net
// 查看wget下载的内容
cat index.html
// 删除测试时下载的文件
rm index.html

参考 https://zeejk007.online/

docker 日志

docker logs [OPTIONS] CONTAINER
  Options:
        --details        显示更多的信息
    -f, --follow         跟踪实时日志
        --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
        --tail string    从日志末尾显示多少行日志, 默认是all
    -t, --timestamps     显示时间戳
        --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

docker logs chatgpt-web

Top
Foot