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
环境准备
- 一个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
- 按下图标号顺序来
反代完成,可以用域名访问 ChatGPT 了。