Spaces:
Paused
Paused
metadata
title: Simple Clash Relay
emoji: 🚀
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false
Simple Clash Relay
一个轻量级的自建Clash代理服务,可通过API控制节点切换。
功能特点
- 🚀 轻量级:基于Python Flask和Clash Core,最小化依赖
- 🔄 机场订阅支持:自动下载并转换您的机场订阅链接
- 🔌 多端口服务:
- 7860: Web界面和API服务(Hugging Face默认端口)
- 7890: Clash代理服务
- 9090: Clash内部API服务
- 🔒 API认证:通过API Key保护控制API
- 🔄 动态切换节点:通过API随时切换使用的节点
- 🐳 容器化:完整的Docker支持,便于部署
- 🔥 Hugging Face友好:针对Hugging Face Spaces平台优化
系统要求
- 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:
API使用
所有API请求需要在请求头中包含X-API-Key: 你的API密钥。
获取节点列表
GET /api/nodes
响应:
{
"success": true,
"nodes": ["节点A", "节点B", "节点C"]
}
切换节点
PUT /api/switch
Content-Type: application/json
{
"node": "节点B"
}
响应:
{
"success": true,
"message": "已切换到节点: 节点B"
}
获取当前节点
GET /api/current
响应:
{
"success": true,
"current_node": "节点B"
}
刷新订阅
POST /api/refresh
响应:
{
"success": true,
"message": "订阅已刷新,Clash已重启"
}
在应用中使用代理
您可以通过以下方式使用代理服务:
标准模式
- HTTP代理:
http://your-server-ip:7890 - SOCKS5代理:
socks5://your-server-ip:7890
Hugging Face Spaces模式 (代理路径转发)
- HTTP代理:
http://your-space-name.hf.space/proxy - SOCKS5代理:
socks5://your-space-name.hf.space/proxy
在cursor-to-openai项目中配置
修改您的cursor-to-openai项目配置,设置代理地址:
- 本地部署:
http://localhost:7890 - Hugging Face部署:
http://your-space-name.hf.space/proxy
注意事项
- 本项目仅用于个人学习和研究目的
- 请遵守当地法律法规,不要用于非法用途
- 确保设置强密码API Key以保护接口
- Hugging Face Spaces有资源和流量限制,请合理使用
许可
MIT