Skip to content

設定リファレンス ​

Takosumi の endpoint を動かす側が設定する環境変数の一覧です。Cloudflare 構成では [vars] と wrangler secret put、Bun と PostgreSQL の構成ではプロセスの環境変数として 渡します。導入の手順は自分で動かすにあります。

秘密の値は「必須」欄に秘密と書いてあります。これらは設定ファイルに書かず、 secret ストアから渡してください。

サービス全体 ​

変数必須既定値決めること
TAKOSUMI_ENVIRONMENT任意locallocal / development / test / staging / production のどれか。staging と production では暗号鍵と永続ストアの検査が fail-closed になります。NODE_ENV、ENVIRONMENT も同じ順で読みます
TAKOSUMI_DEV_MODE任意未設定1 / true / yes / on / enabled のどれかにすると、非本番で暗号鍵を設定しないまま起動できます。staging と production では効きません
PORT任意8788bun core/index.ts で起動したときの待ち受けポート
TAKOSUMI_DATABASE_URLbun core/index.ts で control plane を単体で動かすとき必須なしcontrol plane の PostgreSQL 接続先。DATABASE_URL も同じ用途で読みます。同梱の Docker Compose 定義は control plane と accounts を 1 つの接続で動かすので、そちらでは TAKOSUMI_ACCOUNTS_DATABASE_URL だけを設定します
TAKOSUMI_DB_AUTO_MIGRATE任意falsebun core/index.ts の起動時にマイグレーションを適用するか。既定では適用せず、読み取りだけで検証します。staging と production で true にすると起動が失敗します
TAKOSUMI_DEPLOY_CONTROL_TOKEN実運用では必須・秘密なしoperator 専用 API の bearer。CLI と operator client が使います。旧 Resource/Form /v1 surface には作用しません
TAKOSUMI_METRICS_SCRAPE_TOKEN任意・秘密なし/metrics を読むための bearer。未設定のあいだ /metrics は 404 を返します
bash
export TAKOSUMI_ENVIRONMENT=production
export TAKOSUMI_DATABASE_URL="postgres://takosumi:<password>@db.example.com:5432/takosumi"
export TAKOSUMI_DEPLOY_CONTROL_TOKEN="$(openssl rand -hex 32)"

秘密の保護 ​

変数必須既定値決めること
TAKOSUMI_SECRET_STORE_PASSPHRASEstaging / production で必須・秘密なしProviderConnection、state、plan を封印する AES-GCM 鍵のもと。UTF-8 で 32 バイト以上が必要です。TAKOSUMI_SECRET_STORE_KEY も同じ用途で読みます
TAKOSUMI_SECRET_STORE_PARTITION_PASSPHRASES任意・秘密なし区画ごとに別の鍵を使う場合の 区画名 → passphrase の JSON。省略すると全区画が上の鍵から導出されます
TAKOSUMI_DATABASE_ENCRYPTION_AT_RESTbun core/index.ts を staging / production で使うとき必須なし保存時暗号化を確認済みとして宣言します。値は verified だけです
TAKOSUMI_DATABASE_ENCRYPTION_EVIDENCE任意operator-attested何をもって確認したかを書いた非 secret の文字列
bash
export TAKOSUMI_SECRET_STORE_PASSPHRASE="$(openssl rand -base64 48)"
export TAKOSUMI_DATABASE_ENCRYPTION_AT_REST=verified
export TAKOSUMI_DATABASE_ENCRYPTION_EVIDENCE="rds-storage-encrypted-kms-key-abc123"

保存時暗号化は、接続文字列の形から推測することなく、宣言された証跡だけで判断します。 bun core/index.ts で起動する control plane は、staging と production でこの宣言を 求めます。storage adapter 側の証跡があれば、そちらでも通ります。

サインインと OIDC ​

accounts は OIDC の issuer そのものです。ここで決めた issuer が、dashboard と、 Takosumi にサインインする製品の入口になります。

