環境変数
デプロイしたアプリに API キーなどの値を渡す方法、いつ反映されるか、使えない名前。
環境変数
デプロイしたアプリがビルドされ実行されるときに process.env で受け取る値です。API キーや外部サービスのアドレスなど、
リポジトリに入れてはいけない値をここに置きます。
list_env_vars 今ある変数。機密の値は末尾4文字だけ
set_env_vars 1つ以上を保存。variables または dotenv(.env の内容をまるごと)
remove_env_var 1か所(production または preview)から削除どこに適用されるか
targets で選びます。production は本番ブランチのデプロイ、preview はそれ以外のすべてのブランチです。
同じ名前で、それぞれに別の値を置けます。プレビューにはテスト用のキー、本番には本物のキーを。
production の値は、オーナーと管理者だけが変更できます。
いつ反映されるか
変更した値は次のデプロイからビルドに使われます。すでにビルドされた結果に埋め込まれた値は変わりません。 サーバーとして動くアプリは、次に起動したときに新しい値を受け取ります。
使えない名前
PORT、HOST、HOSTNAME、HOME と、BLACKWALL_ で始まる名前はプラットフォームが使います。ビルドには CI=1 が入りますが、CI を自分で設定すると(例: CI=false)その値を使います。
プラットフォームが入れる値:
BLACKWALL_ENV production または preview
BLACKWALL_URL このデプロイが配信されるアドレス(ホスト名)
BLACKWALL_GIT_COMMIT_SHA ビルドしたコミット
BLACKWALL_GIT_BRANCH ビルドしたブランチ自動で入る変数
保存しなくても、このプロジェクトのアドレスとキーがSupabaseと同じ名前で入ります(list_env_varsのautomatic、コンソールの環境変数画面、oneend env ls)。入る場所(available_in)は変数ごとに違います。
入る場所
SUPABASE_URL, NEXT_PUBLIC_SUPABASE_URL ビルドと実行時 https://<ref>.<zone>
SUPABASE_ANON_KEY, NEXT_PUBLIC_SUPABASE_ANON_KEY,
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY ビルドと実行時 公開キー(アクセスルールに従う)
SUPABASE_SERVICE_ROLE_KEY 実行時のみ シークレットキー(アクセスルールを無視、サーバーのコードでだけ)
DATABASE_URL, POSTGRES_URL 本番の実行時のみ プーラー 6543(パスワードを保管しているときだけ)
DIRECT_URL 本番の実行時のみ 直接 5432(パスワードを保管しているときだけ)実行時とはサーバー・ミドルウェア・関数です。サービスロールキーはビルド(インストール・ビルドコマンド、依存パッケージのスクリプトが動く場所)には入りません。
同じ名前で保存すると保存した値を使い、保存した値はビルドにも入ります。データベースブランチがあるgitブランチのプレビューにはブランチの値が入ります。
DATABASE_URL・POSTGRES_URL・DIRECT_URLは、reset_database_password { ref, keep_for_deploys: true }(コンソール: データベース接続 → 新しいパスワードを作成 →「本番デプロイに渡す」)で作ったパスワードを保管しているあいだだけ、本番のサーバー・ミドルウェア・関数に入ります(ビルドとプレビューには入りません)。シークレットキーと同じく、すべての行を読める接続です。keep_for_deploysなしで作り直すと渡さなくなります。
oneend env pullは公開の値だけを.env.localに書きます。ViteアプリはVITE_SUPABASE_URLのように接頭辞が違う名前を読むので、自分で保存してください。
機密の値
sensitive: true で保存すると、その後は値を読み戻せません。シークレットキーに使ってください。
sensitive を指定しないと、名前に SECRET、TOKEN、PASSWORD、PRIVATE、DSN、DATABASE_URL、KEY_ を含むか _KEY で終わる変数は機密の値として保存します(応答の sensitive_keys)。読める状態にしておくには sensitive: false を指定してください。
機密でない値もすべて暗号化して保存します。違いは、もう一度表示するかどうかだけです。
ブラウザに届く値
NEXT_PUBLIC_ や VITE_ のように、フレームワークがブラウザのコードに入れる名前は、ビルド結果にそのまま入り、誰でも見られます。
シークレットキーにはこうした名前を使わないでください。