Spaces:
Paused
Paused
File size: 8,839 Bytes
fee4830 99187f2 fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f 99187f2 ff9409f fee4830 99187f2 fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f 99187f2 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 ff9409f fee4830 390dc9b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 |
---
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 |