Skip to content

設定リファレンス

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

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

サービス全体

変数必須既定値決めること
TAKOSUMI_ENVIRONMENT任意locallocal / development / test / staging / production のどれか。stagingproduction では暗号鍵と永続ストアの検査が fail-closed になります。NODE_ENVENVIRONMENT も同じ順で読みます
TAKOSUMI_DEV_MODE任意未設定1 / true / yes / on / enabled のどれかにすると、非本番で暗号鍵を設定しないまま起動できます。stagingproduction では効きません
PORT任意8788bun core/index.ts で起動したときの待ち受けポート
TAKOSUMI_DATABASE_URLbun core/index.ts で control plane を単体で動かすとき必須なしcontrol plane の PostgreSQL 接続先。DATABASE_URL も同じ用途で読みます。同梱の compose は control plane と accounts を 1 つの接続で動かすので、そちらでは TAKOSUMI_ACCOUNTS_DATABASE_URL だけを設定します
TAKOSUMI_DB_AUTO_MIGRATE任意falsebun core/index.ts の起動時にマイグレーションを適用するか。既定では適用せず、読み取りだけで検証します。stagingproductiontrue にすると起動が失敗します
TAKOSUMI_DEPLOY_CONTROL_TOKEN実運用では必須・秘密なしoperator 専用 API の bearer。CLI と operator client が使います。旧 Resource/Form /v1 surface には作用しません
TAKOSUMI_METRICS_SCRAPE_TOKEN任意・秘密なし/metrics を読むための bearer。未設定のあいだ /metrics404 を返します
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.tsstaging / 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 は、stagingproduction でこの宣言を 求めます。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 配列。clientIdredirectUris が必須で、tokenEndpointAuthMethodallowedScopes を添えられます
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 は表示と識別のための名前で、挙動は選びません。何個でも並べられます。

Retired Resource/Form HTTP surfaces

Takosumi OSS supports one Git/OpenTofu/Terraform Stack flow. The former Resource Shape, Form Host, Form Registry, FormActivation, TargetPool, and SpacePolicy /v1 routes and CLI domains are retired and have no enable flag. They remain unconditional 404, are absent from capabilities/OpenAPI, and are not restored by a bearer, a database, or retained rows.

Current Takosumi exposes no typed Host migration operation or configuration for Resource Shape, TargetPool, or the other retired Host records. PostgreSQL migration v110 and D1 migration v66 physically drop those tables only when all of them are empty; populated rows stop the forward migration. An affected operator must use the immediate predecessor release or out-of-band database tooling to inventory and export those rows, record an explicit disposition, empty the retired tables according to that disposition, and then retry the migration. The portable Takoform protocol is an external Host contract, not a compatibility alias or migration surface. New users configure ordinary providers through a Stack and the ProviderConnection / CredentialRecipe / ProviderBinding path.

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 configuration (external Host only)

Takosumi OSS does not install or host Form Packages. A hosted service or operator composition that owns a Form Host may document its private trust policy and artifact bindings in that Host's runbook; those settings are not a supported Takosumi OSS deployment path and do not create a FormActivation or 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_PASSWORDcompose を使う場合は必須・秘密なし同梱の compose が PostgreSQL に設定するパスワード

同梱の 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