--- title: Simple Clash Relay emoji: 🚀 colorFrom: blue colorTo: indigo sdk: docker app_port: 7860 pinned: false --- # Clash Proxy Service 一个轻量级的自建Clash代理服务,适用于Hugging Face部署,可通过Web UI和API控制。提供HTTP和SOCKS5代理,支持订阅链接和手动配置文件上传。 ## 功能特点 - 🚀 **轻量级架构**:基于Python Flask和Clash Meta,资源占用小 - 🔄 **多种配置方式**: - 支持机场订阅链接自动下载转换 - 支持手动上传Clash配置文件 - 🌐 **完整的代理功能**: - HTTP/HTTPS代理 (端口7890) - SOCKS5代理 (端口7890) - 🖥️ **内置控制面板**: - 集成Yacd控制界面,可视化管理代理 - 基础的操作面板,简化常用操作 - 🔌 **暴露的端口**: - **7860**: Web界面和API服务(Hugging Face默认端口) - **7890**: Clash代理服务(HTTP/SOCKS5) - **9090**: Clash内部API服务(通常不需直接访问) - 🔒 **安全性设计**: - API密钥保护所有控制接口 - 可选的配置加密存储 - 🌍 **兼容性**: - 适用于Hugging Face Spaces - 支持Docker本地部署 - 兼容各类Clash客户端 ## 系统要求 - Docker (本地开发/部署) - 或 Python 3.8+ (本地开发) - 机场订阅链接 - Hugging Face账户 (云部署) ## 项目结构 ``` simple-clash-relay/ ├── app/ # Flask应用代码 │ ├── __init__.py │ ├── main.py # API路由和应用入口 │ ├── clash_manager.py # Clash Core管理 │ ├── sub_manager.py # 订阅管理 │ └── auth.py # API认证 ├── clash_core/ # Clash Core可执行文件 ├── subconverter/ # subconverter可执行文件 ├── data/ # 运行时数据 ├── Dockerfile # Docker构建文件 ├── entrypoint.sh # 容器启动脚本 ├── requirements.txt # Python依赖 └── .env.example # 环境变量模板 ``` ## 快速开始 ### 准备工作 1. 获取可执行文件: - 下载Clash Core: [github.com/Dreamacro/clash/releases](https://github.com/Dreamacro/clash/releases) - 下载subconverter: [github.com/tindy2013/subconverter/releases](https://github.com/tindy2013/subconverter/releases) 2. 将上述文件放入对应目录: - `clash-linux-amd64` → `clash_core/`目录 - `subconverter` → `subconverter/`目录 ### 本地开发 1. 安装依赖: ``` pip install -r requirements.txt ``` 2. 设置环境变量: ``` cp .env.example .env # 编辑.env文件,设置SUB_URL和API_KEY ``` 3. 启动应用: ``` python -m app.main ``` ### Docker部署 1. 构建Docker镜像: ``` docker build -t simple-clash-relay . ``` 2. 运行容器: ``` docker run -d \ -p 7860:7860 \ -p 7890:7890 \ -e SUB_URL=你的订阅链接 \ -e API_KEY=你的API密钥 \ --name clash-relay \ simple-clash-relay ``` ### Hugging Face Spaces部署 1. 在Hugging Face上创建Space: - 访问 [huggingface.co/spaces](https://huggingface.co/spaces) - 点击"Create new Space" - 选择"Docker"作为Space SDK - 填写名称和其他设置 2. 克隆Space仓库: ``` git clone https://huggingface.co/spaces/你的用户名/你的Space名称 cd 你的Space名称 ``` 3. 复制项目文件: ``` # 将所有项目文件复制到此目录 ``` 4. 提交和推送: ``` git add . git commit -m "Initial commit" git push ``` 5. 设置Secrets: - 在Hugging Face Space设置页面添加以下secrets: - `SUB_URL`: 你的订阅链接 - `API_KEY`: 你的API密钥 ## 使用教程:为其他项目提供代理 ### 基本代理地址 服务部署成功后,您可以使用以下地址作为代理: 对于部署在Hugging Face上的服务: - **HTTP/HTTPS代理**:`https://clash-linux-clash.hf.space/proxy` - **SOCKS5代理**:`socks5://clash-linux-clash.hf.space:7890`(注意:SOCKS5在Hugging Face上可能受限) 对于本地部署的服务: - **HTTP/HTTPS代理**:`http://localhost:7890` - **SOCKS5代理**:`socks5://localhost:7890` ### 在不同场景中使用代理 #### 1. Python程序 ```python import requests proxies = { "http": "http://clash-linux-clash.hf.space/proxy", "https": "http://clash-linux-clash.hf.space/proxy" } response = requests.get("https://api.openai.com/v1/...", proxies=proxies) ``` #### 2. curl命令 ```bash curl -x http://clash-linux-clash.hf.space/proxy https://api.openai.com/v1/... ``` #### 3. 在其他Hugging Face项目中使用 在其他Hugging Face项目的配置中,添加环境变量: ``` HTTP_PROXY=http://clash-linux-clash.hf.space/proxy HTTPS_PROXY=http://clash-linux-clash.hf.space/proxy ``` #### 4. 在NPM项目中使用 ```bash # 设置npm代理 npm config set proxy http://clash-linux-clash.hf.space/proxy npm config set https-proxy http://clash-linux-clash.hf.space/proxy ``` #### 5. Docker容器中使用 ```bash docker run -e HTTP_PROXY=http://clash-linux-clash.hf.space/proxy -e HTTPS_PROXY=http://clash-linux-clash.hf.space/proxy your-image ``` #### 6. Git中使用 ```bash git config --global http.proxy http://clash-linux-clash.hf.space/proxy git config --global https.proxy http://clash-linux-clash.hf.space/proxy ``` ### 切换代理节点 为获得最佳性能,您可能需要切换使用的代理节点: 1. 访问 `https://clash-linux-clash.hf.space/ui/` 2. 首次使用时设置外部控制器地址为 `/clashapi`,密钥为您的API密钥(默认为`changeme`) 3. 在Proxies选项卡中,选择GLOBAL策略组,然后选择一个可用的节点 ## 详细使用指南 ### 1. 配置管理 #### 使用订阅链接 服务默认使用环境变量`SUB_URL`中配置的订阅链接。如需刷新订阅: 1. 访问Web UI `https://clash-linux-clash.hf.space/` 2. 点击"刷新订阅并重启Clash"按钮 3. 输入API密钥(默认为`changeme`) #### 上传自定义配置 如果您有现成的Clash配置文件: 1. 访问Web UI `https://clash-linux-clash.hf.space/` 2. 在"上传手动配置"区域选择您的配置文件(.yaml或.yml) 3. 点击"上传并应用配置"按钮 4. 输入API密钥 #### 恢复使用订阅 如果您想从手动配置恢复到使用订阅: 1. 在"调试与恢复"区域点击"清理配置并重启" 2. 确认操作并输入API密钥 ### 2. 查看当前配置 您可以检查当前使用的配置文件内容: 1. 在Web UI中点击"查看当前配置文件" 2. 输入API密钥 3. 配置内容将显示在页面上 ### 3. 代理控制面板(Yacd) 高级用户可以使用内置的Yacd面板管理代理: 1. 访问 `https://clash-linux-clash.hf.space/ui/` 2. 首次使用时需配置: - 外部控制器地址:`/clashapi` - 密钥:您的API密钥(默认为`changeme`) 3. 在此面板中,您可以: - 切换节点 - 查看连接日志 - 管理规则 - 监控网络流量 ### 4. API接口 系统提供了以下API接口,所有请求都需要在Header中包含`X-API-Key`: - `GET /api/nodes` - 获取所有可用节点 - `GET /api/current` - 获取当前使用的节点 - `PUT /api/switch` - 切换到指定节点 - `POST /api/refresh` - 刷新订阅并重启Clash - `POST /api/upload_config` - 上传自定义配置文件 - `POST /debug/clean` - 清理配置并重新初始化 - `GET /debug/config` - 获取当前配置文件内容 ### 5. 排错指南 如果遇到问题,请尝试以下步骤: 1. **代理连接失败**: - 确认代理地址正确 - 检查是否选择了可用的节点 - 尝试切换到其他节点 2. **节点无法连接**: - 刷新订阅获取最新节点 - 检查配置文件是否正确 - 尝试上传新的配置文件 3. **界面加载问题**: - 清除浏览器缓存 - 使用无痕模式访问 - 检查浏览器控制台是否有错误信息 4. **配置问题**: - 使用"清理配置并重启"功能重置系统 - 检查订阅链接是否有效 - 检查上传的配置文件格式是否正确 ## 自定义部署 ### Docker环境变量 自行部署时可使用以下环境变量: - `SUB_URL`:订阅链接URL - `API_KEY`:API访问密钥(默认为"changeme") - `FLASK_PORT`:Web界面端口(默认7860) - `CLASH_PROXY_PORT`:Clash代理端口(默认7890) - `CLASH_API_PORT`:Clash API端口(默认9090) - `CLEAN_CONFIG`:启动时是否清理配置(true/false) ## 注意事项 - 本项目仅供学习研究使用,请遵守相关法律法规 - Hugging Face Spaces有资源和流量限制,请合理使用 - 为保障安全,请修改默认API密钥 - 上传的配置文件会覆盖订阅内容,如需恢复请使用清理功能 ## 许可 MIT