【小白求问】如何配合NPM+Docker,实现Pandora-Helper 完整的服务

感谢年华大佬提供的代码和教程!本人纯小白一枚,想在服务器部署个GPT跟朋友一起使用,但在四五天内不断尝试还是无法完美实现大佬代码的完整效果(即反向代理+道德审查),已将ChatGPT+Google 问冒烟了仍无效,特发此贴,咨询论坛内的大佬!

以下是我跟着GPT部署的代码和教程,请各位大佬先参考,具体问题在后面:

1. 创建存储目录

mkdir -p /root/data/docker_data/pandora_helper
cd /root/data/docker_data/pandora_helper
touch config.json

2. 配置 config.json 文件,此处我是通过ftp 文件管理软件在其中直接修改内容,并上传。配置代码如下(涉及隐私部分会以ABCD等字母修改):

{
  "security": {
    "admin_password": "AABBCCDD"
  },
  "http": {
    "host": "0.0.0.0",
    "port": 9000,
    "proxy-pass": {
      "oaifree": {
        "enable": true,
        "host": "https://new.oaifree.com",
        "port": 9001
      },
      "fuclaude": {
        "enable": true,
        "host": "https://demo.fuclaude.com",
        "port": 9002
      }
    },
    "title": "Pandora",
    "rate": 1000
  },
  "database": {
    "driver": "sqlite",
    "dsn": "./data/data.db"
  },
  "share": {
    "random": true,
    "custom": true
  },
  "pandora": {
    "domain": {
      "chat": "https://new.oaifree.com",
      "token": "https://token.oaifree.com",
      "index": "https://chatgpt.C1.com",
      "claude": "https://claude.C2.com"
    }
  },
  "moderation": {
    "apiKey": "始皇Api网站购买,sk开头的Key",
    "apiUrl": "https://api-proxy.oaipro.com/v1/moderations",
    "message": "您的消息包含不当内容,请修改后重试!"
  },
  "oneapi": {
    "token": "",
    "domain": ""
  },
  "log": {
    "level": "info",
    "encoding": "console",
    "output": "console",
    "log_file_name": "./logs/server.log",
    "max_backups": 30,
    "max_age": 7,
    "max_size": 1024,
    "compress": true
  }
}

3. 拉取Docker镜像

docker pull q11391/pandora-helper

4. 启动容器:使用以下命令将data目录映射到指定路径,并启动Pandora Helper

docker run -d --name pandora-helper --net=bridge \
  -p 9000:9000 -p 9001:9001 -p 9002:9002 \
  -v /root/data/docker_data/pandora_helper:/app/data \
  q11391/pandora-helper

5. 配置Nginx Proxy Manager中的反向代理
登录NPM 打开NPM的管理页面,添加反向代理记录:
A. 创建第一个代理记录:

  • Domain Names: chatgpt.C1.com

  • Scheme:http

  • Forward Hostname:服务器IP或Doker容器IP

  • Forward Port:9001

  • 勾选:Block common Exploits;Websockets Support

  • SSL界面:

  • SSL Certificate:request a new SSL 或者 Cloudfare的ssl

  • 勾选:force ssl
    B. 创建第二个代理记录:

  • Domain Names: claude.C2.com

  • Scheme:http

  • Forward Hostname:服务器IP或Doker容器IP

  • Forward Port:9002

  • 勾选:Block common Exploits;Websockets Support

  • SSL界面:

  • SSL Certificate:request a new SSL 或者 Cloudfare的ssl

  • 勾选:force ssl


最后,出现问题包括:

  1. 在Pandora-Helper 管理界面,配置好GPT Access token后,点击登录并跳转至对话,直接跳转到 chatgpt.C1.com 需再输入Access Token 的界面
  2. 通过 Pandora-Helper 登录界面直接登录账号,仍然跳转到需要输入Access Token 的界面,并且输入以后,类似的对话隔离、道德审查等功能基本无效,会看到账号过往的聊天记录,且无法正常回复,并弹出“ Something went wrong while generating the response. If this issue persists please contact us through our help center at help.openai.com.“的提示

综合怀疑是 NPM反向代理出现问题,若不配置反向代理,则Pandora-Helper 则一切功能都正常,只不过无法实现道德审查,我已支持始皇APIKey网站,还是希望能用的上…

已万策尽,请大佬出手看看 :cry: :cry:

19 个赞

没懂为什么启动参数里有这两个

3 个赞

:smiling_face_with_tear: GPT给的,我给GPT的大佬教程参考 有一句“ 你需要用你的域名或IP 指向这两个端口。保证这两个端口能够访问“可能被理解为暴露这个端口? :sob:,大佬后续该怎么改。。。

年华有文档的,照着文档来就行: https://wiki.oai2b.com
你把docker cli里的后面两个端口去掉,npm里的改成9000应该就可以用了

1 个赞

大佬,我整理下你的方法:

  1. 启动容器的代码 改成
