通过docker在VPS上一键部署自己专属ChatGPT


分类:玩转Internet       作者:Caq98i       发布时间:2023-07-06       更新时间:2023-07-07 阅读量:526    


本文将介绍通过docker在VPS上一键部署自己专属ChatGPT,无需账号,无需API,无需Token,有网络就能随时随地访问自己专属的chatGPT



准备工作:

vps一台,已安装docker(Linux系统Docker安装教程

racknerd $14一年VPS(4000 GB流量每月,1Gbps) 了解更多

 

简单部署:

ssh登录VPS后,直接执行:

docker run -p 1338:1338 --name gpt -d ramonvc/freegpt-webui

然后,在浏览器中使用 ip:1338 进行访问。

 

进阶部署:

实现目标:开启https域名访问,使用nginx进行简单的用户认证,从而实现私有部署。

准备工作:已做好域名解析(本教程是假设你已经通过cloudflare进行了DNS解析并开启的CDN),已创建了一个docker网络(在本教程中,所有的容器都将放置在这个网络中并都有一个固定的ip方便nginx的访问):

docker network create --subnet 192.168.18.0/24 --gateway 192.168.18.1 anqiqii

在本教程中创建了一个名为anqiqii的网络,并确定网关为192.168.18.1(宿主机的内网IP)

添加的域名解析与docker网络的IP分配如下:

sea.anqi.ml   --> 服务器公网IP

192.168.18.5         nginx

192.168.18.55     chatGPT

 

① 安装nginx

创建一个nginx容器:

docker run -d \
--name nginx --network=anqiqii --ip 192.168.18.5 \
-p 80:80 \
-p 443:443 \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/cert:/home/cert

根据这个部署nginx的挂载命令,容器中的路径 /usr/share/nginx/html/ 其实对应了宿主机的 /home/nginx/html/ 路径,这个路径一般放置网站的根目录文件夹。在宿主机的 /home/nginx/html/ 目录下创建一个文件夹,以你的域名进行命名,在本例中,文件夹命名为:sea.anqi.ml

 

② 在宿主机的 /home/cert/ 目录下放置证书与私钥,可以使用cloudflare提供的证书(cf的控制面板 → SSL/TLS → 源服务器)。

 

③ 创建密码:参考:配置nginx下载服务器并要求输入用户名密码进行身份验证(本例中,可将密码文件放在 /home/cert/ 目录下)

 

④ 部署chatGPT容器:

docker run --name gpt -d --net anqiqii --ip 192.168.18.55 ramonvc/freegpt-webui

 

⑤ 在 /home/nginx/conf.d/ 目录下创建一个文件,以 .conf 结尾,在本例中,文件命名为:sea.anqi.ml.conf;打开此文件,编辑内容为:

server
{
listen 80;
listen 443 ssl http2;

server_name sea.anqi.ml;       # 修改为你自己为chatGPT准备的域名
index index.php index.html index.htm default.php default.htm default.html;
root /usr/share/nginx/html/sea.anqi.ml;      # 设置网站的根目录地址,将sea.anqi.ml替换为你自己的域名

ssl_certificate /home/cert/path/fullchain.pem;     # 更改为证书所在路径,一般是fullchain.pem文件
ssl_certificate_key /home/cert/path/privkey.pem;       # 更改为私钥所在路径,一般是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";

auth_basic "Authorization";
auth_basic_user_file /home/cert/yanzen.pass;    #指定密码文件的路径


#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}

location ~* \.log$ {
deny all;
}

#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}

location / {     #反代chatGPT容器
proxy_pass http://192.168.18.55:1338;        # 修改为插头GPT容器实际的ip与端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /usr/share/nginx/html/sea.anqi.ml/sssvip.log;
# 设置日志存放路径,将sea.anqi.ml替换为你自己的域名,可以注释掉,不记录访问正常的日志
error_log /usr/share/nginx/html/sea.anqi.ml/sssvip.error.log;     # 设置错误日志存放路径,将sea.anqi.ml替换为你自己的域名
}

 

⑥ 检查并重启nginx服务:

docker exec nginx nginx -t
docker exec nginx nginx -s reload

 

⑦ 打开浏览器通过域名访问。


捐赠通道,感谢!🦀🦀


          support a 🍕


留言与评论







限时特惠促销