Supabaseのローカル環境を構築する + Google OAuthでログイン(2023/01)
ログイン
supabase login
アクセストークンの入力を求められる。
SupabaseダッシュボードのOrgページ(プロジェクト内ではない)の左メニューにAccess Token
がある
supabase start
するとdockerが走ってない旨のエラーが出たのでインストールして実行してから再度
$ supabase start
Error: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
$ supabase start
15.1.0.21: Pulling from supabase/postgres
4b7f5b2a3113: Pull complete
8b00aed68edc: Pull complete
...
...
...
Started supabase local development setup.
API URL: http://localhost:54321
DB URL: postgresql://postgres:postgres@localhost:54322/postgres
Studio URL: http://localhost:54323
Inbucket URL: http://localhost:54324
JWT secret: super-secret-jwt-token-with-at-least-32-characters-long
anon key: ...
service_role key: ...
Dockerは正直なところ雰囲気で使っている・・・。
リモートDBを先に構成していたのでそれとリンク
supabase link --project-ref [project-id]
プロジェクトIDはProject Settings
->General settings
-> Reference ID
コマンドを実行するとパスワードを聞かれる。
Database Settings
-> Connection info
に欄があるが、[The password you provided when you created this project]
とのこと。
しるかー!と思ったがパスワードマネージャに残っていたのでセーフ。。
リモートのスキーマをローカルに反映
supabase db remote commit
supabase db reset
スキーマという言葉は雰囲気で使っている。。
supabase start
した際に出力されたStudio URL(http://localhost:54323/
)にアクセスするとウェブのダッシュボードのようなものが現れる
プロジェクトで使う値を更新する
多分毎回固定?
NEXT_PUBLIC_SUPABASE_URL="http://localhost:54321"
NEXT_PUBLIC_SUPABASE_REDIRECT_URL="http://localhost:54321/auth/v1/callback"
NEXT_PUBLIC_SUPABASE_ANON_KEY="..."
Google Authを使っているのでその設定
...
...
[auth.external.google]
enabled = true
client_id = "..."
secret = "..."
# Overrides the default auth redirectUrl.
redirect_uri = ""
# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
# or any other third-party OIDC providers.
url = ""
supabaseを再起動
supabase stop
supabase start
GCPのコンソールで「承認済みのリダイレクト URI」を追加
http://localhost:54321/auth/v1/callback
注: 設定が有効になるまで 5 分から数時間かかることがあります
5分程度待ってから確認すると動いた
次回以降はDocker Desktopを起動すれば勝手にsupabaseも走ってくれているよう
ローカルのsupabaseのschemeの変更をリモートに適用する方法
-
supabase db diff -f [migration_name]
でローカルの変更を新しいmigrationファイルに書き込み
[migration_name]
はコミットメッセージだと思えば良さそう -
supabase db reset
でローカルに反映(不要かも?) -
supabase db push
でリモートに反映