スーパーベースが大好き!スーパーベースが大好き! しかし、「バックアップ」が有料プランの後ろに座っているのを見た瞬間、私の脳はすべての破損した創設者の脳がやっていることをしました。 “I can build that.” 無料プランで、リアルな自動化で、サーバーなしで、午前2時に目が覚めずに、「ああ、データベースを捨てるべきだ」と覚えています。 この記事は、私がどのように設定したかを示しています。 利用 , plus all the annoying little errors you'll probably hit (so you don't have to). あなたがたは、おそらく打つことのできるすべての不快な小さなエラーを加えましょう。 automatic Supabase Postgres backups every 12 hours GitHub Actions 僕らが作っているもの たった1回のセットアップ: 12時間ごとに走る Supabase Postgres データベースに接続する .dump バックアップファイルを作成します(圧縮、適切な形式) バージョン化されたファイルとしてプライベートの GitHub repo に保存します。 No paid Supabase plan. No third-party services. No VPS. Just GitHub doing the boring work. 無償のSupabaseプランはありません。 あなたが理解すべき唯一のもの データベースのバックアップは傘のようなものです。 雨が降るまで待つと、すでに濡れている。 また、「私はそれを再生する」は、あなたがそれを再生したことがないときに自分自身に言っている嘘であり、Supabaseフリープランは基本的にブラックホールです。 ステップ0:Private Repoを作成する 創るA GitHub repository は、以下のようなものを呼び出しました。 private myapp-db バックアップ バックアップ notpayingforshiii-db-backups (If You're Me) このレポはあなたのバックアップファイルを保存します。 github repo バックアップに専念 STEP 1: 正しい Supabase 接続文字列を入力する (この部分は重要です) あなたのSupabaseプロジェクトにアクセスする: ♪ Settings → Database → Connection string さて、これがです: セッションプール(Session Pooler) あなたが無料のプランにいる場合、Supabaseはしばしば表示します: 直接接続: IPv4 互換性がない セッションポーラー: IPv4 互換性 GitHub ランナーは通常 IPv4 です。Direct を使用する場合、あなたのワークフローは失敗し、宇宙があなたを憎んでいると思われるでしょう。 セット: タグ : Session Pooler タイプ: URI あなたは、このような接続文字列を得るでしょう: postgresql://postgres.<your-project-ref>:YOUR_PASSWORD@aws-1-<region>.pooler.supabase.com:5432/postgres 重要な: [YOUR-PASSWORD] 場所保持者を Supabase パスワードに置き換え、それを覚えていない場合は、その接続のポップアップに db パスワードリセットリンクがあります。 Step 2: Add the connection string as a GitHub secret. 接続文字列をGitHub secretとして追加する GitHub レポ: Settings → Secrets and variables → Actions → New repository secret 秘密を作る: データベース:DB_URL Value: paste the full Session Pooler connection string(セッションプーラー接続文字列) 余分なスペースを追加しないでください. ニュージーラインを追加しないでください. 可愛くないでください. 秘密を追加 Step 3: GitHub Actions Workflow ファイルを追加する あなたのレポで、このファイルを作成する: .github/workflows/backup.yml GitHub はフォルダーを自動的に作成します。 今すぐこの完全なワークフローを挿入します: name: Supabase Backupon: schedule: - cron: "0 */12 * * *" workflow_dispatch:jobs: backup: runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install matching PostgreSQL client env: DATABASE_URL: ${{ secrets.SUPABASE_DB_URL }} run: | sudo apt-get update sudo apt-get install -y wget ca-certificates lsb-release postgresql-client SERVER_VERSION=$(psql "$DATABASE_URL" -tAc "SHOW server_version_num;" | cut -c1-2) echo "SERVER_VERSION=$SERVER_VERSION" >> $GITHUB_ENV wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt-get update sudo apt-get install -y postgresql-client-$SERVER_VERSION - name: Run pg_dump env: DATABASE_URL: ${{ secrets.SUPABASE_DB_URL }} run: | mkdir -p backups /usr/lib/postgresql/$SERVER_VERSION/bin/pg_dump "$DATABASE_URL" \ --format=custom \ --file=backups/supabase_$(date +%F_%H-%M).dump - name: Commit backup run: | git config user.name "supabase-backup-bot" git config user.email "backup@github.com" git add backups git commit -m "Automated Supabase backup" || echo "No changes" git pushWhat this does: Supabase DB Postgres バージョン matching pg_dump をインストールする .dump ファイルの作成 あなたのREPOに取り組む この版は : Supabase が Postgres を後でアップグレードすると、ワークフローが適応します。 future-proof Step 4: GitHub Actions を押す許可を与える やれこれ , because the backup will fail when it tries to あなたのレポに戻る。 before you run the workflow save (commit + push) the database dump これを可能にする方法はこちら: Repo → Settings → Actions → General → Workflow 許可 Select: ✅ 読書および書き込み許可 クリック . Save Step 5: Run it manually once 今、あなたが簡単に休む前に働くことを確認するためにそれをテストしてください。 あなたのレポへ: Actions → Supabase Backup → Run workflow 成功したら: 新しいフォルダが表示されます: Backups/ タイトル : supabase_2026-01-24_00-15.dump 貯蔵バケットはどうですか? このバックアップはあなたの . Postgres database それは含まない: Supabase Storage ファイル(画像、ビデオ、アップロード) Edge 機能コード ログ ストレージ バックアップも必要であれば、別々のプロセスが必要になります(S3 対応の同期またはスクリプト - これをすべて行うために拡張することができますが、私のケースではデータベースだけが必要でした)。 ボーナス:あなたのレポを永遠に成長させないでください(オプション) 無限のバックアップを積み重ねたくない場合は、古いファイルを自動的に削除することができます(例えば、最後の30を保持してください)。 最終思考 あなたは大人バックアップを持つために有料プランを必要としません。 必要なのは: GitHub レポ 1 秘密 1 ワークフロー 1 許可 toggle そして、あなたのデータベースは、あなたが眠っている間に12時間ごとにバックアップを行い、船を運び、あなたが生産の責任を持たないふりをしています。 これが役に立つと思ったら、自由に盗んでください. それが文化です。