【开源|心路】一个基于 Cloudflare 的开源轻量级端点编排平台 - 适用于代理分发、配置分发、加速访问、权限控制等

今天来给大家分享一个新做的小项目!NekroEndpoint 是一个基于 Cloudflare Workers 构建的开源端点编排平台,可以快速地边缘节点快速部署分发静态资源、代理加速各种资源等

动机

首先说说为什么要做这个东西呢?首先我有一份自定义过的 Clash 聚合代理节点配置文件,它大概长这样:

Clash 自定义代理配置样例
common-proxy-list:
  &a2
  - DIRECT
  - 🏠 自建节点
  - 🇭🇰 HKG-自建
  - 🌐 自动优选
  - 🇭🇰 香港-自动
  - 🇺🇸 美国-自动
  - 🇯🇵 日本-自动
  - 🇸🇬 新加坡-自动
  - 🇬🇧 英国-自动
  - 🇨🇳 台湾-自动
  - 🇭🇰 香港-手动
  - 🇺🇸 美国-手动
  - 🇯🇵 日本-手动
  - 🇸🇬 新加坡-手动
  - 🇬🇧 英国-手动
  - 🇨🇳 台湾-手动
  - 🇨🇦 加拿大-自动
  - 🇰🇷 韩国-自动
  - 🇲🇾 马来-自动
  - 🇳🇬 尼日-自动
  - 🇪🇬 埃及-自动
  - 🇵🇭 菲律-自动
  - 🇹🇷 土耳其-自动
  - 🇻🇳 越南-自动
  - 🇿🇦 南非-自动
  - 🔮 手动选择
full-proxy-list:
  &a1
  - DIRECT
  - 🏠 自建节点
  - 🤖 AI服务
  - 🔍 谷歌服务
  - 🛒 国外购物
  - 🎮 游戏平台
  - 🇭🇰 HKG-自建
  - 🌐 自动优选
  - 🇭🇰 香港-自动
  - 🇺🇸 美国-自动
  - 🇯🇵 日本-自动
  - 🇸🇬 新加坡-自动
  - 🇬🇧 英国-自动
  - 🇨🇳 台湾-自动
  - 🇭🇰 香港-手动
  - 🇺🇸 美国-手动
  - 🇯🇵 日本-手动
# ...
  - 🔮 手动选择
auto-test-template:
  &a3
  type: url-test
  use:
    - main_provider
    - sub_provider
  url: http://www.gstatic.com/generate_204
  interval: 300
  tolerance: 50
  lazy: true
manual-select-template:
  &a4
  type: select
  use:
    - main_provider
    - sub_provider
auto-fallback-template:
  &a5
  type: fallback
  use:
    - main_provider
    - sub_provider
  url: http://www.gstatic.com/generate_204
  interval: 300
mixed-port: 7890
mode: rule
log-level: info
external-controller: 127.0.0.1:62241
proxy-providers:
  main_provider:
    type: http
    url: https://......
    interval: 36000
    path: ./main_251204.yaml
    health-check:
      enable: true
      interval: 600
      url: http://www.gstatic.com/generate_204
  sub_provider:
    type: http
    url: https://......
    interval: 36000
    path: ./sub_251204.yaml
    disable-download: false
    force-update: true
    health-check:
      enable: true
      interval: 600
      url: http://www.gstatic.com/generate_204
proxies:
  - name: 🇭🇰 HKG-自建
    type: http
    server: xx.xx.xx.xx
    port: 7899
    username: xxxxxxx
    password: xxxxxxx
proxy-groups:
  - name: 🚀 全局代理
    type: select
    proxies: *a1
  - name: 🌍 国外媒体
    type: select
    proxies: *a1
  - name: 🔮 手动选择
    type: select
    use:
      - main_provider
      - sub_provider
    proxies:
      - 🇭🇰 HKG-自建
  - name: 🏠 自建节点
    type: select
    proxies:
      - 🇭🇰 HKG-自建
  - name: Ⓜ️ 微软服务
    type: select
    proxies: *a1
  - name: 🤖 AI服务
    type: select
    proxies: *a2
  - name: 🔍 谷歌服务
    type: select
    proxies: *a2
  - name: 🛒 国外购物
    type: select
    proxies: *a2
  - name: 🎮 游戏平台
    type: select
    proxies: *a2
  - name: 🇭🇰 香港-自动
    <<: *a3
    filter: HK|HongKong|Hong Kong|香港|港
  - name: 🇭🇰 香港-手动
    <<: *a4
    filter: HK|HongKong|Hong Kong|香港|港
  - name: 🇺🇸 美国-自动
    <<: *a3
    filter: USA|United States|America|美国|美|洛杉矶|纽约|旧金山|西雅图|芝加哥
  - name: 🇺🇸 美国-手动
    <<: *a4
    filter: USA|United States|America|美国|美|洛杉矶|纽约|旧金山|西雅图|芝加哥
