SUPABASE

Supabase
プロジェクト作成 & キー設定

オープンソースの Firebase 代替 Supabase でバックエンドを素早く立ち上げるガイドです。 PostgreSQL・Auth・Storage・Realtime・Edge Functions を一度にセットアップします。

無料プラン

2 プロジェクト

有料移行

Pro $25/月〜

必要情報

GitHub アカウント推奨

Overview

始める前に確認してください

Supabase の無料プランは 1 週間の非アクティブでプロジェクトが一時停止されます。本番サービスは Pro プラン($25/月〜)へ移行しないと安定稼働が難しいです。Row Level Security(RLS)は必ず有効化して始めてください — 既定では無効で、すべてのデータが公開状態になります。

GitHub アカウント

Supabase は GitHub OAuth 基盤です。

リージョン選択

韓国は Tokyo(ap-northeast-1)。

RLS ポリシー設計

Row Level Security は既定で無効。

2 種類のキーの違い

anon と service_role。

Step by Step

ステップ別ガイド

01

SIGNUP

アカウント登録 & 組織作成

supabase.com に GitHub で登録します。

  • Sign in with GitHub を推奨(メールも可)
  • 組織(Organization)が自動作成 — チーム単位でプロジェクトをまとめる
  • メンバー招待は組織単位で管理
  • 無料プラン: 組織あたりプロジェクト 2 つまで
02

PROJECT

新規プロジェクト作成

データベースとリージョンを決定します。

  • New Project をクリック
  • プロジェクト名(URL スラッグとして使用)
  • Database Password を強固な値で設定し安全に保管
  • Region: Northeast Asia(Tokyo)が韓国から最速
  • Pricing Plan: Free / Pro / Team
  • プロビジョニングに 2〜3 分
03

KEYS

API キーの確認

2 種類のキーの役割を明確に理解してください。

  • Settings > API メニュー
  • Project URL: https://${id}.supabase.co
  • anon public key: フロントエンドで使用可、RLS で保護
  • service_role key: サーバー専用、RLS を回避 — 絶対に公開禁止
  • JWT Secret: カスタムトークン発行時に使用
  • .env.local に NEXT_PUBLIC_SUPABASE_URL / ANON_KEY を保存
04

AUTH

Authentication 設定

ログイン方法を有効化します。

  • Authentication > Providers メニュー
  • Email(既定で有効)、Phone、Google、Apple、Kakao など
  • 各 OAuth プロバイダーには個別設定が必要(Client ID / Secret)
  • Redirect URL: https://${id}.supabase.co/auth/v1/callback
  • Email Templates を日本語などへカスタマイズ
  • Rate Limits を確認(無料プランは時間単位で制限)
05

DATABASE

テーブル作成 & RLS ポリシー

Postgres テーブルを作成しセキュリティポリシーを設定します。

  • Table Editor で GUI 作成、または SQL Editor で DDL 実行
  • 新規テーブルは必ず Enable RLS にチェック
  • RLS ポリシー例: "auth.uid() = user_id"(本人のみ閲覧)
  • Realtime を有効化 — INSERT / UPDATE / DELETE イベントを購読
  • Foreign Key を設定(auth.users との連携を推奨)
06

STORAGE

Storage バケット設定

ファイルアップロード用のバケットを作成します。

  • Storage > New Bucket
  • Public / Private を選択
  • Public: URL で誰でもアクセス可、プロフィール画像などに最適
  • Private: 認証済みユーザーのみ、signed URL でアクセス
  • アップロード・ダウンロード権限は RLS ポリシーで制御
  • 画像変換(image transformation)は Pro プラン
07

FUNCTIONS

Edge Functions デプロイ

サーバーレス関数でカスタム API を実装します。

  • Deno ランタイムベース、TypeScript 対応
  • supabase init → supabase functions new my-func
  • supabase functions deploy my-func
  • 外部 API 呼び出し、複雑なロジック、Webhook 処理に便利
  • 環境変数は `supabase secrets set` コマンドで設定
  • 無料プラン上限: 500K invocations / 月
08

OPS

チーム招待 & バックアップ

運用で必須の設定です。

  • Organization Settings > Team からメンバーを招待
  • ロール: Owner / Developer(細かな権限は Pro 以上)
  • Database > Backups: 日次自動バックアップ
  • Free プランは 7 日保持、Pro は 30 日
  • Point-in-time Recovery は Team プラン以上
  • Postgres の自動アップグレードを無効化することを推奨

Pitfalls

詰まりやすいポイント

RLS 無効のままリリース

Row Level Security がオフだと anon キーであらゆるテーブルを読み書きできます。データ漏洩事故の最大要因です。

service_role キーをフロントに露出

service_role は RLS を回避する管理者キーです。NEXT_PUBLIC_ プレフィックスを絶対に付けないでください。

無料プランの自動一時停止

1 週間の非アクティブでプロジェクトが paused になり、API は 404 を返します。本番は Pro 必須です。

リージョンは変更不可

プロジェクト作成時にリージョンが固定されます。間違えた場合は新規プロジェクトを作って移行する必要があります。

Database Password の紛失

復旧できません。必ずパスワードマネージャーに保存してください。失うと新しいプロジェクトを作るしかありません。

登録が面倒なら 代行します

JAICYLABのプロジェクトには開発者アカウントの準備から公開・運用まで一貫して含まれます。