这是一个用于保持 Supabase 项目活跃的自动化脚本,通过 GitHub Actions 定时执行,防止免费版 Supabase 项目因长期不活跃而被暂停。
- ✅ 自动定时执行(每 5 天一次)
- ✅ 多种保活方式(Storage API、Database Query、Auth API)
- ✅ 详细的执行日志
- ✅ 支持手动触发
- ✅ 使用 Bun 运行时,执行速度快
将此项目 fork 到您的 GitHub 账号下,或直接克隆到本地:
git clone https://github.com/your-username/supabase-keep-alive.git
cd supabase-keep-alive登录您的 Supabase Dashboard,找到您需要保活的项目:
- 进入项目的 Settings (设置)
- 点击 API 选项
- 复制以下两个值:
- Project URL (
NEXT_PUBLIC_SUPABASE_URL) - anon public key (
NEXT_PUBLIC_SUPABASE_ANON_KEY)
- Project URL (
在您的 GitHub 仓库中配置密钥:
-
打开仓库设置
- 进入您 fork 的仓库页面
- 点击顶部的 Settings (设置)
-
进入 Secrets 配置页面
- 在左侧菜单中找到 Secrets and variables
- 点击 Actions
-
添加第一个密钥 - Supabase URL
- 点击 New repository secret (新建仓库密钥)
- Name (名称):
NEXT_PUBLIC_SUPABASE_URL - Secret (值): 粘贴您的 Supabase Project URL
- 点击 Add secret (添加密钥)
-
添加第二个密钥 - Supabase Key
- 再次点击 New repository secret
- Name (名称):
NEXT_PUBLIC_SUPABASE_ANON_KEY - Secret (值): 粘贴您的 Supabase anon public key
- 点击 Add secret (添加密钥)
配置完成后,您应该能看到两个密钥:
- ✅
NEXT_PUBLIC_SUPABASE_URL - ✅
NEXT_PUBLIC_SUPABASE_ANON_KEY
- 进入仓库的 Actions 标签页
- 如果看到提示,点击 I understand my workflows, go ahead and enable them (我了解我的工作流,继续并启用它们)
- 在左侧找到 Keep Supabase Alive 工作流
- 点击 Enable workflow (启用工作流)
手动触发工作流以测试配置是否正确:
- 在 Actions 标签页中,点击左侧的 Keep Supabase Alive
- 点击右上角的 Run workflow (运行工作流)
- 选择分支(通常是
main或master) - 点击绿色的 Run workflow 按钮
等待几秒钟,工作流会开始执行。点击工作流运行记录可以查看详细日志。
工作流配置为 每 5 天自动运行一次,时间为 UTC 0:00(北京时间上午 8:00)。
在 .github/workflows/keep-alive.yml 中的 cron 配置:
schedule:
- cron: '0 0 */5 * *'格式解析:
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 日期 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 星期 (0 - 6) (周日到周六)
│ │ │ │ │
0 0 */5 * *
0 0= 每天的 00:00 (UTC)*/5= 每 5 天* *= 任意月份和星期
如果需要修改执行频率,编辑 .github/workflows/keep-alive.yml 文件中的 cron 表达式:
常用配置示例:
# 每 3 天一次
- cron: '0 0 */3 * *'
# 每 7 天(每周)一次
- cron: '0 0 */7 * *'
# 每 10 天一次
- cron: '0 0 */10 * *'
# 每天一次
- cron: '0 0 * * *'
# 每天两次(上午 8 点和晚上 8 点 UTC)
- cron: '0 8,20 * * *'注意: GitHub Actions 的 cron 使用 UTC 时间,需要转换到您的本地时区。
如果您想在本地测试脚本:
# Windows (PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"
# macOS / Linux
curl -fsSL https://bun.sh/install | bashbun install# Windows PowerShell
$env:NEXT_PUBLIC_SUPABASE_URL="your-supabase-url"
$env:NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
bun run keep-alive
# macOS / Linux
export NEXT_PUBLIC_SUPABASE_URL="your-supabase-url"
export NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
bun run keep-alive脚本通过三种方式与 Supabase API 交互,保持项目活跃:
- Storage API 检查 - 列出所有存储桶
- Database Query - 执行一个简单的查询操作
- Auth API 检查 - 检查认证服务状态
只要有一个操作成功,就认为保活成功。
- 进入仓库的 Actions 标签页
- 点击任意一次工作流运行记录
- 点击 keep-alive 任务
- 展开各个步骤查看详细日志
A: Supabase 免费版项目如果长期不活跃(通常超过 1 周),可能会被暂停。定期执行保活脚本可以防止这种情况。
A: 会有极少量的 API 调用,但消耗可以忽略不计。脚本每次只执行 3 个简单的 API 调用。
A: 可以!编辑 .github/workflows/keep-alive.yml 文件中的 cron 表达式即可。建议不要低于 3 天一次。
A: GitHub Actions 的 cron 任务在高峰期可能会有延迟(最多几小时)。这是正常现象,不影响保活效果。如果需要更精确的时间控制,可以考虑使用其他定时任务服务。
A: GitHub Secrets 是加密存储的,只有在工作流运行时才会解密使用,不会在日志中显示。请不要在代码中硬编码密钥。
A: 可以!您可以:
- 为每个项目创建一个单独的仓库
- 或者修改脚本支持多个项目配置(需要添加额外的 Secrets)
MIT License
欢迎提交 Issue 和 Pull Request!
注意: 请确保妥善保管您的 Supabase 密钥,不要泄露给他人或提交到公开仓库中。