GitHub Pages部署工具

gg-deploy是一个自动化部署工具,能够快速将域名配置到GitHub Pages,支持CLI、桌面应用、Web UI和AI助手集成。

  • by abe238
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 abe238/gg-deploy

使用说明

gg部署

免费托管值得免费工具。领域→ GitHub页面在60秒内。

gg部署是我的最新成果:域名部署自动化,在周末构建,开源,永远免费。它不会拯救世界,但可能会为您节省一个小时的DNS配置。

一个命令。单击一下。一个提示。 通过CLI、桌面应用程序、web UI或AI助手(MCP)工作。

快速开始

npx gg-deploy ui
# Opens http://localhost:3847

或者通过CLI:

npx gg-deploy plan example.com user/repo    # Preview (safe)
npx gg-deploy apply example.com user/repo   # Deploy
npx gg-deploy status example.com user/repo  # Health check

我为什么建造这个

GitHub Pages是免费的。域名注册很便宜。但连接它们?这仍然是15分钟的DNS谷歌搜索、A记录猜测和“我再次破坏了我的电子邮件转发吗?”焦虑。

我希望部署速度与托管免费(用于公共存储库)一样快。所以我在周末建立了gg部署;高级用户的CLI、其他人的web UI、AI代理的MCP和桌面应用程序,因为为什么不呢。

AGPL许可 因为好的工具应该是免费的。

截图

命令行界面

桌面应用程序

Web用户界面

桌面应用程序

下载自 GitHub发布:

  • macOS: .dmg (苹果硅或英特尔)
  • 视窗: .msi 安装程序
  • Linux: .AppImage 或 .deb

macOS首次运行

该应用程序未使用Apple证书签名。首次发射时:

选项1:右键单击方法

  1. 在GG Deploy上单击鼠标右键(或Control+单击)
  2. 从菜单中单击“打开”
  3. 在对话框中单击“打开”

选项2:终端(一个命令)

xattr -cr "/Applications/GG Deploy.app"

这是一个一次性步骤——之后应用程序会正常运行。

Windows首次运行

点击 更多信息 → 无论如何都要跑 在SmartScreen提示下。

Linux

制作可执行文件并运行:

chmod +x GG.Deploy_*.AppImage
./GG.Deploy_*.AppImage

需求

  • Node.js 18+ --查看 node --version
  • DNS提供商帐户 --GoDaddy、Cloudflare或Namecheap
  • GitHub账号 使用个人访问令牌
  • 领域 由您的DNS提供商管理
  • GitHub仓库 与您的网站内容(index.html或构建的网站)

提供商比较

提供程序 易于安装 API访问 注释
云耀 简单 对所有人免费 推荐给新用户
GoDaddy 中等 需要10+个域名 需要生产密钥
Namecheap:名便宜 中等 需要IP白名单 必须将您的IP列入白名单

设置

凭据保存一次到 ~/.gg-deploy/config.json 并在所有项目中工作。

选项1:Web UI(推荐)

npx gg-deploy ui

安装向导将引导您完成以下操作:

  1. 创建GoDaddy API密钥
  2. 创建GitHub令牌
  3. 测试和保存凭据

选项2:手动配置

创建 ~/.gg-deploy/config.json 使用您首选的DNS提供商:

Cloudflare(推荐):

{
  "dnsProvider": "cloudflare",
  "cloudflare": {
    "apiToken": "YOUR_CLOUDFLARE_TOKEN"
  },
  "github": {
    "token": "ghp_YOUR_TOKEN"
  }
}

爸爸:

{
  "dnsProvider": "godaddy",
  "godaddy": {
    "apiKey": "YOUR_KEY",
    "apiSecret": "YOUR_SECRET",
    "environment": "production"
  },
  "github": {
    "token": "ghp_YOUR_TOKEN"
  }
}

Namecheap:

{
  "dnsProvider": "namecheap",
  "namecheap": {
    "apiUser": "YOUR_USERNAME",
    "apiKey": "YOUR_API_KEY",
    "clientIP": "YOUR_IP_ADDRESS"
  },
  "github": {
    "token": "ghp_YOUR_TOKEN"
  }
}

获取凭据

Cloudflare API代币(推荐):

  1. 首选https://dash.cloudflare.com/profile/api-tokens
  2. 点击“创建令牌”
  3. 使用“编辑区域DNS”模板
  4. 选择要管理的区域(域)
  5. 复制令牌

GoDaddy API密钥:

  1. 首选https://developer.godaddy.com/keys
  2. 单击“新建API密钥”
  3. 选择 生产 (非OTE/测试)
  4. 立即复制密钥和秘密(秘密只显示一次)
  5. 注意:需要以下帐户 10+域名

