Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

GitHub-proxy → GitWorks — cf 部署一键gitworks(多平台仓库发布面板)

中文名:cf 部署一键gitworks 英文名:GitWorks 国内直连 GitHub 不方便,为省事而做的「一键建仓 + 推送」中间代理。 Cloudflare Workers 出站不受本地网络影响,Worker 本身无状态,用完即焚。

核心功能

  • 统一面板上传:浏览器上传 zip → 自动创建仓库(私有/公开)→ 推送 → 返回仓库链接;上传带实时进度条,成功/失败及原因明确展示
  • 点击式多平台批量发布:平台以可点击 chips 呈现,可多选,一次上传按 todo 列表依次推送到选中的所有平台(逐个显示 排队中/上传中/成功/失败)
  • 可配置多平台(聚焦海外平台):默认内置 GitHub(国内直连不便);GitLab 等可通过面板「平台配置」添加(支持私有域名);Gitee 国内可直连、无需代理,如需使用也可在面板自行添加
  • 自动建仓 + 自动解压:上传 zip 自动解压,顶层若只有单一包裹目录则剥掉该层,内容直接进入仓库根(README 等文件在根目录,不会塞进子目录)
  • 自动获取项目名:仓库名留空时自动推断——顶层目录名 > package.json 的 name > README 首个 # 标题;也可手动填写
  • 远程仓库管理:面板列出所选平台仓库(名称/可见性/分支/链接),可一键删除(二次确认)
  • 历史操作日志:记录时间/平台/仓库/URL/成败,面板实时展示(存 KV)
  • git push 直推代理(GitHub):git push https://oauth2:<token>@xxxx.com/talay0998/<仓库>.git main 自动建仓
  • 账号密码登录:会话 cookie(7 天),未登录接口一律 401
  • layui 风格后台布局:左侧导航 + 顶部栏 + 内容区(上传发布 / 远程仓库 / Git 下载 / 历史日志 / 平台配置 / 开发者接入),卡片式、微信绿配色,CSS 内嵌零外链
  • 开发者接入:
    • HTTP API(/api/v1/*,Bearer Token 鉴权):推送代码(逐文件 JSON 或 zip)、列仓库、删仓库
    • MCP Server(/mcp?token=<API_TOKEN>):暴露 push_repo / list_repos / delete_repo 工具,AI IDE(opencode / Claude Code / Cursor)可一键接入上传
  • Git 下载(GitHub → R2 缓存 → 国内直链):面板「Git 下载」页搜索 GitHub 公开仓库(GitHub Search API)→ 一键下载 tar.gz;Worker 从 GitHub 拉取后缓存到 R2,二次下载直接命中 R2(X-Cache: HIT),下载地址走 worker 域名 xxxx.com/dl/<owner>/<repo>,国内可访问
  • 安全:zip 路径穿越校验、单文件 ≤1MB、token 打码展示、API Token 面板可重置、敏感信息存 Worker secret 或 KV 不落仓库

技术栈

模块 技术
运行时 Cloudflare Workers
框架 Hono (TypeScript)
构建 Bun + wrangler
存储 Cloudflare KV(平台配置 / 会话 / 日志)+ Cloudflare R2(git 下载缓存)
AI Cloudflare Workers AI(预留,后续接入)
样式 Tailwind CSS(编译内嵌,layui 风格后台布局)
解压 fflate(Worker 内 zip 解析)

R2 用途:仅作 git 下载缓存。下载流程 —— 面板搜索 GitHub 仓库 → Worker 从 GitHub 拉取 tar.gz 并写入 R2 → 返回 xxxx.com/dl/<owner>/<repo> 直链;同一仓库再次下载直接命中 R2 缓存(X-Cache: HIT),避免重复回源 GitHub,国内可正常访问。默认 *.r2.dev 域名国内不可达,本项目下载走 worker 绑定的自定义域名 xxxx.com。

目录结构

github-proxy/
├── src/
│   ├── index.ts          # 全部路由 + 平台实现 + 内嵌前端 UI
│   ├── input.css         # Tailwind 入口
│   └── tailwind.ts       # 构建产物(CSS 字符串模块,勿手改)
├── scripts/
│   └── inline-css.ts     # 构建:把 tailwind.css 转成 TS 模块内嵌
├── tailwind.config.js
├── wrangler.toml         # Worker 配置(owner 变量 + KV/R2/AI 绑定)
└── package.json

快速开始

bun install
bun run build:css      # 编译 Tailwind 并生成内嵌模块
bun run dev            # 本地调试 wrangler dev
bun run deploy         # build:css + 部署到 Cloudflare

配置

平台在面板「平台配置」页管理(存 KV),字段:

字段 说明
ID 唯一标识(字母数字 _ -)
类型 github / gitee / gitlab
名称 显示名
账号/组织 各平台用户名或组织
Token 各平台访问令牌(编辑时留空保留原值)
域名 仅 GitLab 需要(如 https://gitlab.example.com)

首次进入默认内置 GitHub(token 从 Worker secret GITHUB_TOKEN 生成)。GitLab 等海外平台在面板「平台配置」添加;Gitee 国内可直连、非默认,如需要也可自行添加。

Worker secret(wrangler secret put <名>,勿写入代码/仓库):

secret 说明
GITHUB_TOKEN GitHub PAT(需 repo 权限)
GITEE_TOKEN Gitee 私有令牌(可选,国内直连无需代理)
ADMIN_PASS 面板登录密码
API_TOKEN 开发者 API/MCP 令牌(也可在面板「开发者接入」页生成/重置,存 KV)

Worker 绑定(wrangler.toml):

绑定 说明
KV 平台配置 / 会话 / 日志
R2 git 下载缓存桶 gitworks-cache
AI Workers AI(预留)

git push 代理用法(GitHub)

git remote add gw https://oauth2:<GITHUB_TOKEN>@xxxx.com/talay0998/<仓库名>.git
git push gw main

开发者接入

访问提示:Cloudflare 免费 *.workers.dev 域名(带 -dev 后缀)在国内无法直接访问。 请先绑定自己的域名(Worker → Triggers → Custom Domains,本项目用 xxxx.com),或使用特殊网络环境,否则 API / MCP / 面板均不可用。

第一步:获取 API Token

  1. 打开面板 https://xxxx.com 并登录
  2. 左侧菜单 → 开发者接入 → 查看/复制 API Token;点「重置 Token」可重新生成(旧 token 立即失效)
  3. Token 用于所有 HTTP API 与 MCP 请求鉴权(Authorization: Bearer <token>,或 URL 参数 ?token=)

HTTP API

# platform 可选:github / gitlab / 面板「平台配置」里添加的平台 id(Gitee 国内直连,按需配置)
# 推送代码到 GitHub(自动建仓,逐文件)
curl -X POST https://xxxx.com/api/v1/repos \
  -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" \
  -d '{"platform":"github","name":"my-app","visibility":"private",
       "files":[{"path":"README.md","content":"# hello"},
                {"path":"src/main.py","content":"print(1)"}]}'

# 推送代码到 GitLab(需先在平台配置添加)
curl -X POST https://xxxx.com/api/v1/repos \
  -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" \
  -d '{"platform":"gitlab","name":"my-app","visibility":"private",
       "files":[{"path":"README.md","content":"# hello"}]}'

# 列仓库 / 删仓库 / 用 zip(platform 同理)
curl -H "Authorization: Bearer <API_TOKEN>" "https://xxxx.com/api/v1/repos?platform=github"
curl -X DELETE -H "Authorization: Bearer <API_TOKEN>" "https://xxxx.com/api/v1/repos?platform=github&name=my-app"
curl -X POST https://xxxx.com/api/v1/repos -H "Authorization: Bearer <API_TOKEN>" \
  -H "Content-Type: application/json" -d '{"platform":"gitlab","name":"x","zip":"<base64>"}'

# Git 下载:搜索 GitHub 仓库
curl -H "Authorization: Bearer <API_TOKEN>" "https://xxxx.com/api/search?q=hono"
# 下载仓库 tar.gz(R2 缓存,二次命中)
curl -L -H "Authorization: Bearer <API_TOKEN>" -o hono.tar.gz "https://xxxx.com/dl/honojs/hono"

API Token 在面板「开发者接入」页查看/重置(也可用 Authorization: Bearer <token> 或 ?token=)。

MCP Server(AI IDE 一键上传)

工作原理:Worker 内置 MCP Server(streamable HTTP),AI IDE 通过 mcp-remote 连到 /mcp?token=<API_TOKEN>,即可让 AI 直接调用工具把代码一键推送到 GitHub/Gitee。

配置到 AI IDE 的步骤:

  1. 本地安装 MCP 远程客户端(任一 AI IDE 通用):
    npm install -g mcp-remote
  2. 先验证连通(能列出工具说明鉴权成功):
    npx mcp-remote https://xxxx.com/mcp?token=<API_TOKEN>
  3. 把 MCP server 写进你的 AI IDE 配置:
    • opencode(opencode.json):
      { "mcpServers": { "github-proxy": {
        "command": "npx",
        "args": ["mcp-remote", "https://xxxx.com/mcp?token=<API_TOKEN>"]
      } } }
    • Claude Code / Cursor:在 MCP 设置里添加同样的 command/args。
  4. 重启 AI IDE,工具 push_repo / list_repos / delete_repo 即可用。

工具说明:

工具 参数 说明
push_repo platform, name, visibility?, description?, files[{path, content, base64?}] 推送代码到指定平台(自动建仓),返回仓库地址
list_repos platform 列出平台仓库
delete_repo platform, name 删除仓库(不可恢复)

platform 取面板「平台配置」里的平台 id,默认内置 github(GitLab 等配置后也可用)。

示例提示词:"把当前项目发布到 GitHub 的 github-proxy 仓库" → AI 调用 push_repo 完成。

后续维护指引

  • 加平台类型:src/index.ts 实现一个平台类(ensureRepo / push / deleteRepo / list),在 buildOps() 注册,面板平台配置下拉加类型即可
  • 改 UI:编辑 INDEX_HTML(Tailwind 类),跑 bun run build:css 后重新部署
  • 换域名/绑定:Worker → Triggers → Custom Domains 绑定新域名(当前 xxxx.com)
  • 日志/会话/平台配置:存于 KV(key log:v1、session:*、platforms:v1),量大时按需清理
  • 安全提醒:定期轮换各平台 token;平台配置(含 token)存 KV,请勿把 KV 内容外泄;wrangler.toml 与源码不含密钥

后续研发规划

  • git 下载(clone/fetch):放开 git-upload-pack 代理,实现通过 Worker 反向下载仓库(与 push 同协议,本地连不上 GitHub 也能 clone);公开仓免 token,私有仓带 token
  • CF AI 增强(Workers AI):接入 Cloudflare Workers AI,自动生成仓库描述 / 项目名,上传时智能补全 README 与分类标签
  • 平台扩展:接入 GitLab(gitlab.com / 私有实例)、腾讯 CNB、自建 Gitea/私有仓库;统一平台抽象,面板下拉自动列出
  • 二次认证(2FA):接入 Microsoft Authenticator 等 TOTP 扫码登录,登录二次验证,支持恢复码与强制/可选策略
  • 多账号管理:支持一个面板下配置多个 GitHub/Gitee 账号与组织,上传时可选归属
  • 仓库管理:面板内列出/删除远程仓库、查看文件树、只读浏览(已建仓库)
  • 推送策略增强:大项目分批/并行推送、进度展示、失败重试与断点续传
  • Webhook / CI 集成:仓库创建与推送后回调自有服务(TAPD / 飞书 / 钉钉通知)
  • 运维增强:操作日志分页/导出、访问审计、限流与防爆破、面板口令走 CF 可加密变量
  • 前端体验:可编辑 JSON 配置(平台/默认可见性/描述模板)、深色模式、多语言

免责声明

本项目完全开源,仅供学习、研究和个人使用。

  • 不承担任何法律责任:使用本项目产生的任何直接或间接损失(包括但不限于仓库数据丢失、误删、账号封禁、token 泄露、平台违规等),作者不承担任何责任。
  • 谨慎使用:删除仓库、重置 token、发布到公网等均为不可逆操作,请在使用前确认;涉及真实账号/生产数据的操作请自行评估风险。
  • 安全提醒:本项目会存储各平台的访问 token(Worker secret / KV),请妥善保管面板登录密码、API Token 与平台 token,定期轮换;请勿将任何 token 提交到公开仓库。
  • 国内网络:*.workers.dev(-dev 后缀)域名国内不可直连,请绑定自有域名或使用特殊网络环境,相关网络合规责任由使用者自行承担。
  • 各平台(GitHub / Gitee / GitLab / Cloudflare)的服务条款以各平台官方为准,请合规使用。

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages