clash / README.md
clash-linux's picture
Upload 13 files
99187f2 verified
|
raw
history blame
4.85 kB
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              # 环境变量模板

快速开始

准备工作

  1. 获取可执行文件:

  2. 将上述文件放入对应目录:

    • clash-linux-amd64clash_core/目录
    • subconvertersubconverter/目录

本地开发

  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
    • 点击"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密钥

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