名称便宜的API:

  1. 首选https://ap.www.namecheap.com/settings/tools/apiaccess/
  2. 启用API访问
  3. 将您的IP地址列入白名单 (必填)
  4. 复制API密钥和用户名
  5. 获取您当前的IP地址: curl ifconfig.me

GitHub令牌:

  1. 首选https://github.com/settings/tokens/new?description=gg-部署范围=仓库
  2. 点击“生成令牌”
  3. 复制令牌(以开头 ghp_)

web界面

主屏幕

元素 描述
域字段 您的GoDaddy域名(例如。, example.com)
存储库字段 GitHub仓库为 username/repo
部署按钮 启动部署过程
身份徽章 显示GoDaddy/GitHub连接状态
设置档位 打开凭据管理

状态指示灯

颜色 含义
绿色(发光) 已连接并验证
黄色(脉冲) 测试连接。..
红色 错误(悬停查看详细信息)
灰色 尚未测试

将鼠标悬停在徽章上以查看详细状态。单击刷新按钮重新测试连接。

设置屏幕

  • API密钥/机密/令牌字段 --预先填充已保存的值(掩码)
  • 眼睛图标 --单击以显示复制值
  • 状态指示器 --显示实时验证状态
  • 测试按钮 -重新验证API连接
  • 更新设置 --保存更改

部署流程

  1. 输入域名和仓库
  2. 单击部署
  3. 查看实时进度:
    • 验证域所有权
    • 检查存储库访问权限
    • 配置DNS记录
    • 添加CNAME文件
    • 启用GitHub页面
    • 提供SSL证书
  4. 获取您的实时URL

CLI命令

命令 描述 安全 需要Git
plan <domain> <repo> 预览更改 是 否
apply <domain> <repo> 执行部署 否 否
status <domain> <repo> 检查健康状况 是 否
list 显示所有跟踪的部署 是 否
push [domain] [message] 上传本地文件更改 否 不
forget <domain> 从跟踪中删除 是 否
ui 启动web界面 是 否
mcp-serve 启动MCP服务器 是 否
update 检查更新 是 否
describe 输出AI友好的工具模式 是 否

添加 --output json 用于机器可读输出。

Git免费文件更新

这 push 该命令通过API将您的本地文件直接上传到GitHub-不需要任何git知识:

# From your project directory (auto-detects deployment)
gg-deploy push "Updated homepage"

# Or specify the domain explicitly
gg-deploy push myblog.com "Fixed typo in about page"

它是如何工作的:

  1. 扫描本地目录以查找更改的文件
  2. 将SHA哈希值与GitHub进行比较
  3. 仅通过GitHub Contents API上载更改的文件
  4. 大于1MB的文件使用Git Data API提高可靠性
  5. 跳过大于100MB的文件(GitHub限制)

尊重 .gitignore 和 .gg-ignore --node_modules、.env和其他模式会被自动排除。

部署跟踪

之后 apply 成功后,gg部署会记住您的部署:

# List all tracked deployments
gg-deploy list

# Output:
# ╭─ Tracked Deployments ─────────────────────────────────────╮
# │  myblog.com → user/blog                                   │
# │  └─ /Users/me/projects/myblog                             │
# │     Last activity: 2 hours ago                            │
# ╰───────────────────────────────────────────────────────────╯

要停止跟踪(不影响实时网站):

gg-deploy forget myblog.com

注: forget 仅删除本地跟踪。您的DNS记录和GitHub页面仍处于活动状态。有关清理说明,请参阅输出。

人工智能代理集成(MCP)

部署包括一个完整的MCP(模型上下文协议)服务器,使AI助手能够直接部署和管理站点。

兼容:

  • 克劳德桌面版
  • 克劳德代码
  • 光标
  • 帆板运动
  • N8N(工作流自动化)
  • 任何兼容MCP的客户端

设置

克劳德桌面/克劳德代码 --添加到配置:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "gg-deploy": {
      "command": "npx",
      "args": ["-y", "gg-deploy", "mcp-serve"]
    }
  }
}

光标/风帆 --使用相同的配置添加到MCP设置中。

N8N --使用带有以下命令的MCP节点: npx -y gg-deploy mcp-serve

可用的MCP工具

工具 描述 安全
deploy_site_plan 预览部署更改 是
deploy_site_apply 执行DNS+GitHub页面部署 否
deploy_site_status 检查部署运行状况 是
list_deployments 列出所有跟踪的部署 是
push_changes 上传本地文件更改 否

示例提示

  • “将myblog.com部署到用户/仓库”
  • “检查example.com的状态”
  • “我有什么部署?”
  • “将我的最新更改推送到博客”

