One Server

ドキュメント

環境変数

デプロイしたアプリに 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_ のように、フレームワークがブラウザのコードに入れる名前は、ビルド結果にそのまま入り、誰でも見られます。 シークレットキーにはこうした名前を使わないでください。