/cockroachai

一个简单的小程序,用于账号共享。免费但暂不开源。

Primary LanguageShell

cockroachai

English

一个简单的小程序,用于账号共享。免费但暂不开源。

交流群: https://t.me/xyhelper

重要提示

20231212 破坏性更新

  1. 本次更新调整了数据库结构,以适应后期更进一步程序功能完善
  2. 示例中提供了 mysql 配置示例,支持多实例共用同一数据库
  3. 本次更新会话表名由conversation更改为conversations,如需保留原有会话,请手动迁移。

更新方法

  1. 修改 config.yaml 增加配置
cool:
  autoMigrate: true # 自动建表开关
  1. 执行./deploy.sh 完成更新

功能

  • 自动刷新 AccessToken
  • 用户间会话隔离
  • 屏蔽部分敏感信息
  • 1:1 完全官网 UI,支持官网联网,插件,绘图等功能
  • 适合小团体或号商共享账号使用

前置要求

  • 一台不在某 AI 黑名单的服务器
  • 一个某 AI 的账号
  • 安装好了 Docker 和 Docker Compose

安装方法(本机部署)

1.克隆本仓库

git clone https://github.com/cockroachai/cockroachai.git

2.进入目录

cd cockroachai

3.修改配置文件

vim config/config.yaml

配置管理员密码 ADMIN_PASSWORD: xxxxxxxx

修改 USERTOKENS 为用户 Token,可以使用多个

访问 http://服务器 IP:9000/setup 输入refreshCookie(session-token) 写入 session.json

4.启动

./deploy.sh

安装方法(Docker)

1.安装Docker

wget -qO- get.docker.com | bash && systemctl enable docker  # 设置开机自动启动

2.安装Docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

3.创建安装目录(可自行更改为所需目录)

mkdir -p /root/cockroachai && cd /root/cockroachai
vim docker-compose.yml
version: '3'
services:
  cockroachai:
    image: xyhelper/cockroachai:latest
    restart: always
    ports:
      - "9000:9000" #左侧端口暴露在外,可根据需求更改
    volumes:
      - ./config:/app/config
    environment:
      ASSET_PREFIX: https://oaistatic-cdn.closeai.biz  

按一下 esc,然后 :wq 保存退出

4.获取refreshtoken (针对第三方登录用户)

首先在电脑端打开https://chat.openai.com/api/auth/session (打开前确保你已在chat.openai.com登录)

然后按F12 点击应用 获取cookie 即名为"__Secure-next-auth.session-token"的值

然后创建并打开当前目录下的config文件夹 创建配置文件(不创建配置文件将导致容器无法启动)

mkdir config && cd config && vim config.yaml

根据需求修改下述配置 并填写sessiontoken 配置管理员密码 ADMIN_PASSWORD: xxxxxxxx 修改 USERTOKENS 为用户 Token,可以使用多个

# 以下配置兼容环境变量设置,配置文件优先级高于环境变量
# PROXY: "" # 代理地址 默认值 "",支持http https socks5
REFRESHCOOKIE: "(将你获取的sessiontoken输入到此 记得删除括号内内容)" # 刷新cookie,目前版本不再推荐使用,账号密码登录用户直接从getsession接口写入账号信息 默认值 ""
# OAUTH_URL: https://xxxxx.xxx.com/ouath # oauth地址 用于集成第三方登录 默认值 ""
# LOGIN_CALLBACK: "/login" # 登录回调地址,用于指定自己的登录页面 默认值 "/login"
# ASSET_PREFIX: https://oaistatic-cdn.closeai.biz # 静态资源前缀,用于指定自己的静态资源地址 默认值 https://oaistatic-cdn.closeai.biz
# ARKOSE_URL: https://tcr9i.closeai.biz/v2/ # arkose地址,用于指定自己的arkose人机验证地址 默认值 https://tcr9i.closeai.biz/v2/
ADMIN_PASSWORD: xxxxx # 管理员密码 默认值为随机字符串,每次启动都会变化,可以在启动时通过日志查看,也可以指定一个固定值,方便管理
# AUDIT_LIMIT_URL: https://auditlimit.closeai.biz/audit_limit # 审计限制url 默认值 ""

# 以下配置不兼容环境变量设置,只能通过配置文件设置
USERTOKENS: # 用户token,可配置多个,本项内容支持热更新,更改后即时生效
  - "user1"
  - "user2"

