部署你自己的 ChatGPT 网页服务

分享讨论IT相关的内容
回复
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1187
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 338 次
被赞次数: 178 次
联系:

部署你自己的 ChatGPT 网页服务

帖子 BobMaster »

前言

这是一个由Yidadaa和众多社区志愿者共同维护的一个项目,UI简洁素雅,是一个十分好用的chatgpt网页客户端
项目地址: https://github.com/Yidadaa/ChatGPT-Next-Web
我fork的版本: https://github.com/hibobmaster/ChatGPT-Next-Web
图片

nodejs项目的编译和打包是挺“繁琐”的,这里我们采用docker用容器化的方式实现更优雅的部署方案。

准备

  1. 一台国外的GNU/Linux服务器,chatgpt的官方接口被大陆屏蔽了,因此需要一台国外的服务器以获得稳定的体验
  2. 准备一个域名,用于提供 https 公网服务

正式部署

下面的过程省略了获取openai api key,创建域名DNS记录,使用SSH连接服务器,安装Nginx,Docker,以及获取SSL证书的过程
PS: 都会玩服务器了,所以我假设你会
假设工作目录是: /home/bobmaster/projects/chatgpt-web

进入到工作目录
cd /home/bobmaster/projects/chatgpt-web

创建 compose.yaml

代码: 全选

services:
  app:
    image: hibobmaster/chatgptnextweb:latest
    container_name: chatgptnextweb
    ports:
      - "127.0.0.1:18080:3000"
    env_file:
      - .env
创建 .env

代码: 全选

OPENAI_API_KEY="你的openai api key"
启动容器

代码: 全选

sudo docker compose pull && sudo docker compose up -d
创建Nginx配置文件,使用你的域名提供服务
请将gpt.hibobmaster.com替换为你的域名,SSL证书的公钥和私钥也记得替换

代码: 全选

server {
    listen 80;
    listen [::]:80;
    server_name "gpt.hibobmaster.com";
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 http2 ssl;
    listen [::]:443 http2 ssl;
    server_name "gpt.hibobmaster.com";

    ssl_certificate /etc/nginx/ssl/gpt.hibobmaster.com.cert.pem;
    ssl_certificate_key /etc/nginx/ssl/gpt.hibobmaster.com.key.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    # curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
    ssl_dhparam /etc/nginx/dhparam;

    # intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/nginx/ssl/gpt.hibobmaster.com.cert.pem;

    # replace with the IP address of your resolver
    resolver 127.0.0.1 1.1.1.1;

    location / {
        proxy_pass http://127.0.0.1:18080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $http_host;
        # basic auth 服务是为了防止未授权的访问,密码可使用下面的指令生成
        # printf "用户名:$(openssl passwd -apr1)" >> /etc/nginx/passwords
        # printf "bobmaster:$(openssl passwd -apr1)" >> /etc/nginx/passwords
        # 生成后请取消下面两行的注释内容
        # auth_basic "Private";
        # auth_basic_user_file /etc/nginx/passwords;
    }
}
测试配置是否正确并启动Nginx http服务

代码: 全选

sudo nginx -t && sudo nginx -s reload
然后打开你的域名,进行测试吧

结语

快去部署一个自己的服务玩玩吧!
我fork的版本相比原版多了一个头像和emoji静态资源反代功能,原版会调用cdn.jsdelivr.net的地址,但是该地址在大陆有时无法正常访问,然后导致头像“开裂”。
上次由 BobMaster 在 2023年 4月 6日 09:56,总共编辑 2 次。
人生如音乐,欢乐且自由
头像
ejsoon
圈圈精英
圈圈精英
帖子: 2179
注册时间: 2022年 11月 18日 17:36
为圈友点赞: 96 次
被赞次数: 92 次
联系:

Re: 部署你自己的 ChatGPT 网页服务

帖子 ejsoon »

你的fork是否可以提交給原版?
https://ejsoon.win/
天蒼人頡:發掘好玩事物
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1187
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 338 次
被赞次数: 178 次
联系:

Re: 部署你自己的 ChatGPT 网页服务

帖子 BobMaster »

ejsoon 写了: 2023年 3月 29日 11:15 你的fork是否可以提交給原版?
因为头像地址是编译时的变量,process.env 获取的环境变量在运行时才有效,我没有想到特别优雅的解决方案。
目前使用的是创建一个配置文件,然后进行解析,由于我不会javascript/typescript,代码质量不太好,因此不打算提交。
https://github.com/hibobmaster/ChatGPT- ... 22a2df68d4

不过目前提交了个CI流水线自动化构建脚本
https://github.com/Yidadaa/ChatGPT-Next ... 792a607a45
人生如音乐,欢乐且自由
回复
  • 猜你喜欢
    回复总数
    阅读次数
    最新帖子
  • I am planning to improve my English expressing by chatting whit chatGPT.
    ejsoon » » 位于 茶座
    4 回复总数
    461 阅读次数
    最新帖子 ejsoon
  • 关于 AI 的深度研究:ChatGPT 正在产生心智吗?
    BobMaster » » 位于 茶座
    6 回复总数
    1394 阅读次数
    最新帖子 ejsoon

在线用户

正浏览此版面之用户: 没有注册用户 和 3 访客