人工智能发现

跑 gg-deploy describe 要获得一个全面的JSON模式,请使用:

  • 命令描述和意图
  • 输入和输出示例
  • 安全指标(安全/需要确认)
  • 推荐使用流程

故障排除

Node.js问题

问题 解决方案
node: command not found 从以下位置安装Node.jshttps://nodejs.org
unsupported engine 升级到Node.js 18+
EACCES permission denied 不要使用 sudo.修复npm权限或使用nvm

GoDaddy API问题

问题 解决方案
401 Unauthorized API密钥/机密错误。在developer.godady.com上重新生成
403 Forbidden API密钥用于OTE(测试)。创建一个 生产 钥匙
404 Not Found 域名不在您的GoDaddy帐户中
422 Invalid 域已锁定或有待处理的传输
403 Access denied 账户需求 10+域名 API。请改用Cloudflare
红色状态点 悬停表示错误。通常是身份验证问题

Cloudflare API问题

问题 解决方案
401 Unauthorized API令牌无效。在dash.cloudflare.com上重新生成
403 Forbidden 令牌没有编辑DNS权限。创建新令牌
找不到区域 域不在您的Cloudflare帐户中或区域错误
记录不适用 确保 proxied: false GitHub页面(自动处理)

名称便宜API问题

问题 解决方案
1011150 IP not whitelisted 在ap.www.namecheap.com/settings/tools/apiaccess添加您的IP
500000 Rate limited 等几分钟,API有速率限制
身份验证失败 检查apiUser和apiKey是否正确
找不到域名 域名必须在您的Namecheap帐户中处于活动状态
记录被覆盖 Namecheap API将替换所有记录。备份是自动创建的

GitHub API问题

问题 解决方案
401 Bad credentials 令牌已过期或无效。生成新的
403 Forbidden 令牌丢失 repo 范围。使用正确的范围重新生成
404 Not Found 回购不存在或令牌无法访问它
私有仓库失败 私有仓库页面需要GitHub Pro

DNS问题

问题 解决方案
站点未加载 等待10-60分钟进行DNS传播
显示错误的IP 清除DNS缓存: sudo dscacheutil -flushcache (Mac)
SSL不起作用 GitHub需要先解析DNS。检查页面设置

配置问题

问题 解决方案
“未配置” 检查 ~/.gg-deploy/config.json 存在
找不到配置 它在您的主目录中: ls -la ~/.gg-deploy/
权限被拒绝 运行 chmod 600 ~/.gg-deploy/config.json

UI问题

问题 解决方案
端口3847正在使用 清除现有端口: lsof -i :3847 然后 kill <PID>
空白页 清除浏览器缓存或尝试隐身
眼睛图标不起作用 如果保存了凭据,单击会显示值

常见修复

# Check if config exists
cat ~/.gg-deploy/config.json

# Verify Node version
node --version  # Should be 18+

# Test GoDaddy API manually
curl -H "Authorization: sso-key YOUR_KEY:YOUR_SECRET" \
  https://api.godaddy.com/v1/domains

# Test GitHub API manually
curl -H "Authorization: Bearer ghp_YOUR_TOKEN" \
  https://api.github.com/user

运作原理

  1. 域名系统 --将A记录设置为GitHub IP地址(185.199.108-111.153)+www CNAME
  2. 别名记录 --使用您的域在仓库中创建CNAME文件
  3. 页面 --在主分支上启用GitHub Pages
  4. 安全套接层 --GitHub自动提供Let’s Encrypt证书

总时间:~60秒。DNS传播:10-60分钟。

安全

  • 凭据存储在 ~/.gg-deploy/config.json (权限600)
  • 从未承诺使用git
  • 眼睛图标仅在本地显示值
  • 直接对GoDaddy/GitHub进行的API调用(无代理)

局限性

  • 支持GoDaddy、Cloudflare和Namecheap(其他提供商即将推出)
  • GoDaddy需要10个以上的域才能访问API
  • Namecheap需要IP白名单配置
  • 页面需要公共仓库或GitHub Pro
  • 仅支持www子域
  • 每个部署一个域

许可证

AGPL-3.0——免费使用、修改和分发。Forks必须保持开源。


关于建设者

你好我是 **亚伯·迪亚兹**白天,我是亚马逊救灾部的高级经理,领导着一个团队,该团队使用人工智能和物流在全球200多场灾害中交付了2600多万件救灾物资和响应技术。在周末,我构建了这样的手工开发工具:-P

其他开源项目

项目 描述
双子座深度研究 Gemini深度研究代理的CLI
aipm简历分析器 基于AI PM框架的简历分析
项目启动 脚手架AI生产就绪项目