変数必須既定値決めること
TAKOSUMI_ACCOUNTS_ISSUERCloudflare 構成では必須PostgreSQL 構成では http://localhost:<port>公開する issuer URL。Cloudflare 構成はリクエスト URL から推測せず、未設定なら起動しません
TAKOSUMI_ACCOUNTS_DATABASE_URLPostgreSQL 構成で必須なしaccounts の PostgreSQL 接続先。takosumi accounts migrate もこれを読みます
TAKOSUMI_ACCOUNTS_ES256_PRIVATE_JWKhttps の issuer で必須・秘密なしid_token に署名する P-256 の JWK。秘密の d を含みます。未設定だとプロセスごとに鍵が変わり、再起動やレプリカ追加で検証が壊れます
TAKOSUMI_ACCOUNTS_ES256_KEY_ID任意JWK の kidJWKS に載せる鍵 ID。JWK に kid も無い場合は配布ごとの固定値になります
TAKOSUMI_ACCOUNTS_ES256_PREVIOUS_PUBLIC_JWKS任意なし鍵の入れ替え中に併記する 1 つ前の公開鍵 JWKS。秘密の d は入れません
TAKOSUMI_ACCOUNTS_OIDC_PAIRWISE_SUBJECT_SECRET署名鍵を設定したとき必須・秘密なしclient ごとの subject を導出する secret。署名鍵だけ設定して省くと起動しません
TAKOSUMI_ACCOUNT_SESSION_HASH_SALT必須・秘密なしセッション ID を保存時にハッシュする salt。Cloudflare では未設定だと起動せず、Bun では NODE_ENV=production または TAKOSUMI_ENV=production のときに起動しません
TAKOSUMI_ACCOUNTS_CLIENTS任意なし静的に登録する OIDC client の JSON 配列。clientId と redirectUris が必須で、tokenEndpointAuthMethod と allowedScopes を添えられます
TAKOSUMI_ACCOUNTS_CLIENT_ID / TAKOSUMI_ACCOUNTS_REDIRECT_URIS任意なしclient を 1 つだけ登録する短い書き方。両方そろえて設定します
TAKOSUMI_ACCOUNTS_CLIENT_SECRET任意・秘密なし上の client を機密 client にする場合の secret。PKCE だけの公開 client では空にします
TAKOSUMI_ACCOUNTS_CLIENT_AUTH_METHOD任意secret があれば client_secret_post、無ければ noneclient_secret_basic / client_secret_post / none のどれか
TAKOSUMI_ACCOUNTS_ALLOWED_SCOPES任意なし上の client に許す scope のカンマ区切り
TAKOSUMI_ACCOUNTS_UPSTREAM_PROVIDERS任意なし上流の OAuth / OIDC provider の記述子の JSON 配列。endpoint と client id と secret の変数名を書きます
TAKOSUMI_ACCOUNTS_SUBJECT_SECRET上流 provider を設定したとき必須・秘密なし上流の subject を Takosumi の subject に写すときのハッシュ secret
TAKOSUMI_ACCOUNTS_UPSTREAM_SESSION_TTL_MS任意なし上流サインインで作るセッションの寿命 (ミリ秒)。上流 provider と一緒に設定します
TAKOSUMI_ACCOUNTS_PASSKEY_RP_ID / TAKOSUMI_ACCOUNTS_PASSKEY_RP_NAME / TAKOSUMI_ACCOUNTS_PASSKEY_ORIGIN任意なしpasskey を使う場合の relying party。3 つそろえないと起動しません。PostgreSQL 構成は origin を TAKOSUMI_ACCOUNTS_PASSKEY_RP_ORIGIN からも読みます
TAKOSUMI_ACCOUNTS_PRIVACY_OPERATIONS_TOKEN任意・秘密なしプライバシー要求の完了を記録する operator token

client の登録は次の形です。

bash
export TAKOSUMI_ACCOUNTS_CLIENTS='[{"clientId":"takosumi-dashboard","redirectUris":["https://takosumi.example.com/sign-in/callback"],"tokenEndpointAuthMethod":"none"}]'

上流の provider は、記述子と secret を分けて渡します。記述子に secret の値そのものを 書くと起動しません。

bash
export TAKOSUMI_ACCOUNTS_UPSTREAM_PROVIDERS='[{"providerId":"company-sso","label":"Company SSO","issuer":"https://id.example.com","authorizationEndpoint":"https://id.example.com/oauth/authorize","tokenEndpoint":"https://id.example.com/oauth/token","userInfoEndpoint":"https://id.example.com/oauth/userinfo","clientId":"accounts-client","clientSecretEnv":"COMPANY_SSO_CLIENT_SECRET","redirectUri":"https://takosumi.example.com/sign-in/callback","scopes":["openid","profile","email"]}]'
export COMPANY_SSO_CLIENT_SECRET="<upstream client secret>"

