Spaces:
Paused
Paused
metadata
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 # 环境变量模板
快速开始
准备工作
获取可执行文件:
- 下载Clash Core: github.com/Dreamacro/clash/releases
- 下载subconverter: github.com/tindy2013/subconverter/releases
将上述文件放入对应目录:
clash-linux-amd64→clash_core/目录subconverter→subconverter/目录
本地开发
安装依赖:
pip install -r requirements.txt设置环境变量:
cp .env.example .env # 编辑.env文件,设置SUB_URL和API_KEY启动应用:
python -m app.main
Docker部署
构建Docker镜像:
docker build -t simple-clash-relay .运行容器:
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部署
在Hugging Face上创建Space:
- 访问 huggingface.co/spaces
- 点击"Create new Space"
- 选择"Docker"作为Space SDK
- 填写名称和其他设置
克隆Space仓库:
git clone https://huggingface.co/spaces/你的用户名/你的Space名称 cd 你的Space名称复制项目文件:
# 将所有项目文件复制到此目录提交和推送:
git add . git commit -m "Initial commit" git push设置Secrets:
- 在Hugging Face Space设置页面添加以下secrets:
SUB_URL: 你的订阅链接API_KEY: 你的API密钥
- 在Hugging Face Space设置页面添加以下secrets:
使用教程:为其他项目提供代理
基本代理地址
服务部署成功后,您可以使用以下地址作为代理:
对于部署在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程序
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命令
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项目中使用
# 设置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容器中使用
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中使用
git config --global http.proxy http://clash-linux-clash.hf.space/proxy
git config --global https.proxy http://clash-linux-clash.hf.space/proxy
切换代理节点
为获得最佳性能,您可能需要切换使用的代理节点:
- 访问
https://clash-linux-clash.hf.space/ui/ - 首次使用时设置外部控制器地址为
/clashapi,密钥为您的API密钥(默认为changeme) - 在Proxies选项卡中,选择GLOBAL策略组,然后选择一个可用的节点
详细使用指南
1. 配置管理
使用订阅链接
服务默认使用环境变量SUB_URL中配置的订阅链接。如需刷新订阅:
- 访问Web UI
https://clash-linux-clash.hf.space/ - 点击"刷新订阅并重启Clash"按钮
- 输入API密钥(默认为
changeme)
上传自定义配置
如果您有现成的Clash配置文件:
- 访问Web UI
https://clash-linux-clash.hf.space/ - 在"上传手动配置"区域选择您的配置文件(.yaml或.yml)
- 点击"上传并应用配置"按钮
- 输入API密钥
恢复使用订阅
如果您想从手动配置恢复到使用订阅:
- 在"调试与恢复"区域点击"清理配置并重启"
- 确认操作并输入API密钥
2. 查看当前配置
您可以检查当前使用的配置文件内容:
- 在Web UI中点击"查看当前配置文件"
- 输入API密钥
- 配置内容将显示在页面上
3. 代理控制面板(Yacd)
高级用户可以使用内置的Yacd面板管理代理:
- 访问
https://clash-linux-clash.hf.space/ui/ - 首次使用时需配置:
- 外部控制器地址:
/clashapi - 密钥:您的API密钥(默认为
changeme)
- 外部控制器地址:
- 在此面板中,您可以:
- 切换节点
- 查看连接日志
- 管理规则
- 监控网络流量
4. API接口
系统提供了以下API接口,所有请求都需要在Header中包含X-API-Key:
GET /api/nodes- 获取所有可用节点GET /api/current- 获取当前使用的节点PUT /api/switch- 切换到指定节点POST /api/refresh- 刷新订阅并重启ClashPOST /api/upload_config- 上传自定义配置文件POST /debug/clean- 清理配置并重新初始化GET /debug/config- 获取当前配置文件内容
5. 排错指南
如果遇到问题,请尝试以下步骤:
代理连接失败:
- 确认代理地址正确
- 检查是否选择了可用的节点
- 尝试切换到其他节点
节点无法连接:
- 刷新订阅获取最新节点
- 检查配置文件是否正确
- 尝试上传新的配置文件
界面加载问题:
- 清除浏览器缓存
- 使用无痕模式访问
- 检查浏览器控制台是否有错误信息
配置问题:
- 使用"清理配置并重启"功能重置系统
- 检查订阅链接是否有效
- 检查上传的配置文件格式是否正确
自定义部署
Docker环境变量
自行部署时可使用以下环境变量:
SUB_URL:订阅链接URLAPI_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