docker run -d --name pandora-helper --net=bridge \
  -p 9000:9000
  -v /root/data/docker_data/pandora_helper:/app/data \
  q11391/pandora-helper
  1. NPM反向代理记录,只需要有个域名对应9000端口即可,即假设
  • Domain Names: cc.c1.com
  • Scheme:http
  • Forward Hostname:服务器IP或Doker容器IP
  • Forward Port:9000
  • 勾选:Block common Exploits;Websockets Support
  • SSL界面:
  • SSL Certificate:request a new SSL 或者 Cloudfare的ssl
  • 勾选:force ssl

类似上面这样调整吗?大佬,因为年华大佬有一句话我纠结很久,就是“ 你需要用你的域名或IP 指向这两个端口“,我一直想着是如何通过我创建的子域名去指向这两个端口…
这边尝试大佬您的方法,有新的情况会及时反馈! :pray: :pray:谢谢大佬指点

哦哦,看了下,我可能误解你的意思了,你前面的几个反向代理配置是对的,我没注意到你是要反代oaifree和fuclaude

3 个赞

大佬,我根据我刚刚的那个回复进行了调整,在 cc.c1.com 的Pandor管理页面想创建共享账户时,弹出“ Request failed with status code 500” 的提示 :smiling_face_with_tear:

:joy: 我也是想通过 年华大佬自带的反向代理 实现 道德审查的功能,但是反向代理无论在NPM怎么整都不行…感觉也正确分别指向了9001和9002端口…就是不知道问题具体出现在哪里… :smiling_face_with_tear:

我看了下文档,文档的意思是不需要反代 9001 和 9002 的 只需要反代 9000 出去就行了
我手里的公网没了 现在用的 CF tunnel 不然能给你测试一下了
另外共享账号可以内网先设置好之类的吧

1 个赞

我去试了一下,是能正常使用的,你确定一下你哪一步是否有问题?把config.json、npm、dns配置都发出来看下呢

1 个赞

感谢:pray:大佬的回复,这边我经过一系列的测试,将情况反馈给大佬了解下:

  1. 启动容器包含 -p 9001:9001 -p 9002:9002;反向代理内不设置9001和9002端口
    出现状况:Pandora 管理界面创建共享账户提示:“Request failed with status code 500“

  2. 启动容器不包含 -p 9001:9001 -p 9002:9002;反向代理内不设置9001和9002端口
    出现状况:Pandora 管理界面创建共享账户提示:“Request failed with status code 500“

  3. 启动容器包含 -p 9001:9001 -p 9002:9002;反向代理内设置9001和9002端口
    情况较上面两条有改善,可顺利创建共享账户,但在登陆共享账户时仍弹出需要 GPT 的 Access Token,并在输入Access Token后,无法与GPT对话,且Pandora 功能依然无效

1 个赞

好的,大佬稍等,部分域名的名称和服务器IP这些我模糊下,请稍等,很快!

我把我测试的配置丢出来你对比一下吧:
docker cli命令

docker run -d --name PandoraHelper \
  -p 9000:9000 \
  -p 9001:9001 \
  -p 9002:9002 \
  --network=1panel-network \
  -v /home/docker/pandoraHelper/data:/app/data \
  q11391/pandora-helper

config.json配置文件:

{
  "security": {
    "admin_password": "linux.do"
  },
  "http": {
    "host": "0.0.0.0",
    "port": 9000,
    "proxy-pass": {
      "oaifree": {
        "enable": true,
        "host": "https://new.oaifree.com",
        "port": 9001
      },
      "fuclaude": {
        "enable": true,
        "host": "https://demo.fuclaude.com",
        "port": 9002
      }
    },
    "title": "Pandora",
    "rate": 1000
  },
  "database": {
    "driver": "sqlite",
    "dsn": "./data/data.db"
  },
  "share": {
    "random": true,
    "custom": true
  },
  "pandora": {
    "domain": {
      "chat": "https://chat.oaifree.com",
      "token": "https://token.oaifree.com",
      "index": "https://oai.xxx.xyz",
      "claude": "https://fuc.xxx.xyz"
    }
  },
  "moderation": {
    "apiKey": "sk-xxx",
    "apiUrl": "https://api.oaipro.com/v1/moderations",
    "message": "您的消息包含不当内容,请修改后重试!"
  },
  "oneapi": {
    "token": "",
    "domain": ""
  },
  "log": {
    "level": "info",
    "encoding": "console",
    "output": "console",
    "log_file_name": "./logs/server.log",
    "max_backups": 30,
    "max_age": 7,
    "max_size": 1024,
    "compress": true
  }
}

npm配置:
image


反代oaifree+会话隔离+审查:

1 个赞

大佬,根据你的代码进行操作,在最后启动容器的时候,出现“docker: Error response from daemon: network 1panel-network not found.” :smiling_face_with_tear:,是不是我的服务器还需要配置其他的网络什么的?

额,因为我是为了在npm里面用容器名称来填,所以指定了一个非bridge网络,网络这个你不指定也没关系的,就是npm里要用内网IP来代替容器名称

1 个赞

