教程:部署个人专属的 ChatGPT 镜像教程

11,227 阅读6分钟

由于使用 ChatGPT 有着极为苛刻的环境要求,不仅要求有魔法,还要有特定地区的魔法,并且还得开全局魔法,导致挺长时间以来,我都靠着镜像站来占便宜。

但随着越来越的多的镜像站 404 后,虽然我还可以访问,但团队里的挺多人并没有魔法,为了方便团队成员的使用,我寻思自己搭建一套,这样大家不用魔法也可以自由使用 ChatGPT,而且相当稳定。

1. 整体思路

准备一台国度之外的服务器,这台服务器要满足两个要求

  • 能流畅调用 Open API的接口,不会因为地区问题被禁用
  • 服务器的 IP 不在国度的黑名单上(咱在国度之内才能访问)

然后在这台服务器上,部署我们的 web 应用,并配置上我们的 API Key。

2. 环境准备

服务器我使用的狗云的,线路优质,关键价格便宜,如果你没有其他更好的选择,可以考虑下。

步骤很简单:

1、登陆/注册狗云:www.dogyun.com/?ref=230330

2、实名认证:必须步骤,认证后才购买

3、充值:和一般的网购逻辑不同,狗云是先充值再消费

4、购买:这个最重要,下面详细说一下

狗云上的服务器有两种:经典云和弹性云

它们有以下几个区别:

  1. 部署方式:经典云服务器是基于传统的物理服务器架构实现的,你需要需要通过控制台或 API 创建并分配固定数量的 CPU、内存和存储资源。而弹性云则是基于虚拟化技术构建的云服务器,它可以根据你的实际需求动态调整计算和存储资源。
  2. 灵活性:由于经典云服务器的资源分配是静态的,因此无法根据业务需求进行快速扩展或缩小,使得它的灵活性相对较为有限。而弹性云则可以在几分钟内调整计算和存储资源,以满足不同业务场景下的需求变化。
  3. 费用:经典云服务器通常比弹性云更便宜,因为它们的资源是固定的,管理成本也较低。但是,在实际的使用中,如果你需要频繁地调整资源,则可能需要购买更多的经典云服务器,这将增加你的使用成本。而弹性云则可以根据实际的资源需求付费,可以更好地控制使用成本。
  4. 安全性:经典云服务器由于缺乏弹性云的冗余和高可用性功能,因此可能会存在数据丢失和服务中断等风险。弹性云则具有多种安全和备份机制,可以提供更加可靠和稳定的云计算服务。

总的来说呢,弹性云具有更加灵活、高可用和安全的优势,但相对来说也更加昂贵。如果你需要稳定和可靠的计算资源,建议选择弹性云;如果你需要相对较低的成本和管理复杂度,可以选择经典云服务器。

我这边选择的是弹性云,节点选择丑国的,满足以上两个条件

配置选择最低配置的,反正不够用的话还可以扩展。

系统我选择 Ubuntu20 的,没有选择 CentOS,主要 CentOS 系统相对较老,怕遇见一些包的问题,增加部署难度。

总的算下来只需要一个月只需要 45 块钱的基础费用,流量有超过,要再额外扣费。ChatGPT 应用主要是文字,一般是够用的。

机器创建好后,需要等待一段时间才能启动,可以在控制台上看到公网 ip 和密码,没有写明 ssh 端口,那就是 22

3. 下载代码

ChatGPT 的镜像源码,我选择 yuezk/chatgpt-mirror ,github 上也有其他的模板,没有仔细去对比差异,只要能用即可。

使用 git 直接下载 gpt 镜像网站的代码

git clone https://github.com/yuezk/chatgpt-mirror.git

进入 chatgpt-mirror 目录

cd chatgpt-mirror

并新建一个 .env 文件,输入 OPENAI_API_KEY:可以前往 API-Keys(platform.openai.com/account/api… 生成

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

4. 安装依赖

chatgpt-mirror 的运行需要有 nodejs 环境,因此我们要先安装一下nodejs 相关工具

1、安装 Node.js:首先,你需要安装 Node.js。这是因为 pnpm 是一个 Node.js 包管理器。你可以使用以下命令安装 Node.js:

sudo apt update
sudo apt install nodejs

2、安装 npm:pnpm 的安装需要使用 npm 命令,因此需要安装 npm 和 npx。

sudo apt install npm
sudo npm install -g npx

3、安装 pnpm:现在就可以使用 npm 来安装 pnpm。只需要使用以下命令即可:

sudo npm install -g pnpm

为了避免出现一些问题,我们把上面安装的 npm 和 pnpm 都更新至最新版本

首先升级 npm

  1. 安装 n 模块:n 是一个 Node.js 版本管理器,可以帮助你方便地安装和管理不同版本的 Node.js。
  2. 安装最新版本的 Node.js:安装完 n 模块后,就可以在终端中运行以下命令来安装最新版本的 Node.js:
# 安装 n 模块:n 是一个 Node.js 版本管理器,可以帮助你方便地安装和管理不同版本的 Node.js
sudo npm install -g n

# 安装完 n 模块后,就可以在终端中运行以下命令来安装最新版本的 Node.js
sudo n stable

再升级 pnpm

sudo npm update -g pnpm

5. 启动服务

一切准备就绪后,就可以使用如下命令来启动 web 服务

# 安装依赖
$ pnpm install

# 编译
$ pnpm run build

# 启动
$ pnpm run start:prod

在你没有魔法的环境下直接访问 http://ip:3000 就可以看到熟悉的页面了,大功告成。

由于上面的目录是在当前终端运行的,当终端断开后,进程也会退出,因此最好使用 nohup 将其放在后台运行

nohup pnpm run start:prod > server.log 2>&1 &

6. 优化事项

经过以上的步骤,我们已经拥有了一个私人的 ChatGPT 网站,只要你不对外推广,大概率就不会被 Q

拉起网站后,推荐再做一些优化:

  • 域名访问:购买一个域名,使用 nginx 进行反向代理
  • 进程守护:可以使用 systemd 或 supervisord来守护进程

不过由于我是内部小规模使用,并没有对外推广的打算,因此直接使用 ip+端口的方式进行访问,也省下了买域名的费用。

其他地址