Code Monkey home page Code Monkey logo

pandora-next's Introduction

PandoraNext

Important

✨ 一个新的 文档站,从部署到常见问题,甚至接口调用都有详细说明。

✨ 现在我们可以使用PandoraNext 注册ChatGPT账号了,无墙,全代理!

PandoraNext助手GPTs,如你有Plus账号,可向它求助项目问题(不要试图套源码)

简单介绍

  • Pandora Cloud + Pandora Server + Shared Chat + BackendAPI Proxy + Chat2API = PandoraNext演示站
  • 更强大,但还是那个让你呼吸顺畅的ChatGPT。支持GPTs,最新UI。
  • 支持多种登录方式:(相当于Pandora Cloud)
    • 账号/密码
    • Access Token
    • Session Token
    • Refresh Token
    • Share Token
  • 可内置tokens(可使用上述所有Token),支持设置密码。(相当于Pandora Server)
  • 可配置共享的tokens,会有一个功能等同chat-shared3.zhile.io的共享站(目前1841个普号、6个Plus)。
  • 为全代理模式(能想象到的都代理了),你的用户只需要跟你的部署网络能通即可。
  • 可启动为BackendAPI Proxy模式,直接使用Access Token调用/backend-api/和chat2api的接口。
  • 还有疑问,那就进Telegram群让大家围观围观:@ja_netfilter_group
旧的、简易的文档。更新、更详细的访问文档站。

手动部署

  • Releases中下载对应操作系统和架构的包。
  • 解压后修改同目录中的config.json至你需要的参数。
  • 获取license_id填写在config.json中,这是必须的前置步骤!
  • 各种Linux/Unix系统使用./PandoraNext启动即可。
  • Windows系统双击PandoraNext.exe即可,当然最好在cmd中启动。

Docker Compose 部署

  • 仓库内已包含相关文件和目录,拉到本地,获取license_id填写在data/config.json中。
  • data目录中包含config.jsontokens.json示例文件可自行修改。
  • docker compose up -d 原神启动!

Docker 部署

$ docker pull pengzhile/pandora-next
$ docker run -d --restart always --name PandoraNext --net=bridge \
    -p 8181:8181 \
    -v ./data:/data \
    -v ./sessions:/root/.cache/PandoraNext \
    pengzhile/pandora-next
  • 容器内默认监听8181端口,映射宿主机的8181端口,可自行修改。
  • 你可以映射目录到容器内的/data目录,config.jsontokens.json获取license_id填写在config.json中。
  • 你可以映射目录到容器内的/root/.cache/PandoraNext目录,保留登录的session,避免重启容器登录状态丢失。

Nginx 配置

server {
	listen 443 ssl http2;
	server_name chat.zhile.io;
	
	charset utf-8;
	
	ssl_certificate      certs/chat.zhile.io.crt;
	ssl_certificate_key  certs/chat.zhile.io.key;

	...省略若干其他配置...
	
	location / {
		proxy_http_version 	1.1;
		proxy_pass 		http://127.0.0.1:8181/;
		proxy_set_header	Connection		"";
		proxy_set_header   	Host			$http_host;
		proxy_set_header 	X-Forwarded-Proto 	$scheme;
		proxy_set_header   	X-Real-IP          	$remote_addr;
		proxy_set_header   	X-Forwarded-For    	$proxy_add_x_forwarded_for;
		
		proxy_buffering off;
		proxy_cache off;
		
		send_timeout 600;
		proxy_connect_timeout 600;
		proxy_send_timeout 600;
		proxy_read_timeout 600;
	}

	...省略若干其他配置...
}
  • Nginx建议开启http2
  • 以上仅为推荐配置,可根据具体情况进行改动。
  • 建议开启ssl也即https,否则浏览器限制将无法复制网页内容。

