type
status
date
slug
summary
tags
category
icon
password
Feb 24, 2024 07:33 AM
本篇文档介绍一下如何使用Docker轻松构建Clash代理服务器,并运用官方api搭建一个ChatGPT演示网页,实现一个公有ChatGPT聊天窗口
一、 镜像准备
这里我们简单介绍一下需要准备相关的镜像
- ChatGPT
- Clash
- Clash-UI
- Nginx
nginx做域名映射和转发
二、clash代理搭建
- 拉取clash镜像
- 创建config.yaml配置文件
sudo docker vim /data/volumn/clash/config.ymal, 根据实际情况修改 port: Clash 监听的 HTTP 代理端口号。你可以通过这个端口来配置系统或应用程序使用 Clash 作为代理socks-port: Clash 监听的 SOCKS5 代理端口号。与 HTTP 代理类似,但支持更多协议allow-lan: 允许局域网内其他设备连接到 Clash。如果设置为true,局域网内其他设备可以使用你的 Clash 服务。如果设置为false,只有本地设备才可以连接mode: Clash 的工作模式。在这个例子中,工作模式为规则模式true,即按照用户配置的规则进行代理log-level: 日志输出级别,表示输出信息的详细程度。在这个例子中,设置为info,即输出信息级别为信息external-controller: Clash 外部控制器的地址和端口。这允许你使用其他工具通过 API 控制 Clash。在这个例子中,Clash 的外部控制器地址为0.0.0.0:9090,表示监听所有网络接口上的 9090 端口secret: 外部控制器的连接密钥。外部工具需要提供这个密钥来连接 Clash 外部控制authentication: 配置用户名和密码用于基本的代理认证。在这个例子中,用户名是 "admin",密码是 "456789"proxies: Clash代理节点相关信息
- 运行
dreamacro/clash容器
- 运行
haishanh/yacd容器
- 启动后,访问 ip+端口号9095进入Clash web页面

- 在web页面配置Clash代理地址和密码,这里解释一下上图中各个输入参数的含义
API Base URL: Clash代理地址,端口为启动容器时映射的 9090,也是config.yaml配置文件中external-controller参数值0.0.0.0:9090后指定的端口号Securet(optional): Clash 连接密钥,即config.yaml配置文件中的secret参数值,这里例子为 123456Label(optional): 代理标签名,自定义,我们这里可以填入ChatGPT


- 点击 ADD 添加成功后会进入到 Clash 管理界面,这里可以进行流量监控,节点配置、代理配置等

三、ChatGPT演示搭建
- ChatGPT演示网页镜像,我这里用的 https://github.com/Chanzhaoyu/chatgpt-web
-p 3002:ChatGPT默认端口号OPENAI_API_KEY:ChatGPT官方api key,可以前往官网注册,自己生成AUTH_SECRET_KEY:访问ChatGPT演示网页需要认证的密码,不添加此参数则无需认证SOCKS_PROXY_PORT:这里我选择SOCKS代理,端口号就是前面配置的socks-port: 7891SOCKS_PROXY_USERNAME:代理认证需要的用户名SOCKS_PROXY_PASSWORD:代理认证需要的密码



四、Nginx配置
- 先创建
nginx.conf配置文件,我这里在/data/volumn/nginx/目录下创建 - 域名注册+ssl端口:如果注册了自己的域名,可以进行域名配置,ssl证书可以去注册商网站进行下载。我这里是在腾讯云注册的。如果没有注册域名或者没有ssl证书,则此处无需配置
- 反爬虫配置:防止一些的爬虫行为
- 证书和协议配置: 我这里证书放在了
/data/volumn/nginx/ssl目录下 - 代理配置:chatgpt-web 是chatgpt镜像名,3002是对应的端口




- 启动nginx容器
五、docker-compose
- docker-compose.yaml配置文件