providerId は表示と識別のための名前で、挙動は選びません。何個でも並べられます。

廃止済みの Resource/Form HTTP surface ​

Takosumi OSS が対応するのは Git/OpenTofu/Terraform の Stack flow の 1 つだけです。 以前の Resource Shape、Form Host、Form Registry、FormActivation、TargetPool、 SpacePolicy の /v1 route と CLI domain は廃止済みで、有効化する flag も ありません。常に 404 を返し、capabilities/OpenAPI にも出ず、bearer、 database、残っている行で復活させることもできません。

現在の Takosumi は、Resource Shape、TargetPool、その他の廃止済み Host record 向けの型付き Host migration 操作や設定を公開していません。PostgreSQL migration v110 と D1 migration v66 は、対象の table がすべて空のときだけ 物理的に drop します。行が残っていれば forward migration はそこで止まります。 影響を受ける operator は、直前の release か外部の database ツールでその行を 棚卸しして export し、どう処置するかを明示的に記録したうえで、その処置に 従って廃止済み table を空にしてから migration を再試行してください。portable Takoform protocol は外部 Host の contract であり、互換 alias や migration surface ではありません。新しい利用者は Stack と ProviderConnection / CredentialRecipe / ProviderBinding の経路で通常の provider を設定します。

Run と runner ​

変数必須既定値決めること
TAKOSUMI_ENABLED_RUNNER_PROFILES任意opentofu-default有効にする実行プロファイルの ID をカンマ区切りで。空にすると既定の 1 つだけになります
TAKOSUMI_DEFAULT_RUNNER_PROFILE_ID任意opentofu-defaultプロファイルを指定しない要求が使うプロファイル。上で有効にしたものに限ります
TAKOSUMI_OPENTOFU_PLUGIN_CACHE_DIR任意runner コンテナでは /tmp/takosumi-provider-cacheprovider のバイナリを置いて Run 間で使い回すパス。認証情報、生成した root、plan、state はここに入りません
TAKOSUMI_SOURCE_BUILD_CACHE_DIR任意なしsourceBuild を走らせるときの依存パッケージのキャッシュ置き場。絶対パスで書きます。この下の bun / npm / xdg を Bun と npm に渡します
TAKOSUMI_RUNNER_KEEPALIVE_SECONDS任意0legacy の activity-expiry grace。完了した non-indeterminate Run は値にかかわらず container を明示破棄し、Run-scoped container を次の Run へ使い回しません。互換入力として残しており、新規設定は 0 にします
TAKOSUMI_SOURCE_ARCHIVE_ZSTD_LEVEL任意3SourceSnapshot を固める zstd の圧縮レベル。1 から 19 まで。低いほど書庫は大きく、初回の取り込みは速くなります
TAKOSUMI_SCHEDULED_SOURCE_POLL_BATCH任意5定期ポーリング 1 回で拾う自動同期 Source の上限
TAKOSUMI_COMPATIBILITY_CHECK_TIMEOUT_MS任意45000互換チェックのソース展開をリクエスト経路で待つ上限 (ミリ秒)

TAKOSUMI_OPENTOFU_PLUGIN_CACHE_DIR を空にすると、runner は Run ごとの作業領域に provider を展開します。共有しない代わりに、Run のあいだの取り違えが起きません。

bash
export TAKOSUMI_ENABLED_RUNNER_PROFILES="opentofu-default"
export TAKOSUMI_OPENTOFU_PLUGIN_CACHE_DIR="/tmp/takosumi-provider-cache"

Form Package の設定 (外部 Host のみ) ​

Takosumi OSS は Form Package を install も host もしません。Form Host を所有する hosted service や operator の構成が、その Host 固有の trust policy と artifact binding を Host の runbook に記録することがあります。それらの設定は Takosumi OSS が対応する deploy 経路ではなく、FormActivation や Offering を作りません。

Cloudflare 構成で使うもの ​

