由于使用 ChatGPT 有着极为苛刻的环境要求,不仅要求有魔法,还要有特定地区的魔法,并且还得开全局魔法,导致挺长时间以来,我都靠着镜像站来占便宜。
但随着越来越的多的镜像站 404 后,虽然我还可以访问,但团队里的挺多人并没有魔法,为了方便团队成员的使用,我寻思自己搭建一套,这样大家不用魔法也可以自由使用 ChatGPT,而且相当稳定。
1. 整体思路
准备一台国度之外的服务器,这台服务器要满足两个要求
- 能流畅调用 Open API的接口,不会因为地区问题被禁用
- 服务器的 IP 不在国度的黑名单上(咱在国度之内才能访问)
然后在这台服务器上,部署我们的 web 应用,并配置上我们的 API Key。
2. 环境准备
服务器我使用的狗云的,线路优质,关键价格便宜,如果你没有其他更好的选择,可以考虑下。
步骤很简单:
1、登陆/注册狗云:www.dogyun.com/?ref=230330
2、实名认证:必须步骤,认证后才购买
3、充值:和一般的网购逻辑不同,狗云是先充值再消费
4、购买:这个最重要,下面详细说一下
狗云上的服务器有两种:经典云和弹性云
它们有以下几个区别:
- 部署方式:经典云服务器是基于传统的物理服务器架构实现的,你需要需要通过控制台或 API 创建并分配固定数量的 CPU、内存和存储资源。而弹性云则是基于虚拟化技术构建的云服务器,它可以根据你的实际需求动态调整计算和存储资源。
- 灵活性:由于经典云服务器的资源分配是静态的,因此无法根据业务需求进行快速扩展或缩小,使得它的灵活性相对较为有限。而弹性云则可以在几分钟内调整计算和存储资源,以满足不同业务场景下的需求变化。
- 费用:经典云服务器通常比弹性云更便宜,因为它们的资源是固定的,管理成本也较低。但是,在实际的使用中,如果你需要频繁地调整资源,则可能需要购买更多的经典云服务器,这将增加你的使用成本。而弹性云则可以根据实际的资源需求付费,可以更好地控制使用成本。
- 安全性:经典云服务器由于缺乏弹性云的冗余和高可用性功能,因此可能会存在数据丢失和服务中断等风险。弹性云则具有多种安全和备份机制,可以提供更加可靠和稳定的云计算服务。
总的来说呢,弹性云具有更加灵活、高可用和安全的优势,但相对来说也更加昂贵。如果你需要稳定和可靠的计算资源,建议选择弹性云;如果你需要相对较低的成本和管理复杂度,可以选择经典云服务器。
我这边选择的是弹性云,节点选择丑国的,满足以上两个条件
配置选择最低配置的,反正不够用的话还可以扩展。
系统我选择 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
- 安装 n 模块:n 是一个 Node.js 版本管理器,可以帮助你方便地安装和管理不同版本的 Node.js。
- 安装最新版本的 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+端口的方式进行访问,也省下了买域名的费用。