最近Chatgpt十分的火爆,但是官方的仍然受地域,上网环境等限制。既然OpenAI官方提供了API接口,那么我们何不将其集成到自己的网页上,自己做一个类Chatgpt的前端呢?

在github上搜寻一圈后,我将目光锁定在这个仓库,https://github.com/Chanzhaoyu/chatgpt-web,那我们就开始把这个项目部署到自己的主机和域名上吧!

准备工作

  1. 一台VPS,腾讯云,阿里云,国外的云都可以,系统推荐Ubuntu 20.04

  2. 一个域名,腾讯云,阿里云,国外的云都可以,服务器在国内的云上的话域名需要备案

这里就不手把手教大家怎么注册VPS和域名了

部署个人Web版ChatGPT

首先通过任意SSH客户端登录你的VPS,sudo su切换到root

sudo su

在防火墙放行3002端口,如果云上控制台有其他防火墙也请一并放行

ufw allow 3002

安装一下Docker,Docker-compose和Nginx

apt install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
apt install ngnix

在任意位置创建一个目录,然后创建一个文件叫docker-compose.yml

mkdir chat-web
nano docker-compose.yml

将以下代码复制到docker-compose.yml中

version: '3'


services:

  app:

    image: chenzhaoyu94/chatgpt-web:main

    ports:

      - 3002:3002

    environment:

      OPENAI_API_KEY: [你自己的api key]

在chat-web的目录中,将docker拉起

docker-compose up -d

随后,在浏览器访问一下你的主机IP:3002,没问题就OK了

微信截图_20230307201645.png我们测试一下

微信截图_20230307201817.png

域名配置反代

当然,大家肯定不想以ip+端口的形式来访问自己的网站,那么接下来就要配置反向代理,例如,访问chat.abc.com的时候实际访问的是IP:3002

到自己的域名托管云上,配置一条A记录,将chat.你的域名解析到你VPS的ip

微信截图_20230307202547.png然后去配置nginx,在你的云主机里到nginx的配置目录,创建一个conf文件

cd /etc/nginx/conf.d
nano gpt.conf

复制以下代码到gpt.conf中

 server {

    listen 80;
    listen 443 ssl http2;    #没有证书的话去掉这行

    server_name chat.xiwei1993.tk;



    ssl_certificate    /etc/letsencrypt/live/xiwei1993.tk/fullchain.pem;  #没有证书的话去掉这行
    ssl_certificate_key    /etc/letsencrypt/live/xiwei1993.tk/privkey.pem; #没有证书的话去掉这行
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #没有证书的话去掉这行
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #没有证书的话去掉这行
    ssl_prefer_server_ciphers on; #没有证书的话去掉这行
    ssl_session_cache shared:SSL:10m; #没有证书的话去掉这行
    ssl_session_timeout 10m; #没有证书的话去掉这行
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;  

    
    location / {

      proxy_pass http://0.0.0.0:3002;

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

  }

随后重启nginx

nginx -s reload

这样,就可以通过你的域名访问了

微信截图_20230307203315.png

目前需要注意的

目前,这个项目并没有账号管理系统,也就是,任何人只要能访问到你的网页,就能用,那么,使用的就是你自己的额度,免费的18美金很容易被用完(可以自己去nginx里设置一些访问权限)

其次,这个项目只有前端,所有的问答记录保存在浏览器的localstorage里,不同电脑,不同浏览器都是不通的对话,记录没法共享(会后端数据库的可以自行实现)