【Serv00】Serv00搭建xqdoo00o/ChatGPT-to-API

之前跟着站内的教程入坑了s8赛季,并部署了new api。但在建立渠道过程中,发现因为IP原因,无法使用始皇的oai free进行chat转API从而愉快的薅我的PLUS账户(服务器位置在波兰,被Ban了)。因此开始寻找有无替代方案。因为本人比较菜,只能当个脚本小子,在尝试构建chat2api失败后,我发现了https://github.com/xqdoo00o/ChatGPT-to-API这个项目(Aurora的参考项目),该项目是golang写的,能够直接在serv00编译成功并使用。我看站内目前没有搭建这个项目的教程,就打算抛砖引玉,分享一下我部署的过程与遇到的坑。

对于serv00中部署应用,站内有很多教程,跟着步骤走就行,这里简单说一下。
首先,访问你的serv00,在serv00中,点击Additional services->Run your own applications->Status->Enable


然后点击Port reservation->Add port,random根据你的情况选择

之后就是建一个website,点击WWW websites->Add new website->Advanced settings,域名填入你的域名,具体可以参考站内教程( 【serv00系列教程】部署go-proxy-bingai演示站 - 软件分享 - LINUX DO在serv00上搭建DNS管理系统并绑定cloudflare - 软件分享 - LINUX DO),website type选proxy,proxy port选择你刚刚开启的端口。

以上操作结束后,用ssh工具连接到你的服务器,你可以建立一个临时文件夹,从GitHub上clone下来ChatgptToAPI项目,构建和使用的教程可以直接参考作者项目的中文文档xqdoo00o/ChatGPT-to-API/README_ZH.md

git clone https://github.com/xqdoo00o/ChatGPT-to-API
cd ChatGPT-to-API
go build
./freechatgpt

将构建好的程序放入domains/<你的域名>/public_html中,然后建立并编写一份.env

SERVER_PORT=填入你在serv00中开启的端口
ADMIN_PASSWORD=默认是"TotallySecurePassword",为管理员密码,可以不填,如有需求,参考项目中文教程中的用户管理文档部分
GIN_MODE=可选环境变量,debug或者release

因为服务器在波兰,可以直连chatgpt,我这里没有设置代理,因此不用创建proxies.txt。
然后就是配置账号,如果你是chatgpt的账号,那么直接在程序同级目录建立accounts.txt,里面填写你的账号密码,格式

邮箱A:密码
邮箱B:密码:2
邮箱C:密码:2/5
...

密码后的数字表示轮询次数,默认为1次。上例表示第一次对话使用账户A,而后两次对话使用账户B,账户C为Teams账户,接着五次对话使用账户C的Teams,然后两次使用账户C的个人,如此循环。
所有登录后的Access tokens和PUID会存放在access_tokens.json,并且项目每天会自动更新Access tokens和PUID。
如果你和我一样,是第三方登录的用户,则还需要在同级目录下建立cookies.json,在accounts.txt 添加第三方账户和任意密码(第一方账号也同样适用)。文件内容如下

{
    "第三方账户名如[email protected]": [
        {
            "Name": "__Secure-next-auth.session-token",
            "Value": "网页登录第三方账户后,cookies中的__Secure-next-auth.session-token值",
            "Path": "/",
            "Domain": "",
            "Expires": "0001-01-01T00:00:00Z",
            "MaxAge": 0,
            "Secure": true,
            "HttpOnly": true,
            "SameSite": 2,
            "Unparsed": null
        }
    ]
}

如果使用refresh_token,把Name的值改为"refresh_token",Value的值改为refresh_token。第三方用户获取refresh token参见站内大佬教程 ( 苹果设备获取device token教程 帮助非三级号(不包括俺 已经三级了:grin:)实现refresh token自由 - 软件分享 - LINUX DO自己搞 refresh token - 常规话题 / 精华神贴 - LINUX DO)
然后还需要在程序同级目录下建立一个harPool文件夹,里面放入HAR文件,HAR文件获取见项目中文教程。完成以上后,应该程序就可以正常运行了


可以看到程序提供的接口,注意带admin的接口就需要ADMIN_PASSWORD去认证,具体管理接口参见API Documentation
然后就是serv00程序保活,这里直接参考站内教程即可 重大更新:serv00部署服务加保活脚本 - 软件分享 - LINUX DO,注意保活前需要先在程序目录中新建一个start.shrestart.sh(也可以其他目录,只要程序的路径正确即可)。然后就可以将 http://127.0.0.1:<你程序的端口>/v1/chat/completions放入new api或者one api进行测试并使用啦

【后续】为这个项目添加IP白名单防止被白嫖 【配置调整】为CHATGPT-TO-API添加IP访问白名单 - 软件分享 - LINUX DO
【再后续】十分感谢 @setmefree 佬友的解答,不用添加IP白名单,只需要配置api_key.txt即可,在文件中放入虚拟的api key(自己设置),调用的使用在请求头加入-H "Authorization: 或者接入new api时填写这个虚拟密钥就行。果然论坛里能学到好多东西!

61 Likes

太强了大佬

感谢

mark

感谢分享 Mark

mark

感谢分享,有个问题

  1. 如何让这个项目长期运行呢?nohup吗?
  2. 如果我配置多账号的话,har文件该怎么区分,还是只是一个就行了
  1. 长期运行详见站内的serv00保活的教程,我是用hunggingface保活的
  2. 多个账号我目前是放了各自的HAR文件,命名不重复就行,可以试试只用一个HAR文件
2 Likes

谢谢解答,har文件我看repository写的是放在harPool文件夹中,下载下来的是chatgpt.com.har
不知道多账号,是要重命名吗?还是要怎么样
比如账号A,har文件要命名成:Achatgpt.com.har?我没看到作者写这个规则,所以问问你

2 Likes

可以,跑起来了

1 Like

重命名就行,后缀.har应该就可以了

请问还能用吗?

1 Like

可以啊,项目就在那没动过,我现在也在用

1 Like

好好好,有空了试一下。

1 Like

感谢分享,先mark

2 Likes

好东西make

4 Likes

好东西,但我感觉我搞不成

3 Likes

按教程部署了五遍没成功 应该是哪一步出问题了 也能正常启动 就是启动后web啥都没有 不知道啥情况

该项目还可以使用吗?获取不到token,还是哪里没设置正确?

这个项目本身就是没有webUI的,它就相当于一个服务端,提供接口调用服务。启动后以类似openai接口的调用方式调用