0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SupabaseにGitHub Actionsを使って無料枠を維持

Last updated at Posted at 2025-12-06

SupabaseにGitHub Actionsを使って無料枠を維持するテクニック

Supabaseの無料プラン(Free Tier)は非常に強力ですが、個人開発や趣味のプロジェクトで使っていると、「7日間アクセスがないとプロジェクトが一時停止(Pause)される」という仕様に悩まされることがあります。

この記事では、GitHub Actionsを利用して定期的にSupabaseを「起こす(Wake up / Keep alive)」ことで、この自動停止を回避するテクニックを紹介します。

なぜ停止するのか?

Supabaseの無料枠では、リソース節約のために、APIリクエストやダッシュボード操作が1週間ないプロジェクトはスリープ状態になります。再開は可能ですが、コールドスタートにより初回アクセスが遅れたり、手動での再開操作が必要になったりと手間がかかります。

解決策:GitHub Actionsで定期アクセス

「angra」等のリポジトリで公開されているツールの正体は、GitHub Actionsのスケジュール実行機能(cron)です。これを使って、毎日(あるいは数日に1回)、自動的にSupabaseへアクセスを飛ばし、「アクティブな状態」を偽装(維持)します。

仕組みの概要

  1. GitHub Actions がスケジュール通りに起動。
  2. スクリプトが SupabaseのAPI を叩く(Ping送信)。
  3. Supabase側が「アクセスがあった」と認識し、7日間のカウントダウンをリセットする。

実装手順

1. ワークフローファイルの作成

リポジトリの .github/workflows/ ディレクトリに、YAMLファイル(例: keep_alive.yml)を作成します。

name: Supabase Keep Alive

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

jobs:
  ping-supabase:
    runs-on: ubuntu-latest
    steps:
      - name: Ping Supabase Database
        env:
          SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
          SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
        run: |
          curl -X GET "$SUPABASE_URL/rest/v1/users?select=*&limit=1" \
          -H "apikey: $SUPABASE_KEY" \
          -H "Authorization: Bearer $SUPABASE_KEY"

2. 頻度(ペース)の設定方法

この仕組みの肝は cron の設定です。YAMLファイル内の cron: '...' を書き換えることで、好きな頻度に変更できます。

設定値 実行頻度 備考
'0 0 * * *' 毎日 午前0時 (UTC) 最も一般的
'0 0 */3 * *' 3日に1回 アクセス過多を避けたい場合
'0 9 * * 1' 毎週月曜 午前9時 (UTC) ギリギリを攻める設定

Supabaseの制限は「7日間」なので、毎日〜3日に1回程度動かしておけば安全です。

3. 環境変数の設定(より高度なアクセスをする場合)

単純なURLアクセスだけでなく、実際にDBの中身をクエリして確実に維持したい場合は、GitHubのリポジトリ設定(Settings > Secrets and variables > Actions)に以下を登録し、スクリプトから利用します。

  • SUPABASE_URL
  • SUPABASE_KEY (Anon keyなど)

注意点とマナー

このテクニックは技術的に可能ですが、Supabaseのサーバーリソースを消費することに変わりありません。

  • 頻度を上げすぎない: 1時間に1回など、無意味に高い頻度にするのは避けましょう。1日1回で十分です。
  • 長期放置なら停止も検討: 本当に長期間使わないプロジェクトであれば、素直にPauseさせておくのも、素晴らしいサービスを提供してくれているSupabaseへのマナーです。

まとめ

  • Supabaseの自動停止は GitHub Actions (cron) で回避できる。
  • 仕組みは単なる定期的なAPIアクセス。
  • .github/workflows 内のファイルを編集すれば、頻度は自由に設定可能
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?