ChatGPT私有化部署

参考

国内免费chatgpt站点:

获取自己的access-token:

其他链接:

国外号码获取参考:

通过openai key的方式构建参考:

ChatGpt官网登录方式使用:

openai官网:

先决条件

1.openai账户
2.有代理

两种部署方式:
1.部署在vercel
2.部署在linux使用docker-compose部署(租户版和控制台版)

部署方式一 (vercel)

此方式不通过openapi的方式 通过access-token的方式直接访问简单易用缺点是国内禁用了vernal生成的地址需要配置代理如使用cash for windows代理的方式

image-20230726151527655

项目地址

一. 先将项目fork到自己的仓库

image-20230726151849860

二. 使用vercel部署

  • 官网:https://vercel.com/

  • 不需要任何环境变量部署过程较为简单此处 略…..

    image-20230726152043416

三. 使用自己的openai账号或access-token登陆

image-20230726184620124

NOTE: 可绑定国内域名实现国内访问。

部署方式二 (docker

参考:

镜像可选:

1
2
3
4
REPOSITORY                                        TAG                 
chenzhaoyu94/chatgpt-web latest
registry.cn-hangzhou.aliyuncs.com/zznn/mycentos chatGPT_chenzhaoyu94
registry.cn-hangzhou.aliyuncs.com/zznn/mycentos chatGPT_chenzhaoyu94-v2

一.docker-compose文件 (此处使用OPENAI_ACCESS_TOKEN)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3'

services:
app:
image: chenzhaoyu94/chatgpt-web
# 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
# registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:chatGPT_chenzhaoyu94
ports:
- 3002:3002
environment:
# 二选一
OPENAI_API_KEY:
# 二选一
OPENAI_ACCESS_TOKEN: eyxxx···
# API接口地址,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_BASE_URL:
# API模型,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_MODEL:
# 反向代理,可选
API_REVERSE_PROXY:
# 访问权限密钥,可选 | 建议设置一个密码,我这里随便设置了个123456
AUTH_SECRET_KEY: 123456
# 每小时最大请求次数,可选,默认无限
MAX_REQUEST_PER_HOUR: 0
# 超时,单位毫秒,可选
TIMEOUT_MS: 60000
# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_HOST:
# Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
SOCKS_PROXY_PORT:
# HTTPS 代理,可选,支持 http,https,socks5
HTTPS_PROXY:

OPENAI_ACCESS_TOKEN获取:https://chat.openai.com/api/auth/session
AUTH_SECRET_KEY网页验证密钥自定义

image-20230731141858176

NOTE: OPENAI_ACCESS_TOKENAUTH_SECRET_KEY填写完成后直接docker-compose up -d运行即可.

二. 效果

image-20230731143515899

image-20230731142329260

chatgpt-web项目地址:https://github.com/Chanzhaoyu/chatgpt-web

感谢维护此开源项目的各位大佬们~

三. 控制台版 (通过账号密码或者Token登录)

镜像可选
1
2
3
# 将镜像推送到阿里云私有仓库 镜像可选
pengzhile/pandora:latest
registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:chatgpt_pandora
构建-docker
1
2
3
# 只需要两部即可
docker pull pengzhile/pandora
docker run -e PANDORA_CLOUD=cloud -e PANDORA_SERVER=0.0.0.0:8899 -p 8899:8899 -d pengzhile/pandora
构建-docker-compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# docker-compose.yml
version: "3.0"
services:
chatgpt-pandora:
image: pengzhile/pandora
restart: unless-stopped
container_name: chatgpt
hostname: chatgpt
ports:
- 8888:8899
environment:
TZ: Asia/Shanghai
PANDORA_CLOUD: cloud
PANDORA_SERVER: 0.0.0.0:8899
效果

image-20230829134353031

控制台版2JWT token

参考:

https://github.com/pandora-next/deploy#%E5%85%B3%E4%BA%8E-licensejwt%E6%96%87%E4%BB%B6

概览
  • 先获取JWT Token 使用github账户登录

    拉取下来的文件其实就是一个文件内写着jwt token的文件

    image-20231121223434662


    image-20231121223606095

  • JWT Token填入docker-compose.yml

docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
version: '3'
services:
pandora-next:
image: pengzhile/pandora-next
container_name: PandoraNext
network_mode: bridge
restart: always
ports:
- "8181:8181"
environment:
- PANDORA_NEXT_LICENSE=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJodHRwczovL2NsaWVudC1hcGkucGFuZG9yYW5leHQuY29tIiwiZXhwIjoxNzk1MTg0NDc5LCJqdGki0hpcDRWMHFSZXRCdDZ2bTVEbi00bkFxZ0x5dkRSdTBJIiwiaWF0IjoxNzAwNTc2NDc5LCJpc3MiOiJodHRwczovL2Rhc2gucGFuZG9yYW5leHQuY29tLyIsIm5iZiI6MTcwMDU3NjQ3OSwic3ViIjoiamoxT2xJtdCI6MTAwMCwdk7s5J2i06CrbQnR1O3kWERT7PS3sSSWhKuKRpgkGAB_ru88UuuljxfyTTmHhF5daXJmaYEY9UHtXUQ
启动
1
2
# 启动
docker-compose up -d
效果

image-20231121223739997

自动替换代理token脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
#替换chatgpt_token脚本
set -e
yellow="33m"
green="32m"
chatgpt_web="/opt/chatgpt/docker-compose.yml"
newgpt_token="OPENAI_ACCESS_TOKEN: eyJhbGciOiJSUzI1NiIsInR5yZXF1ZXN0IG9yZ2FuaXphdGlvbi"
read -p "请输入https://dash.pandoranext.com/网址中获取的链接如:https://dash.pandoranext.com/data/98DtOG4/license.jwt: " pandor_url
echo -e "\033[${yellow}
0. 输入help获取帮助信息
1. 输入home自动将token修改为当前网络环境IP 代理token
2. 输入exit退出 \033[0m"
while :
do
read -p "请输入('/'表示或) home/company/help/exit: " n
case $n in
help)echo -e "\033[${yellow}
进入引导 .....
引导成功.
0. 输入help获取帮助信息
1. 输入home自动将token修改为当前网络环境IP 代理token
2. 输入exit退出 \033[0m"
continue
;;

home)echo -e "\033[${yellow} 执行token修改为授权家庭IP 代理token \033[0m"
# new_home_token="- PANDORA_NEXT_LICENSE="
curl -fLO "${pandor_url}" ||true
new_home_token=`cat license.jwt` ||true

echo -e "\033[33m 执行替换token \033[0m"
sed -i "s@- PANDORA_NEXT_LICENSE.*\$@- PANDORA_NEXT_LICENSE=${new_home_token}@g" ${chatgpt_web}
echo -e "\033[32m ${new_home_token}
##################################### 替换成功! #############################
##########################${chatgpt_web}已更新! \033[0m"
sleep 2
echo -e "\033[33m 正在应用最新配置 \033[0m"
docker-compose -f ${chatgpt_web} up -d && docker-compose -f ${chatgpt_web} restart
echo -e "\033[32m #################### 容器重启成功! 浏览器访问本机IP体验服务~ ################# \033[0m"

echo "最新gpt token为:${newgpt_token}" >> new-chatgpt-token.txt
echo "最新潘多拉代理 token为:${newgpt_token}" >> new-chatgpt-token.txt

echo -e "\033[35m 本次chatgpt最新token为:${newgpt_token} \033[0m"
echo ""
echo -e "\033[34m #######新chatgpt token已经代理token已存入文件 new-chatgpt-token.txt 将此token作为密钥访问服务输入此密钥即可!######### \033[0m"
ls -l
apt install -y lrzsz ||true
yum install -y lrzsz ||true
echo -e "\033[35m token文件将下载到本机电脑请选择文件存储路径 \033[0m"
sleep 2
sz ./new-chatgpt-token.txt
continue
;;

exit)echo -e "\033[36m 退出 \033[0m"
break
;;