変数必須既定値決めること
TAKOSUMI_CONTROL_D1_SCHEMA_MODE任意bootstrapbootstrap はリクエスト時にスキーマを用意します。predeployed はそれを止め、マイグレーションの記録が揃っていることを読み取り専用で確かめます
TAKOSUMI_PRODUCTION_HARDENING_GATE任意observeobserve は不足を報告するだけです。enforce は証跡が欠けているあいだ内部の点検 endpoint が 503 を返します
TAKOSUMI_PLATFORM_HARDENING_EVIDENCEenforce のとき必須なし上の点検に答える非 secret の JSON
TAKOSUMI_RELEASE_ACTIVATOR_URL任意なしapply の後にアプリ公開を引き受ける webhook の URL
TAKOSUMI_RELEASE_ACTIVATOR_TOKEN上を設定したとき必須・秘密なしその webhook に渡す bearer
TAKOSUMI_RELEASE_SOURCE_BUCKET任意なしwebhook に渡す SourceSnapshot の bucket 名

これらは wrangler.toml の [vars] に書くか、secret として押し込みます。

bash
bunx wrangler secret put TAKOSUMI_RELEASE_ACTIVATOR_TOKEN \
  --config deploy/platform/wrangler.toml

PostgreSQL 構成で使うもの ​

変数必須既定値決めること
TAKOSUMI_ACCOUNTS_PUBLIC_HOSTNAMECaddy を使う場合は必須app.example.com利用者が叩く公開ホスト名。Caddy はこの名前で ACME の証明書を取ります
TAKOSUMI_ACCOUNTS_BIND_HOST任意0.0.0.0コンテナの中で待ち受けるアドレス
TAKOSUMI_ACCOUNTS_PORT任意8787待ち受けるポート。PORT を設定するとそちらが優先されます
TAKOSUMI_ACCOUNTS_STATIC_DIR任意リポジトリ内の dashboard ビルドdashboard の配布物を置いた場所
TAKOSUMI_ACCOUNTS_PG_POOL_MAX任意20接続プールの上限
TAKOSUMI_ACCOUNTS_PG_IDLE_TIMEOUT_MS任意30000遊んでいる接続を切るまでの時間
TAKOSUMI_ACCOUNTS_PG_CONNECT_TIMEOUT_MS任意5000接続の確立を待つ時間
TAKOSUMI_ACCOUNTS_PG_STATEMENT_TIMEOUT_MS任意300001 文を待つ時間
TAKOSUMI_ACCOUNTS_PG_SSL_MODE任意disabledisable / require / verify-ca / verify-full
TAKOSUMI_ACCOUNTS_PG_SSL_ROOT_CERTverify-ca / verify-full で必須なしPEM の CA バンドル
POSTGRES_PASSWORDDocker Compose を使う場合は必須・秘密なし同梱の Docker Compose 定義が PostgreSQL に設定するパスワード

同梱の Docker Compose 定義は deploy/node-postgres/.env からこれらを読みます。

bash
cat >> deploy/node-postgres/.env <<'ENV'
TAKOSUMI_ACCOUNTS_PUBLIC_HOSTNAME=takosumi.example.com
TAKOSUMI_ACCOUNTS_PG_SSL_MODE=require
ENV

CLI が読むもの ​

変数必須既定値決めること
TAKOSUMI_DEPLOY_CONTROL_URL--url を省くとき必須なしCLI が話しかける Takosumi の origin
TAKOSUMI_DEPLOY_CONTROL_TOKEN--token を省くとき必須・秘密なしその origin に渡す bearer
TAKOSUMI_ACCOUNTS_URL--accounts-url を省くとき必須なしtakosumi accounts tokens が話しかける accounts の URL
TAKOSUMI_ACCOUNTS_DATABASE_URL--database-url を省くとき必須なしtakosumi accounts migrate の接続先
TAKOSUMI_LANG任意LANG などから判定ja で始まる値にすると CLI のヘルプが日本語になります。TAKOSUMI_LOCALE も読みます
bash
export TAKOSUMI_DEPLOY_CONTROL_URL=https://takosumi.example.com
export TAKOSUMI_DEPLOY_CONTROL_TOKEN="$(cat ~/.config/takosumi/token)"
takosumi connections list

関連 ​

AGPL-3.0-only