首页 Docker部署及反代ChatGPT-WEB
文章
取消

Docker部署及反代ChatGPT-WEB

OpenAI官方于2023年3月发布了最新的GPT-3.5 Turbo API,价格实惠,只需1k tokens/$0.002,相当于每输出100万个单词只需花费2.7美元。因此,许多技术高手开始基于ChatGPT API开发自己的项目。本文提供了一个指南,介绍如何在自己的服务器上利用Docker和Nginx Proxy Manager搭建属于自己的ChatGPT网站,从而可以使用ChatGPT API的功能。

项目地址:https://github.com/Chanzhaoyu/chatgpt-web

chatgpt1

环境准备

  • 一个OpenAI账号,获取API Key。可以在Usage查余额和用量,无余额用不了API
  • 一台海外VPS,本文用的Debian系统
  • 一个域名,已经解析到你的VPS。没有也可以,反向代理用。

部署 ChatGPT

安装 Docker 和 Docker-compose

  • 安装Docker
1
2
3
4
#更新、安装wget vim curl

apt-get update && apt-get install -y wget vim curl
curl -sSL https://get.docker.com/ | sh
  • 安装 Docker-compose
1
2
curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

安装 ChatGPT-Web

  • 创建目录和 docker-compose.yml 文件
1
2
3
4
cd ~
mkdir -p data/chatgpt
cd data/chatgpt
vim docker-compose.yml
  • 填写 docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: '3'

services:
  app:
    image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
    ports:
      - 3002:3002
    environment:
# OPENAI_API_KEY和AUTH_SECRET_KEY必填,其它不知道用法的可以留空
      OPENAI_API_KEY: # sk-开头的API Key
      OPENAI_ACCESS_TOKEN: 
      OPENAI_API_BASE_URL: 
      OPENAI_API_MODEL: 
      API_REVERSE_PROXY: 
      AUTH_SECRET_KEY: # 设置网站的访问密码,防止在公网上被扫描两天刷完余额
      TIMEOUT_MS: 60000
      SOCKS_PROXY_HOST: 
      SOCKS_PROXY_PORT: 
      HTTPS_PROXY: 
  • 运行 Docker-compose
1
docker-compose up -d

现在就可以通过 IP:3002 来访问 ChatGPT 了。

  • 如何更新镜像

    • 拉取最新的镜像
    1
    2
    
      cd data/chatgpt
      docker-compose pull
    
    • 停止并重新启动容器
    1
    2
    
      docker-compose down
      docker-compose up -d
    

反向代理 ChatGPT

安装 Nginx Proxy Manager

  • 创建目录和 docker-compose.yml 文件
1
2
3
4
cd ~
mkdir -p data/npm
cd data/npm
vim docker-compose.yml
  • 填写 docker-compose.yml ,自己把里面的 npm 改一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
1
docker-compose up -d

设置反向代理

  • 打开 IP:81 来访问 Nginx Proxy Manager ,第一次登录会强制修改账号密码。初始账户和密码:
1
2
3
4
5
Email:
admin@example.com

Password:
changeme
  • 按下图标号顺序来

打开Proxy Hosts npm1

新增一个Proxy Host npm2

填写域名和IP npm3

添加Https npm4

设置Https npm5

反代完成,可以用域名访问 ChatGPT 了。

本文由作者按照 CC BY 4.0 进行授权