Skip to content

環境変数一覧

変数名の一覧は .env.example にあります。値は .env.local に設定します。

秘密情報の扱い

.env.local はコミットされません(.gitignore.env* を除外)。値をIssue、Pull Request、チャット、コマンドの実行結果へ貼り付けないでください。

一覧

変数用途公開可否
SESSION_PASSWORDセッション暗号化。32文字以上が必須非公開
SIWE_ALLOWED_DOMAINSSIWE署名を受け付けるドメイン(カンマ区切り)公開可・既定値あり
SUPABASE_URLSupabaseの接続先環境による
SUPABASE_SERVICE_ROLE_KEYサーバー側Repositoryの接続非公開
ADMIN_ADDRESSES管理画面を使えるウォレット(カンマ区切り)アドレス自体は公開情報だが環境変数で管理
NEXT_PUBLIC_HENKAKU_TOKEN_ADDRESSPolygon上のHENKAKUコントラクト公開可・既定値あり
NEXT_PUBLIC_HENKAKU_TOKEN_SYMBOLトークン表示名公開可・既定値あり
NEXT_PUBLIC_HENKAKU_TOKEN_DECIMALSトークン小数桁公開可・既定値あり
NEXT_PUBLIC_HENKAKU_TOKEN_LOGO_URLウォレット表示用ロゴ公開可・既定値あり
SAKURA_AI_API_KEYAI Engineスパイク用キー非公開・現在は本番未使用
SAKURA_AI_BASE_URLAI EngineのベースURL環境変数で管理

NEXT_PUBLIC_ で始まる変数はブラウザへ送られます。 秘密情報をこの接頭辞で定義しないでください。

設定のしかた

SESSION_PASSWORD

32文字以上のランダムな文字列を生成します。

bash
openssl rand -base64 32

未設定または32文字未満の場合、SESSION_PASSWORD must be at least 32 characters が発生します。

この値を変更すると、既存のセッションはすべて無効になります。 セッションはこの値で暗号化されたCookieに入っているため、鍵が変わると復号できなくなり、サインイン済みのメンバー全員が再度ウォレットで署名し直すことになります。本番稼働後に変更する場合は、影響を承知したうえで行ってください。

SIWE_ALLOWED_DOMAINS

SIWEの署名メッセージに書かれた domain が、このリストに含まれるときだけサインインを受け付けます。ブラウザが送る Host ヘッダーではなくこの設定値と比較するため、別のサイト向けに作られた署名を受け付けません。

SIWE_ALLOWED_DOMAINS=localhost:3000

.env.examplelocalhost:3000 が入っているので、通常のローカル開発では変更不要です。

  • ポートを含めて書きます(ブラウザの location.host と同じ形式です)
  • カンマ区切りで複数指定できます。大文字小文字は区別されません
  • 未設定だとサインインは必ず失敗しますdomain not configured)。設定漏れが「誰でも通る」側に倒れないようにするためです

npm run dev -- --port 3001 のように別のポートで動かす場合は、そのポートを含む値へ変更してください。

SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY

ローカル開発では npx supabase status の出力から設定します。

supabase status の項目設定先
API_URLSUPABASE_URL
SERVICE_ROLE_KEYSUPABASE_SERVICE_ROLE_KEY

ADMIN_ADDRESSES

/admin を開けるウォレットアドレスをカンマ区切りで指定します。大文字小文字は区別されません(内部で正規化されます)。

ADMIN_ADDRESSES=0xaaa...,0xbbb...

変更後は開発サーバーまたはデプロイの再起動が必要です。 環境変数はプロセス起動時に読み込まれるためです。

ADMIN_ADDRESSES は管理画面へのアクセス制御にだけ使われ、トークンの配布権限を与えるものではありません。

NEXT_PUBLIC_HENKAKU_TOKEN_*

Polygon上のHENKAKUトークンの情報です。4つとも公開情報のため .env.example に開発用の既定値が入っており、通常は変更不要です。

変数既定値
NEXT_PUBLIC_HENKAKU_TOKEN_ADDRESS0x0cc91a5FFC2E9370eC565Ab42ECE33bbC08C11a2
NEXT_PUBLIC_HENKAKU_TOKEN_SYMBOLHENKAKU
NEXT_PUBLIC_HENKAKU_TOKEN_DECIMALS18
NEXT_PUBLIC_HENKAKU_TOKEN_LOGO_URLhttps://raw.githubusercontent.com/henkaku-center/omise-interface/main/public/henkakuToken.png

ADDRESS が未設定だと /setup に「HENKAKU トークン設定がありません」と表示されます。

/setup はこれらを wallet_watchAsset でウォレットへ渡します。誤ったアドレスを設定すると、利用者が意図しないトークンを自分のウォレットへ追加してしまいます。 値を変える場合は根拠を決定事項ログへ記録してください。

SYMBOLDECIMALS は未設定でも HENKAKU / 18 が既定値として使われます(lib/henkakuToken.ts)。LOGO_URL は任意で、未設定ならウォレット側の既定表示になります。

SAKURA_AI_API_KEY / SAKURA_AI_BASE_URL

さくらのAI Engineの検証(フェーズ0のスパイク)で使ったものです。現在アプリの本番機能では使っていません。AIの導入はフェーズ3の予定です。

テスト実行時の扱い

Vitestは .env.local を自動で読み込みます(vitest.config.ts)。すでにシェルで設定されている環境変数は上書きしないため、CIなどで環境変数を直接渡す方法も使えます。.env.local がない環境では何もしません。

関連

秘密情報(SESSION_PASSWORD、Supabaseキー、Safeの認証情報)はドキュメント・Issue・ログへ貼らないでください。