本文最后更新于 2025-06-01,文章内容可能已经过时。

PandoraNext 项目已经停止更新了,新教程是使用 ninja 项目。

bncr 插件的 ChatGPT 使用的公开的 fakeopen api 代理是 zhile 大佬很久之前的,而且新项目里面已经说了, fakeopen api 已经是历史了,现在需要我们自己搭建他的项目搞一个代理接口。

1702192917817.png

搭建PandoraNext项目(已失效,向下看Ninja教程)

方便点,直接使用 Dokcer 进行搭建了;项目地址:https://github.com/pandora-next/deploy

  1. 创建项目文件存储地址,可自行更换。
mkdir -p /data/docker/PandoraNext && cd /data/docker/PandoraNext
  1. 启动 PandoraNext
docker pull pengzhile/pandora-next
docker run -d --restart always --name PandoraNext --net=bridge \
    -p 8181:8181 \
    -v $(pwd)/data:/data \
    -v $(pwd)/sessions:/root/.cache/PandoraNext \
    pengzhile/pandora-next
  1. 配置相关文件
cd data
wget https://ghproxy.com/https://raw.githubusercontent.com/pandora-next/deploy/master/data/config.json
wget https://ghproxy.com/https://raw.githubusercontent.com/pandora-next/deploy/master/data/tokens.json

tokens.json 可以不用管,主要配置一下 config.json

登录 Github账号,获取 license_id, https://dash.pandoranext.com

1702193617515.png

主要是将网页获取的 license_id 填入 config.json 中,并且配置 proxy_api_prefix,我随便设置了一个 v1conversation。

tokens.json 文件不用管。

  1. 重启一下项目
docker restart PandoraNext

搭建 Ninja

安装教程在项目的 wiki 中,教程给了 Docker 命令和 compose 两种方式,两种方式稍微有一点区别。

1708163341539.png

我是在 OpenWrt 中开启了全局代理,所以直接使用第一个命令就可以了。

docker run --rm -it -p 7999:7999 --name=ninja \
  -e LOG=info \
  -v ~/.ninja:/root/.ninja \
  ghcr.io/gngpp/ninja:latest run

这里目前只能完成 Access Token 获取和 GPT3.5 聊天,其他的例如 login、GPT4 需要验证码,可以阅读项目文档完成。

配置网络

这里把 PandorNext 换成 ninja 就好了,操作逻辑是一样的,就是打通两个容器的网络。

如果你已将 PandoraNext 配置到公网,可以忽略此步骤,如果未将 PandoraNext 配置到公网,需要将 pandoraNext 和 bncr 放入同一个 docker network 中,让 bncr 可以访问 PandoraNext。

通过 默认的 bridge 网络也可以连通,但是机器重启后 IP 会发生变动

  1. 创建docker network

默认的 bridge 网络应该是 172.17.0.0/16,继续向下创建应该不会重复,重复自己调整一下。

docker network create docker_network --subnet 172.18.0.0/24 --gateway 172.18.0.1
docker network connect docker_network bncr --ip 172.18.0.2
docker network connect docker_network PandoraNext --ip 172.18.0.3

上面的命令意思是:

  • 创建一个名字叫做 docker_network 的网络,子网是 172.18.0.0/24 ,网关是 172.18.0.1
  • 将 bncr 容器加入到 docker_network 网络,并且分配一个固定ip是 172.18.0.2
  • 将 PandoraNext 容器加入到 docker_network 网络,并且分配一个固定ip是 172.18.0.3

请注意,这里的 容器名称 需要根据自己真实的容器名称去更改。

1702194518319.png

查看网络详情

docker network inspect docker_network

image-20231210154914874.png

IP 和教程有点不一样,无伤大雅。

修改 ChatGPT 插件

插件在这里:https://github.com/RedLightsDistrict/Bncr_plugins/blob/main/Bncr_ChatGPT.js

修改一下:apiReverseProxyUrl

image-20231210155134092.png

这里配置是 Ninja 的访问地址 + 代理地址,图中多了一份 /v1conversation, Ninja 项目无需理会,去掉就好了。

${Ninja_URL}/backend-api/conversation
// for example: http://192.168.100.1:7999/backend-api/conversation
  • Ninja_URL 就是在 bncr 中能访问到 Ninja 的地址,可以是公网,也可以是上一步配置的 docker network 中分配的地址。

  • 7999端口分情况配置,如果是公网,请使用创建是映射后的端口,如果是分配的网络,请固定7999。

    不知道就还是7999

  • /backend-api/conversation 固定。

测试

1702195036607.png

写在后面

Ninja 项目提供了 Session Token 和 Refresh Token 获取 Access Token 的方法,可以将插件进行修改完成自动更新 Token。下面是我在 Koishi 写的插件调用的接口。

1708164005173.png