Crowi

環境変数

Crowi が読む環境変数の一覧

api と web が読む環境変数の全一覧です。api は起動時にこの一覧を検証し、形式の誤りとタイポ候補を 1 か所のレポートにまとめて出力します。設定する場所と読み込みの仕組みは 設定 を参照してください。

NEXT_PUBLIC_ で始まる 3 つと CROWI_API_URL は web が読み、それ以外は api が読みます。

変数名既定値内容
AUTH_PUBLIC_API_URL解決後の web URL外部アカウントでのサインインのリダイレクト URI に使う api の公開 origin。origin のみ (パス・クエリを含めると起動失敗)
AUTH_PUBLIC_WEB_URLCLIENT_URL同じリダイレクト URI に使う web の公開 origin。両方とも未設定なら 外部アカウントでのサインイン が無効になる
BASE_URL既知の変数名として受け付けるだけで、api は参照しない。公開 URL は CLIENT_URL
CLIENT_URL(なし)web の公開オリジン。CORS の許可オリジンと送信メール内のリンクに使う。未設定でも起動するが警告が出る
COLLAB_MAX_EDITORS_PER_PAGE201 ページあたりの同時編集者上限。超えたクライアントは読み取り専用で接続する
CROWI_API_URL(なし)web サーバが内蔵プロキシで api に到達する URL。配布イメージでは起動時に読み直さないため、開発と Vercel でのみ効く
CROWI_ENCRYPTION_KEY(なし)機密設定を暗号化する 32 バイトのマスターキー (base64)。未設定なら平文で保存する。openssl rand -base64 32 で生成
CROWI_MIGRATE_USER(なし)データ移行による本文の書き換えを記録するユーザーのメールアドレス。未設定なら管理者から自動で選ぶ
CROWI_MULTI_INSTANCE(なし = 単一レプリカ)複数レプリカ構成であることの宣言 (1 / true / レプリカ数)。宣言すると WS_TOKEN_SECRET の起動ガードが有効になる
CROWI_UPLOAD_MAX_BYTES52428800 (50 MB)添付アップロードの上限バイト数。50 MB が上限で、超える値は 50 MB に丸められる
DEBUG(なし)設定すると起動レポートを 1 行ずつ出力する (デバッグ出力と混ざらないようにするため)
ENABLE_DNSCACHE既知の変数名として受け付けるだけで、api は参照しない
IMAGE_DERIVATIVE_ADMISSION_CONCURRENCY2アップロード経路でサムネイルを同時に生成する数の上限
IMAGE_DERIVATIVE_ADMISSION_TIMEOUT_MS5000上の生成枠を待つ上限 (ミリ秒)。超えるとサムネイルを諦め、元画像だけを返す
IMAGE_DERIVATIVE_MAX_PIXELS50000000サムネイル生成でデコードを許す最大ピクセル数。超える画像はサムネイルを作らない
JWT_ACCESS_TOKEN_TTL_SECONDS3600 (1 時間)api が発行するアクセストークンの有効期間
JWT_REFRESH_TOKEN_TTL_SECONDS2592000 (30 日)api が発行するリフレッシュトークンの有効期間
MIGRATION_PREFLIGHT_UNAPPLIED_POLICYblock未適用の事前データ移行があるときの挙動。block は起動しない、warn は警告して起動する。バージョンアップ 参照
MONGO_URImongodb://localhost/crowiMongoDB の接続文字列。MONGOLAB_URI / MONGODB_URI / MONGOHQ_URL も同じ値として読む
NEXT_PUBLIC_API_TIMEOUT_MS20000ブラウザが api の応答を待つ上限 (ミリ秒)
NEXT_PUBLIC_API_URL(なし)ブラウザから見た api の絶対オリジン。同一オリジン構成では未設定にする
NEXT_PUBLIC_COLLAB_URL(なし)ブラウザが接続する WebSocket の URL。未設定なら api のオリジンとブラウザの現在の origin から導出する
NODE_ENVproduction (未設定時も production 扱い)development / production / test
OAUTH_REFRESH_REUSE_GRACE_MS60000 (60 秒)リフレッシュトークンのローテーション再利用検知を抑止する猶予時間。上限 5 分、0 で猶予なし
PASSWORD_SEED(なし)移行前の形式で保存されたパスワードを検証するためのシード
PORT4301api サーバが待ち受けるポート。ポートと URL 参照
REDIS_KEY_PREFIXCLIENT_URL のホスト名Redis のキーとチャンネルに付くインスタンス単位の名前空間。Redis のキーと ACL 参照
REDIS_REJECT_UNAUTHORIZED10 にすると Redis への TLS 接続で証明書の検証を行わない
REDIS_URL(なし)Redis の接続先。単一レプリカでは省略可、複数レプリカでは必須。TLS は rediss://REDISTOGO_URL / REDIS_TLS_URL も同じ値として読む。使う機能とキーは Redis のキーと ACL、省略したときの機能ごとの挙動は下の節
SECRET_TOKEN(なし)セッション関連の署名に使うシークレット
SLACK_MANIFEST_REQUEST_URLCLIENT_URLSlack アプリのマニフェストに書き込む公開 origin。開発でトンネルを使うときに指定する
WS_TOKEN_SECRET(なし = プロセスごとにランダム生成)WebSocket 接続の認証に使う短命トークンの署名鍵。32 文字以上必須 で、NODE_ENV=production では 32 文字未満だと起動しない。複数レプリカでは全レプリカで同じ値にする。openssl rand -base64 32 で生成

REDIS_URL を省略したときの挙動

機能REDIS_URL が無いとき
共同編集の伝搬・プレゼンス・通知・設定同期レプリカ間連携専用なので、単一レプリカでは失うものがありません
同時編集者上限上限を強制しなくなります (弾く代わりに通す fail-open)
レート制限プロセス内のメモリで動作を継続します (レプリカ間では共有されません)
最近見たページ機能自体が使えません (フォールバックはありません)
外部アカウントの連携連携の途中経過をプロセス内に保持するため、途中で api を再起動するとその連携をやり直すことになります

複数レプリカ構成では REDIS_URL は必須です (リアルタイム共同編集の運用)。

関連ページ

On this page