本教程参考了多个在线资源,使用了开源项目 Chatgpt-web,经过亲测可用。使用DigitalOcean的服务器,无需翻墙。
费用概览
- DigitalOcean服务器:4美元/月。注册时可获得200美元,使用期限为2个月。
- 野卡开卡费用:15美元。
- OpenAI Token费用:每100,000个Token 4美分,大约相当于5万个汉字。
先决条件
- DigitalOcean账号
- OpenAI账号
推荐使用 野卡,因为OpenAI只支持信用卡支付,但不接受中国信用卡。同时,创建API Key时需要验证手机号,而中国手机号不被支持。使用野卡可以完成注册、手机号验证和开卡的全流程。开卡费用为15美元,充值费率为3%。请按照野卡的步骤完成操作,并保存申请到的OpenAI API Key,后续会用到。
开始搭建
一. 创建DigitalOcean服务器
我选择了新加坡数据中心,并选择了CentOS 8。
CPU选项
对于个人使用,选择4美元/月的最低配置即可。
在 Authentication Method 步骤中,选择SSH Key。DigitalOcean的控制台提供了创建SSH Key的相关教程。
最后,点击 Create Droplet,等待服务器创建成功。创建成功后,你可以看到服务器IP,记得复制下来备用。
二. 服务器安装Docker
点击 Access Console,打开服务器的终端。
终端窗口加载成功后,安装Docker。以下步骤经过亲测可用。
-
更新yum
bash
yum update -
下载docker-ce的repo
bash
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo -
安装依赖
bash
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm -
安装docker-ce
bash
yum install docker-ce -
启动docker
bash
systemctl start docker -
开机启动docker
bash
systemctl enable docker -
安装docker-compose
bash
sudo wget https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m) -O /usr/local/bin/docker-compose
如果遇到 sudo: wget: command not found
错误,解决办法是安装wget:
bash
yum -y install wget
-
添加操作权限
bash
sudo chmod +x /usr/local/bin/docker-compose -
设置快捷方式
bash
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose -
查看docker-compose版本
bash
docker-compose –version
至此,Docker安装完成。
三. 服务器部署ChatGPT
我参考了相关教程,以下步骤经过亲测可用。
- 创建docker-compose.yml文件
-
在服务器上创建一个目录:chatgpt_web
bash
mkdir chatgpt_web && cd chatgpt_web -
创建docker-compose.yml文件
bash
vim docker-compose.yml
如果遇到 -bash: vim: command not found
错误,解决办法是安装vim:
bash
yum -y install vim*
- 在yml配置文件中填写以下内容并保存:
yaml
version: ‘3’
services:
app:
image: chenzhaoyu94/chatgpt-web:latest
ports:
– 3002:3002
environment:
# api秘钥
OPENAI_API_KEY: sk-xxx(修改为自己申请的秘钥)
# 超时,单位毫秒,可选
TIMEOUT_MS: 60000
注意:在编写yml文件时,请删除注释,否则可能会报错。
-
部署并启动运行
bash
docker-compose up -d -
登录chatgpt_web页面
运行成功后,在浏览器直接访问(需要开放3002端口):
http://服务器IP:3002
服务器IP为一开始保存下来的IP。
成功后,你将看到如下界面:
其他问题解决
如果遇到 fetch failed
,可以尝试刷新页面。如果刷新无效,重启Docker并重新启动服务。