# deploy
**Repository Path**: devdasdevdasjan/deploy
## Basic Information
- **Project Name**: deploy
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-28
- **Last Updated**: 2023-11-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PandoraNext
## 简单介绍
* Pandora Cloud + Pandora Server + Shared Chat + BackendAPI Proxy = `PandoraNext`([演示站](https://chat1.zhile.io))
* 支持GPTs,最新UI。
* 支持多种登录方式:(相当于Pandora Cloud)
* 账号/密码
* Access Token
* Session Token
* Refresh Token
* Share Token
* 可内置tokens(可使用上述所有Token),支持设置密码。(相当于Pandora Server)
* 可配置共享的tokens,会有一个功能等同[chat-shared3.zhile.io](https://chat-shared3.zhile.io)的共享站(目前2622个普号、22个Plus)。
* 为全代理模式,你的用户只需要跟你的部署网络能通即可。
* 可启动为BackendAPI Proxy模式,直接使用`Access Token`调用`/backend-api/`的接口。
* 还有疑问,那就进Telegram群让大家围观围观:[@ja_netfilter_group](https://t.me/ja_netfilter_group)
## 手动部署
* 在[Releases](https://github.com/pandora-next/deploy/releases)中下载对应操作系统和架构的包。
* 解压后修改同目录中的`config.json`至你需要的参数。
* [获取license_id](#%E5%85%B3%E4%BA%8E-license_id)填写在`config.json`中,这是必须的前置步骤!
* 各种Linux/Unix系统使用`./PandoraNext`启动即可。
* Windows系统双击`PandoraNext.exe`即可,当然最好在cmd中启动。
## Docker Compose 部署
* 仓库内已包含相关文件和目录,拉到本地,[获取license_id](#%E5%85%B3%E4%BA%8E-license_id)填写在`data/config.json`中。
* `data`目录中包含`config.json`、`tokens.json`示例文件可自行修改。
* `docker-compose up -d` **原神启动!**
## Docker 部署
```bash
$ 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.json`、`tokens.json`和[获取license_id](#%E5%85%B3%E4%BA%8E-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`文件
```json
{
"bind": "127.0.0.1:8181",
"timeout": 600,
"proxy_url": "",
"license_id": "",
"public_share": false,
"site_password": "",
"setup_password": "",
"server_tokens": true,
"server_mode": "web",
"captcha": {
"provider": "",
"site_key": "",
"site_secret": "",
"site_login": false,
"setup_login": false,
"oai_username": false,
"oai_password": false
},
"whitelist": null
}
```
* `bind`指定绑定IP和端口,在docker内,IP只能用`0.0.0.0`,否则映射不出来。
* **如果你不打算套nginx等反代,`bind`参数的IP请使用`0.0.0.0`!!!**
* `timeout`是请求的超时时间,单位为`秒`。
* `proxy_url`指定部署服务流量走代理,如:`http://127.0.0.1:8888`、`socks5://127.0.0.1:7980`
* `license_id`指定你的License Id,可以在[这里获取](#%E5%85%B3%E4%BA%8E-license_id)。
* `public_share`对于GPT中创建的对话分享,是否需要登录才能查看。为`true`则无需登录即可查看。
* `site_password`设置整站密码,需要先输入这个密码,正确才能进行后续步骤。充分保障私密性。
* `setup_password`定义一个设置密码,用于调用`/setup/`开头的设置接口,为空则不可调用。
* `server_tokens`设置是否在响应头中显示版本号,`true`显示,`false`则不显示。
* `server_mode`默认为`web`模式,新增`proxy`模式,可以将你部署的服务当作一个`ChatGPT`接口反代使用。会话额度消耗为`4`倍,无并发限制。
* `captcha`配置一些关键页面的验证码。
* `provider`验证码提供商,支持:`recaptcha_v2`、`recaptcha_enterprise`、`hcaptcha`、`turnstile`、`friendly_captcha`。
* `site_key`验证码供应商后台获取的网站参数,是可以公布的信息。
* `site_secret`验证码供应商后台获取的秘密参数,不要公布出来。有些供应商也称作`API Key`。
* `site_login`是否在全站密码登录界面显示验证码,`true`或`false`。
* `setup_login`是否在设置入口登录界面显示验证码,`true`或`false`。
* `oai_username`是否输入用户名界面显示验证码,`true`或`false`。
* `oai_password`是否在输入登录密码界面显示验证码,`true`或`false`。
* `whitelist`邮箱数组指定哪些用户可以登录使用,用户名/密码登录受限制,各种Token登录受限。内置tokens不受限。
* `whitelist`为`null`则不限制,为空数组`[]`则限制所有账号,内置tokens不受限。
* 一个`whitelist`的例子:```"whitelist": ["mail2@test.com", "mail2@test.com"]```
## tokens 配置
* 以下是一个示例`tokens.json`文件
```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",
"password": "12345"
}
}
```
* `token`支持示例文件中所写的所有类型。`session token`和`refresh token`可自动刷新。
* 每个key被称为`token key`,可在登录框作用户名输入。如上:`test-1`、`test-2`等,随意更改。
* 如果设置了`password`则输入完`token key`进入输入密码页面输入匹配。
* 如果设置`shared`为`true`,则这个账号会出现在`/shared.html`中,登录页面会出现它的链接。
* 如果设置`shared`为`true`,则这个账号不能再在用户名登录框进行登录。
* `/shared.html`中的账号和共享站功能相同,可以自行设置隔离密码进行会话隔离。
* `plus`用来标识`/shared.html`上账号是否有金光,没有其他作用。
* `show_user_info`表示`/shared.html`共享时是否显示账号邮箱信息,GPTs建议开启。
## 设置界面
* 必须先在`config.json`中设置`setup_password`为非空!
* 浏览器打开:`/setup`,其中``是你部署服务的地址。
## 关于 license_id
* 在这里获取:[https://dash.pandoranext.com](https://dash.pandoranext.com)
* 复制`License Id:`后的内容,填写在`config.json`的`license_id`字段。
* 注意检查不要复制到多余的空格等不可见字符。
* 如果`config.json`中没有填写`license_id`字段,启动会报错`License ID is required`。
* **没有固定IP的情况**,IP变动后会自动尝试重新拉取。
## 其他说明
* 如果你发现网页上不能复制,开启`https`或者使用`127.0.0.1`。
* 如果你正在自定义页面元素,请保留:
* `Powered by PandoraNext`文字和链接。
* `About PandoraNext`文字和链接。
* 如果要抹,请在**一百多个js**文件中去除若干`dom检测`代码。
* 抹了后果如何我不说。
* `PHP`是世界上最好的编程语言。
## 贡献者们
> 感谢所有让这个项目变得更好的贡献者们!
[](https://github.com/pandora-next/deploy/graphs/contributors)
## Star历史