*)echo -e "\033[33m 输入错误请重新输入 \033[0m"
continue
;;

esac
done

扩展

  • 替换旧的OPENAI_ACCESS_TOKEN脚本replace-chattoken.sh

  • 执行方式

  • curl -sSL http://lc-iZXJwsNX.cn-e1.lcfile.com/hBuQwA0DiYm2VRcmVuMMM3iC77yG4cz3/replace-chattoken.sh |sh

  • 必要条件docker-compose.yml文件位于/opt/chatgpt/docker-compose.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
    #替换chatgpt_token脚本
    set -e
    chatgpt_web="/opt/chatgpt/docker-compose.yml"
    #token_chatgpt=`cat -n ${chatgpt_web} |grep OPENAI_ACCESS_TOKEN`
    new_token="OPENAI_ACCESS_TOKEN: eyJhbGtestSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkQ05UZzVNRFUxUlRVd1FVSkRNRU13UmtGRVFrRXpSZyJ9.eyJodHRwczovL2FwaS5vcGVuYWkuY29tL3Byb2ZpbGUiOnsiZW1haWwiOiJ4d2dlZ2V3dUBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZX0sImh0dHBzOi8vYXBpLm9wZW5haS5jb20vYXV0aCI6eyJwb2lkIjoib3JnLXlJeGFwc3duTzB2SGFLWkRXSEVoVERRVSIsInVzZXJfaWQiOiJ1c2VyLURISkM1ZTJ3SEJDUWlRbVhqY0RLSXRrcCJ9LCJpc3MiOiJodHRwczovL2F1dGgwLm9wZW5haS5jb20vIiwic3ViIjoiYXV0aDB8NjRiZTFiZTA0ZWFjMTk2N2U4YmE1ZDQwIiwiYXVkIjpbImh0dHBzOi8vYXBpLm9wZW5haS5jb20vdjEiLCJodHRwczovL29wZW5haS5vcGVuYWkuYXV0aDBhcHAuY29tL3VzZXJpbmZvIl0sImlhdCI6MTY5OTMyMjQ2NSwiZXhwIjoxNzAwMTg2NDY1LCJhenAiOiJUZEpJY2JlMTZXb1RIdE45NW55eXdoNUU0eU9vNkl0RyIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwgbW9kZWwucmVhZCBtb2RlbC5yZXF1ZXN0IG9yZ2FuaXphdGlvbi5yZWFkIG9yZ2FuaXphdGlvbi53cml0ZSBvZmZsaW5lX2FjY2VzcyJ9.NgNWc5ojECPqewtdgQKlXrccy8_uLtDHepzxFBGVj40ezbPq0_qglJVR90g_AAAjbBEq9ZW3hogtGj8kG3Gu_w437inrCWNMwdf30KhfDf2YYGbEf5XL5UD5bgECLdmfOa3fk_mweOh7zLfRfRr3mrbPtQlFLX-_T-xuEB7mBqj86RauVFvsuAQ0eFvJAaldeuLib2ghdC7UrBugnT3DhxpUSrZaqPmYAk8fihV2UGXFUzI2iR9M-SpK0ZY2XhCWMcWql3Sfc9pFWQf4lNJdGup8UEZSm9BzCMQfmImo0g2eG1bK_oQWslMi7woR74-Aev30twLtNQgWRPUZZXptUQ"

    echo -e "\033[33m 执行替换token \033[0m"
    sed -i "s@OPENAI_ACCESS_TOKEN.*\$@${new_token}@g" ${chatgpt_web}
    echo -e "\033[32m ${new_token}
    ##################################### 替换成功! #############################
    ##########################${chatgpt_web}已更新! \033[0m"

    echo -e "\033[33m 正在应用最新配置 \033[0m"
    docker-compose -f ${chatgpt_web} up -d && docker-compose -f ${chatgpt_web} restart
    echo -e "\033[32m #################### 容器重启成功! 浏览器访问本机IP体验服务~ ################# \033[0m"

教程结束。