功能更强!拥有数据库的ChatGPT-Web

2023年05月24日 1923点热度 0人点赞 2条评论

前言

随着ChatGPT的普及,各种第三方应用也越来越多,今天再介绍一个更加强大的"chatgpt web"新项目,由原版chatgpt-web 衍生而来,主要特色是加入了后端,增加了注册登录、同步历史会话、设置单独会话的Prompt等功能。我最喜欢的就是可以多点同步历史会话,解决了换台电脑或手机就会丢失原先对话记录的问题。

项目地址:Kerwin1202/chatgpt-web

 

安装部署

由于该项目包含前端和后端,所以最方便的安装方式是通过docker-compose进行部署,在已经安装了docker的前提下,我们一步一步进行。

安装docker-compose:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

设置docker-compose:

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

在docker 文件夹中创建 kerwin_chatgpt 目录,并进入该目录:

work=~/docker/kerwin_chatgpt
mkdir -p $work; cd $work

新建docker-compose.yml文件,这里包含的是项目的核心内容

vi $work/docker-compose.yml

根据自己的需要,修改下面文件的自定义内容后,粘贴进docker-compose.yml文件,这里去掉了不常用的代理和敏感词审核的设置。

version: '3'

services:
  app:
    image: kerwin1202/chatgpt-web # 总是使用latest,更新时重新pull该tag镜像即可
    container_name: chatgptweb
    restart: unless-stopped
    ports:
      - 3002:3002
    depends_on:
      - database
    environment:
      TZ: Asia/Shanghai
      # 二选一
      OPENAI_API_KEY: 自己的key,以sk-开头的一串数字
      # 二选一 
      OPENAI_ACCESS_TOKEN: 可选
      # API接口地址,可选,设置 OPENAI_API_KEY 时可用
      OPENAI_API_BASE_URL: https://api.openai.com
      # ChatGPTAPI ChatGPTUnofficialProxyAPI
      OPENAI_API_MODEL: ChatGPTAPI
      # API模型,可选,设置 OPENAI_API_KEY 时可用,https://platform.openai.com/docs/models
      # gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301, text-davinci-003, text-davinci-002, code-davinci-002
      # 每小时最大请求次数,可选,默认无限
      MAX_REQUEST_PER_HOUR: 0
      # 超时,单位毫秒,可选
      TIMEOUT_MS: 600000
      # 访问jwt加密参数,可选 不为空则允许登录 同时需要设置 MONGODB_URL
      AUTH_SECRET_KEY: 自定义加密参数
      # 网站名称
      SITE_TITLE: 自定义网站标题,不要出现ChatGPT字样,避免被扫
      # mongodb 的连接字符串
      MONGODB_URL: 'mongodb://自定义用户名:自定义密码@database:27017'
      # 网站是否开启注册
      REGISTER_ENABLED: 'true'
      # 开启注册之后 网站注册允许的邮箱后缀 如果空 则允许任意后缀
      REGISTER_MAILS: '@qq.com,@outlook.com,@163.com'
      # 开启注册之后 密码加密的盐
      PASSWORD_MD5_SALT: 自定义加密
      # 开启注册之后 超级管理邮箱
      ROOT_USER: 自定义管理员邮箱
      # 开启注册之后 网站域名 不含 / 注册的时候发送验证邮箱使用
      SITE_DOMAIN: https://自定义域名
      # 开启注册之后 发送验证邮箱配置
      SMTP_HOST: smtp.exmail.qq.com
      SMTP_PORT: 465
      SMTP_TSL: 'true'
      SMTP_USERNAME: 自定义邮箱
      SMTP_PASSWORD: 邮箱发件客户端密码
     links:
      - database

  database:
    image: mongo
    container_name: chatgptweb-database
    restart: unless-stopped
    ports:
      - '27017:27017'
    expose:
      - '27017'
    volumes:
      - ./mongodb:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: 上面已经设定的自定义用户名
      MONGO_INITDB_ROOT_PASSWORD: 上面已经设定的自定义密码
      MONGO_INITDB_DATABASE: chatgpt

volumes:
  mongodb: {}

然后输入运行命令,通过 docker-compose 启动 Docker 容器

cd $work && docker-compose up -d

启动后会出现chatgptweb和chatgptweb-database两个容器

ChatGPT Web

需要提醒的是,别忘了在VPS的防火墙设置里放开3002和27017这两个端口

以后更新镜像时,只要依次使用下列命令即可

docker-compose down # 下线
docker-compose pull # 拉取chatgpt-web latest镜像,mongo用的是固定tag,不会一起更新。
docker-compose up -d # 重新上线

 

基本配置

输入https://VPS的ip:3002打开前端网页(一般是反向代理后通过域名访问)

第一次注册时使用docker-compose.yml文件里自定义的“ROOT_USER: 自定义管理员邮箱”进行注册,默认为管理员。

ChatGPT Web

如果是自用,可以随后进入设置-网站配置-关闭“新用户”开关,可以关闭注册功能。

ChatGPT Web

特色功能

网站设置和对话记录都会自动保存进数据库,所以在其他设备上可以无缝连接使用,非常方便。

每个会话设置独有 Prompt

前端页面设置里可以添加删除api key

目前来说,这是功能十分完善的自建ChatGPT Web方案,也是我个人目前在用的主力项目,希望大家支持作者的奉献。

 

极客角落

分享网络科技应用

文章评论

  • 头像
    hi

    你好,大佬,按照你的方法,在群晖docker里构建yml,容器chatgptweb、chatgptweb-database都已经运行起来,日志里也没看到有错误,但打开ip:3002,显示500,server error,不知道哪里有问题

    2024年05月01日
    • admin
      admin

      @hi 基本2个问题
      1,彻底清除清除缓存,重新登陆
      2,数据库连接问题,检查数据库的用户名和密码是否有错

      2024年05月03日