# PROXY: "http://127.0.0.1:31280"  # 代理地址
# OAUTH_URL: https://xxxxx.xxx.com/ouath

# 注意注意,以下为新增配置,如需自动创建数据库,必加以下配置
cool:
  autoMigrate: true


# sqlite数据库配置
database:
  default:
    type: "sqlite" # 数据库类型
    name: "./config/cool.sqlite" # 数据库名称,对于sqlite来说就是数据库文件名
    extra: busy_timeout=5000 # 扩展参数 如 busy_timeout=5000&journal_mode=ALL
    createdAt: "create_time" # 创建时间字段名称
    updatedAt: "update_time" # 更新时间字段名称
    # debug: true # 开启调试模式,启用后将在控制台打印相关sql语句

# mysql数据库配置

# database:
#   default: # 数据源名称,当不指定数据源时 default 为默认数据源
#     type: "mysql" # 数据库类型
#     host: "127.0.0.1" # 数据库地址
#     port: "3306" # 数据库端口
#     user: "root" # 数据库用户名
#     pass: "xxxxxxxxx" # 数据库密码
#     name: "cockroachai" # 数据库名称
#     charset: "utf8mb4" # 数据库编码
#     timezone: "Asia/Shanghai" # 数据库时区
#     # debug: true # 是否开启调试模式,开启后会打印SQL日志
#     createdAt: "createTime" # 创建时间字段
#     updatedAt: "updateTime" # 更新时间字段

按一下 esc,然后 :wq 保存退出

5.运行

cd .. && docker-compose up -d

6.登录获取token (如前一步已填入refreshtoken 这一步可不用做)
访问 http://服务器 IP:9000/getsession 输入官网账号密码及管理员密码写入 session.json

对接第三方账户体系

配置环境变量或在 config.yaml 中配置

OAUTH_URL: https://xxxxx.xxx.com/oauth

当该值被配置后,用户登陆时将向该地址 POST 以下数据

userToken: 用户Token

允许用户登陆接口应返回 json 数据

{
  "code": 1,
  "msg": "登陆失败时的提示信息",
  "refreshCookie": "刷新Cookie,可选"
}

其中 code 为 1 时表示允许登陆,其他值表示不允许登陆

msg 为登陆失败时的提示信息

refreshCookie 为刷新 Cookie,可选,如果不填写则使用本地配置的刷新 Cookie

跳转登陆

访问

http://服务器IP:9000/logintoken?access_token=xxxx

xxxx 为可用的 userToken

指定登陆页面地址

配置环境变量或在 config.yaml 中配置

LOGIN_CALLBACK: "/login"

当用户退出或登陆失效后会跳转到该页面。

如何开设免费公益服务器

配置环境变量或在 config.yaml 中配置

OAUTH_URL: http://127.0.0.1:9000/oauth

配置完成后重启服务,用户即可输入任意 6 位以上 token 完成登陆

关于 session.json

cockroachai 在运行过程中,会将账户 session 信息记录到 session.json 文件。在应用重启后,如果发现存在 session.json 文件,将会优先使用 session.json 中的账号信息。

手动修改 session.json 内容,可以将 /getsession 返回结果完整复制到该文件中保存。

在配置了正确的 session.json 后,可以不配置 refreshCookie.

静态文件服务

为了避免多实例重复加载字体,js,css 文件,可以配置环境变量或在 config.yaml 中配置

ASSET_PREFIX: https://xxxxx.com

默认为 https://oaistatic-cdn.closeai.biz

部署静态文件服务的方法请参考仓库 https://github.com/cockroachai/cdn-oaistatic

内容审核及限速服务

如果有内容审核及限速(例如限制 3 小时 20 条),可以配置限速服务接口

AUDIT_LIMIT_URL: http://127.0.0.1:9612/audit_limit # 修改为你的审计限制接口url

不配置该项则不进行审计及限制

可参考示例审核服务。 https://github.com/cockroachai/auditlimit

如何更新

新版本镜像采用 docker 发布,可在程序安装目录执行 ./deploy.sh 进行更新,如有新版本发布,该命令会自动拉取新版本并重启服务。

如何重启服务

在程序安装目录执行

docker compose down
./deploy.sh