config 配置

  • 以下是一个示例config.json文件
{
  "bind": "127.0.0.1:8181",
  "tls": {
    "enabled": false,
    "cert_file": "",
    "key_file": ""
  },
  "timeout": 600,
  "proxy_url": "",
  "license_id": "",
  "public_share": false,
  "site_password": "",
  "setup_password": "",
  "server_tokens": true,
  "proxy_api_prefix": "",
  "isolated_conv_title": "*",
  "disable_signup": false,
  "auto_conv_arkose": false,
  "proxy_file_service": false,
  "custom_doh_host": "",
  "captcha": {
    "provider": "",
    "site_key": "",
    "site_secret": "",
    "site_login": false,
    "setup_login": false,
    "oai_username": false,
    "oai_password": false,
    "oai_signup": false
  },
  "whitelist": null
}
  • bind指定绑定IP和端口,在docker内,IP只能用0.0.0.0,否则映射不出来。
  • 如果你不打算套nginx等反代,bind参数的IP请使用0.0.0.0!!!
  • tls配置PandoraNext直接以https启动。
    • enabled 是否启用,truefalse。启用时必须配置证书和密钥文件路径。
    • cert_file 证书文件路径。
    • key_file 密钥文件路径。
  • timeout是请求的超时时间,单位为
  • proxy_url指定部署服务流量走代理,如:http://127.0.0.1:8888socks5://127.0.0.1:7980
  • license_id指定你的License Id,可以在这里获取
  • public_share对于GPT中创建的对话分享,是否需要登录才能查看。为true则无需登录即可查看。
  • site_password设置整站密码,需要先输入这个密码,正确才能进行后续步骤。充分保障私密性。不少于8位,且同时包含数字字母
  • setup_password定义一个设置密码,用于调用/setup/开头的设置接口,为空则不可调用。不少于8位,且同时包含数字字母
  • server_tokens设置是否在响应头中显示版本号,true显示,false则不显示。
  • proxy_api_prefix可以给你的proxy模式接口地址添加前缀,让人意想不到。注意设置的字符应该是url中允许的字符。包括:a-z A-Z 0-9 - _ . ~
  • proxy_api_prefix 你必须设置一个不少于8位,且同时包含数字字母的前缀才能开启proxy模式!
    • /backend-api/conversation proxy模式比例 1:4
    • /v1/chat/completions 3.5模型比例 1:4
    • /v1/chat/completions 4模型比例 1:10, 无需打码
    • /api/auth/login 登录接口比例 1:100,无需打码
    • /api/auth/login2 获取refresh_token接口比例 1:1000,无需打码
    • /api/arkose/token 获取arkose_token,比例 1:10
    • /api/auth/platform/login 登录platform接口比例 1:100,无需打码
  • isolated_conv_title现在隔离会话可以设置标题了,而不再是千篇一律的*号。
  • disable_signup 禁用注册账号功能,truefalse
  • auto_conv_arkoseproxy模式使用gpt-4模型调用/backend-api/conversation接口是否自动打码,使用消耗为4+10
  • proxy_file_serviceproxy模式是否使用PandoraNext的文件代理服务,避免官方文件服务的墙。
  • custom_doh_host 配置自定义的DoH主机名,建议使用IP形式。默认启动时在公共DoH中挑选你所在地区最快的那个。
  • captcha配置一些关键页面的验证码。
    • provider验证码提供商,支持:recaptcha_v2recaptcha_enterprisehcaptchaturnstilefriendly_captcha
    • site_key验证码供应商后台获取的网站参数,是可以公布的信息。
    • site_secret验证码供应商后台获取的秘密参数,不要公布出来。有些供应商也称作API Key
    • site_login是否在全站密码登录界面显示验证码,truefalse
    • setup_login是否在设置入口登录界面显示验证码,truefalse
    • oai_username是否输入用户名界面显示验证码,truefalse
    • oai_password是否在输入登录密码界面显示验证码,truefalse
  • whitelist邮箱数组指定哪些用户可以登录使用,用户名/密码登录受限制,各种Token登录受限。内置tokens不受限。
  • whitelistnull则不限制,为空数组[]则限制所有账号,内置tokens不受限。
  • 一个whitelist的例子:"whitelist": ["[email protected]", "[email protected]"]

