clash / README.md
clash-linux's picture
Upload 21 files
ff9409f verified
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              # 环境变量模板

快速开始

准备工作

  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密钥

使用教程:为其他项目提供代理

基本代理地址

服务部署成功后,您可以使用以下地址作为代理:

对于部署在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

切换代理节点

为获得最佳性能,您可能需要切换使用的代理节点:

  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