# ...
  - name: 🔔 订阅专用
    <<: *a3
    filter: 订阅专用节点
    interval: 600
  - name: 🌐 自动优选
    <<: *a5
  - name: 🍃 应用净化
    type: select
    proxies:
      - REJECT
      - DIRECT
rules:
  - PROCESS-NAME,rustdesk,DIRECT
  - IP-CIDR,172.0.0.0/24,DIRECT
  - IP-CIDR,127.0.0.0/24,DIRECT
# ....
  - GEOIP,CN,DIRECT
  - MATCH,🚀 全局代理

它的作用大概是把多个来源的订阅节点进行混合,然后按地区重新聚合,同时附加了一些自定义的规则区分,以此来实现高可自定义的精细代理控制,但是当我编写完这份文件以后我还需要将它同步到我的软路由上和其他地方的设备上,手动搬运这些规则文件就非常麻烦,于是我很自然地想到了如果有一个服务能够:

  1. 托管静态资源,并提供url分发
  2. 最好随时可以编辑内容和更新,有一个好用的编辑器和 yaml 语法高亮
  3. 最好有权限控制,方便把一些资源分发给别人访问
  4. 如果能直接代理访问某些资源就更好了…这样方便在网络不佳的设备上获取一些资源
  5. 不需要服务器部署和维护(既要又要)
  6. 现代化酷炫的前端页面!

针对这些目标,我在网上找了一圈以后…好吧什么都没找到,不然就没有这个项目了()

于是我开始为了这碟醋包了一顿饺子,心想既然要做那就做个足够好用的架子,不但要满足上面这些功能,还能顺便实现一些资源代理的功能,于是我掏出了 Gemini 开始进行需求 Battle ,加上之前储备的 vibe 模板框架开始和哈基米进行友好互动 …

最终完成了…

效果

嗯…和想象中的差不多了…当然了,为了这碟醋包的饺子要是一个人吃就太浪费了,所以还是整理了一下拿出来给佬友们,目前的基本预定目标均已开发完成,可以实现很方便地托管文件和代理转发等用途,详细用法文档和功能介绍可以看看 在线的项目文档

为了安全性考虑,NekroEndpoint 线上部署项目 在使用 Github 登录后可以使用编辑端点、权限组等功能,但未激活的用户无法发布端点,需要使用可以自行部署使用哦,项目完全开源无任何限制!

线上地址: https://ep.nekro.ai/

目前我自己的应用场景主要有两个地方:

  1. 前面提到的代理资源整合配置和统一分发
  2. 托管一些获取方式比较繁琐的代理节点 (某些机场需要连接到指定节点才能获取真正的节点信息,可以用一台设备先获取,然后把完整的节点信息再托管到另一个端点中访问)
  3. 给自己的其他项目资源(部署脚本/编排等被墙资源)做访问代理加速 - 比如 NekroAgent 部署
  4. 和朋友共享这个项目!(支持 Github 登录,可以自由在管理后台配置每个用户的激活功能)

当然还有其他的潜在应用方向:

  1. 项目配置/公告信息/动态资源下发/Mock接口 (云控配置)
  2. 鉴权分发接口/隐藏服务原始信息(比如提供一些本地绘图或者模型推理接口给别人访问)
  3. 反向代理(通过自定义请求头等信息访问一些跨域限制或者需要额外验证的资源)
  4. … (期待佬友开发更多玩法)

好啦!本次项目分享就到这里,期望能给大家带来一些帮助,如果对你有用的话欢迎给一个 :star: 支持一下喵~(这真的很重要)

下面是一些 NekroAI 的一些其他项目回顾!(走过路过不要错过喵~)


更多项目

21 个赞

佬太强了!

1 个赞

感谢分享!

1 个赞

太强了佬

1 个赞

太强了佬

佬太强了!

感谢大佬 !

太强了佬(

支持一波,佬强:+1:

佬太强了,这就使用!

那我之前放到github私人仓库然后又转门找ai写个workers来转发直链算啥 :sob:

算…算你动手能力强(

佬友,仓库看不到使用模板的按钮耶

直接fork吧,方便更新了同步

佬友厉害啊

很强恒强