tokens 配置

  • 以下是一个示例tokens.json文件
{
  "test-1": {
    "token": "access token / session token / refresh token",
    "shared": true,
    "show_user_info": false
  },
  "test-2": {
    "token": "access token / session token / refresh token",
    "shared": true,
    "show_user_info": true,
    "plus": true
  },
  "test2": {
    "token": "access token / session token / refresh token / share token / username & password",
    "password": "12345"
  }
}
  • token支持示例文件中所写的所有类型。session tokenrefresh token可自动刷新。
  • 每个key被称为token key,可在登录框作用户名输入。如上:test-1test-2等,随意更改。
  • 如果设置了password则输入完token key进入输入密码页面输入匹配。
  • 如果设置sharedtrue,则这个账号会出现在/shared.html中,登录页面会出现它的链接。
  • 如果设置sharedtrue,则这个账号不能再在用户名登录框进行登录。
  • /shared.html中的账号和共享站功能相同,可以自行设置隔离密码进行会话隔离。
  • plus用来标识/shared.html上账号是否有金光,没有其他作用。
  • show_user_info表示/shared.html共享时是否显示账号邮箱信息,GPTs建议开启。
  • 现在可以直接内置用户名密码登录,此种方法必须设置passwordshared不可为true
  • 内置账号密码的格式为:邮箱,密码,此种是0额度消耗的。

proxy模式接口

  • 页面 /auth 使用账号密码,手动获取access tokensession token。只是给UI方便获取,1:100的消耗依然存在。
  • 页面 /fk 使用access tokensession token,手动获取share token
  • 页面 /pk 使用share token,手动组pool token
  • /backend-api/* ChatGPT网页版接口,具体F12去页面上看。
  • /public-api/* ChatGPT网页版接口,具体F12去页面上看。
  • /v1/* 所有https://api.openai.com/v1/*开头的接口,每次调用1:1
  • /dashboard/* 所有https://api.openai.com/dashboard/*开头的接口,每次调用1:1
  • GET /api/token/info/fk-xxx 获取share token信息,使用生成人的access token做为Authorization头,可查看各模型用量。
  • POST /api/auth/session 通过session token获取access token,使用urlencode form传递session_token参数。
  • POST /api/auth/refresh 通过refresh token获取access token,使用urlencode form传递refresh_token参数。
  • POST /api/auth/login 登录获取access token,使用urlencode form传递username 和 password 参数。
  • POST /api/auth/login2 登录获取refresh token,使用urlencode form传递username、password 和 mfa_code 参数。
  • POST /api/token/register 生成share token
  • POST /api/pool/update 生成更新pool token
  • POST /v1/chat/completions 使用ChatGPT模拟API的请求接口,支持share token和pool token。
  • POST /api/arkose/token 获取arkose_token,目前只支持gpt-4类型。使用urlencode form传递type=gpt-4参数。获取后可API方式调用GPTs
  • POST /api/setup/reload 重载当前服务的config.jsontokens.json等配置。
  • POST /api/auth/platform/refresh 通过platform的refresh token获取access token,使用urlencode form传递refresh_token参数。
  • POST /api/auth/platform/login 登录platform获取access token,使用urlencode form传递username 和 password 参数。如果要获取sess key,增加参数prompt=login
  • 以上地址均需在最前面增加 /<proxy_api_prefix>,也就是你设置的前缀。

设置界面

  • 必须先在config.json中设置setup_password为非空!
  • 浏览器打开:<Base URL>/setup,其中<Base URL>是你部署服务的地址。

关于 license_id

  • 在这里获取:https://dash.pandoranext.com
  • 复制License Id:后的内容,填写在config.jsonlicense_id字段。
  • 注意检查不要复制到多余的空格等不可见字符。
  • 如果config.json中没有填写license_id字段,启动会报错License ID is required
  • 没有固定IP的情况,IP变动后会自动尝试重新拉取。
  • 更换License Id之后,通常需要手动删除license.jwt再启动。

其他说明

Caution

  • 如果你发现网页上不能复制,开启https或者使用127.0.0.1
  • 如果你正在自定义页面元素,请保留:
    • Powered by PandoraNext文字和链接。
    • About PandoraNext文字和链接。
  • 如果要抹,请在一百多个js文件中去除若干dom检测代码。
  • 抹了后果如何我不说。
  • PHP是世界上最好的编程语言。

贡献者们

感谢所有让这个项目变得更好的贡献者们!

Contributors

Star历史

Star History Chart

pandora-next's People

Contributors

echo66677 avatar testinguser avatar wozulong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pandora-next's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.