type
status
date
slug
summary
tags
category
icon
password
Feb 24, 2024 07:33 AM
👉
本篇文档介绍一下如何使用Docker轻松构建Clash代理服务器,并运用官方api搭建一个ChatGPT演示网页,实现一个公有ChatGPT聊天窗口

一、 镜像准备

这里我们简单介绍一下需要准备相关的镜像
  • ChatGPT
    • ChatGPT的演示网页,可以点击前往Github上下载构建镜像 ChatGPT
  • Clash
    • dreamacro/clash,一个基于规则的跨平台代理软件核心程序,支持 v2ray、Shadowsocks、trojan、Snell、http 等多种协议,GitHub链接 Clash
  • Clash-UI
    • haishanh/yacd, clash的Web版的面板,可以配置节点、查看服务状态、上传下载的流量统计信息等,GitHub链接 Clash-UI
  • Nginx
    • nginx做域名映射和转发
       

二、clash代理搭建

  1. 拉取clash镜像
    1. 创建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代理节点相关信息
    1. 运行 dreamacro/clash 容器
      1. 运行 haishanh/yacd 容器
        1. 启动后,访问 ip+端口号9095进入Clash web页面
          1. notion image
        1. 在web页面配置Clash代理地址和密码,这里解释一下上图中各个输入参数的含义
            • API Base URL : Clash代理地址,端口为启动容器时映射的 9090,也是 config.yaml配置文件中 external-controller 参数值 0.0.0.0:9090 后指定的端口号
              • notion image
            • Securet(optional) : Clash 连接密钥,即 config.yaml 配置文件中的 secret数值,这里例子为 123456
              • notion image
            • Label(optional) : 代理标签名,自定义,我们这里可以填入 ChatGPT
        1. 点击 ADD 添加成功后会进入到 Clash 管理界面,这里可以进行流量监控,节点配置、代理配置等
          1. notion image
         

        三、ChatGPT演示搭建

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

        四、Nginx配置

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

          五、docker-compose

          1. docker-compose.yaml配置文件