大佬,破案了!是我的GPT秀逗了,给我改了原来需要代理的始皇的网址,其实调整回来就完全没有问题,能够正常使用了,:joy:,服了~

{
  "security": {
    "admin_password": "AABBCCDD"
  },
  "http": {
    "host": "0.0.0.0",
    "port": 9000,
    "proxy-pass": {
      "oaifree": {
        "enable": true,
        "host": "https://new.oaifree.com",
        "port": 9001
      },
      "fuclaude": {
        "enable": true,
        "host": "https://demo.fuclaude.com",
        "port": 9002
      }
    },
    "title": "Pandora",
    "rate": 1000
  },
  "database": {
    "driver": "sqlite",
    "dsn": "./data/data.db"
  },
  "share": {
    "random": true,
    "custom": true
  },
  "pandora": {
    "domain": {
      "chat": "https://new.oaifree.com", #此处应该是始皇的网站,GPT给我改成我该代理的网址..被它耍了3天,有点吐血
      "token": "https://token.oaifree.com",
      "index": "https://chatgpt.C1.com",
      "claude": "https://claude.C2.com"
    }
  },
  "moderation": {
    "apiKey": "始皇Api网站购买,sk开头的Key",
    "apiUrl": "https://api-proxy.oaipro.com/v1/moderations",
    "message": "您的消息包含不当内容,请修改后重试!"
  },
  "oneapi": {
    "token": "",
    "domain": ""
  },
  "log": {
    "level": "info",
    "encoding": "console",
    "output": "console",
    "log_file_name": "./logs/server.log",
    "max_backups": 30,
    "max_age": 7,
    "max_size": 1024,
    "compress": true
  }
}

感谢钢铁侠大佬一晚上给我解答和指导!真的很感谢!!也感谢未央大佬出手指点!!感谢不尽!!! :pray: :pray: :pray:

等抽空一定会把这个整理好,作为小白搭建的一种选择!

1 个赞

:rofl:所以 GPT 不能完全依赖啊_(:з」∠)_
刚睡醒(つд⊂)

@I-IronMan @WyInnovate

大佬们好,本无意再度打扰,但昨晚处理完高兴不过一晚上,早上起来发现跟GPT无法对话….,弹出提示:“Something went wrong while generating the response. If this issue persists please contact us through our help center at help.openai.com.“ 如下图:

本人尝试更换另一个GPT账号,依然会出现这样的提示…实属无奈,只能请大佬们再度出山帮忙再查阅一二,下面是我整个的部署流程和代码配置,希望能查出关键问题的所在!! :sob: :sob:

创建存储目录

mkdir -p /root/data/docker_data/pandora_helper
cd /root/data/docker_data/pandora_helper
touch config.json

配置 config.json 文件

{
  "security": {
    "admin_password": "xxxx"
  },
  "http": {
    "host": "0.0.0.0",
    "port": 9000,
    "proxy-pass": {
      "oaifree": {
        "enable": true,
        "host": "https://new.oaifree.com",
        "port": 9001
      },
      "fuclaude": {
        "enable": true,
        "host": "https://demo.fuclaude.com",
        "port": 9002
      }
    },
    "title": "Pandora",
    "rate": 1000
  },
  "database": {
    "driver": "sqlite",
    "dsn": "./data/data.db"
  },
  "share": {
    "random": true,
    "custom": true
  },
  "pandora": {
    "domain": {
      "chat": "https://chat.oaifree.com",
      "token": "https://token.oaifree.com",
      "index": "https://chatgpt.xxx.top",
      "claude": "https://claude.xxx.top"
    }
  },
  "moderation": {
    "apiKey": "sk-xxx",
    "apiUrl": "https://api-proxy.oaipro.com/v1/moderations",
    "message": "您的消息包含不当内容,请修改后重试!"
  },
  "oneapi": {
    "token": "",
    "domain": ""
  },
  "log": {
    "level": "info",
    "encoding": "console",
    "output": "console",
    "log_file_name": "./logs/server.log",
    "max_backups": 30,
    "max_age": 7,
    "max_size": 1024,
    "compress": true
  }
}

拉取 Docker 镜像

docker pull q11391/pandora-helper

启动容器

docker run -d --name pandora-helper --net=bridge \
  -p 9000:9000 -p 9001:9001 -p 9002:9002 \
  -v /root/data/docker_data/pandora_helper:/app/data \
  q11391/pandora-helper

配置 NPM

9000 端口


9001 端口


9002 端口


你先试试你内网里能不能用吧
我觉得GPT这个错误跟你部署的Helper没关系
只需要暴露9000端口就行,其他端口不用暴露也不需要反代
然后block common exploits 也不需要打开

题外话:然后使用NPM时有时候需要填advanced里的内容
有时候默认的nginx配置不够用

我AT失效的时候 点击登录并跳转至对话会跳转到需再输入Access Token 的界面,然后我点刷新,刷新了AT后,再点登录并跳转至对话就不需要输入AT了

然后会话隔离的话,你共享管理的设置里勾选了会话隔离没有?