メインコンテンツにスキップ

セルフホスト環境のリファレンス

まずはリリースから env.exampleとしてダウンロードしたもの .env で はじめに。これは、サポートされている最小の Compose 構成です。使用する env.full.example 任意設定が必要な場合。このページでは、関連する設定と変更すべき状況を説明します。

編集後 .env、解決された構成を出力せずに補間を検証します。

docker compose config --quiet

コミットしないでください .env、サポート リクエストに貼り付けるか、出力を公開します。 docker compose config: 解決された出力にはシークレットが含まれています。

必要な生産値​

各シークレットを個別に生成します openssl rand -hex 32。アップグレードするたびに古い値を保持し、サーバーの外部にリカバリ コピーを保存します。

変数生産額なぜそれが重要なのか
POSTGRES_PASSWORDユニークなランダムパスワードバンドルされた PostgreSQL データベースを保護します。
WEB_ORIGINパブリック HTTPS アプリのオリジン (例: https://kanera.example.comブラウザリンク、CORS、認証フローに使用されます。末尾にスラッシュを含めないでください。
COOKIE_DOMAINアプリのホスト名 (例: kanera.example.comリフレッシュ Cookie のスコープ。
COOKIE_SECUREtrueアプリが HTTPS 経由で提供される場合は必須です。
JWT_SECRET安定したランダム シークレット、少なくとも 16 文字ユーザーセッションに署名します。ローテーションで全員をサインアウトします。
MCP_INTERNAL_SECRET安定したランダム シークレット。少なくとも 32 文字であり、次のものとは異なります。 JWT_SECRETMCP トークンを転送せずに、MCP とパブリック API サービスがオーディエンスにバインドされた OAuth 認証情報を交換できるようにします。 /api/v1。両方のサービスは常に同じ値を使用する必要があります。
MFA_ENCRYPTION_KEY安定したランダム シークレット、少なくとも 32 文字認証システムの登録とチャレンジを保護します。ローテーションにより、登録された認証子が無効になります。
MEDIA_SIGNING_SECRET安定したランダム シークレット、少なくとも 32 文字プライベートメディア URL に署名します。ローテーションにより、既存の署名付き URL が無効になります。
SECRETS_ENCRYPTION_KEY安定したランダム シークレット。少なくとも 32 文字であり、次のものとは異なります。 JWT_SECRETデータベースに保存されている SMTP、ストレージ、Webhook、および統合認証情報を暗号化します。

KANERA_DEPLOYMENT_MODE デフォルトは self_hosted。ホスト モードとその Stripe、PostHog、プラン制限、およびライセンス変数は、Kanera が運用する展開用であり、セルフホスト型インストールでは未設定のままにする必要があります。

物資を準備する NODE_ENV=production そして ANALYTICS_ENABLED=false。休暇を取る ANALYTICS_PROVIDER, POSTHOG_PROJECT_KEY, POSTHOG_API_HOST、すべての STRIPE_*, HOSTED_*、ホストモードトークンの設定が解除されます。これらの設定では、セルフホスト型インストールがKanera Cloudに変わるわけではありません。

パブリック URL とサービス​

変数デフォルトこんなときに設定してください
KANERA_ENVIRONMENTproduction 本番環境で作成する開発、テスト、ステージングには別の API キー プレフィックスが必要です。
API_PUBLIC_URLWEB_ORIGINブラウザー向けアプリ API は、別のパブリック オリジンを使用します。
KANERA_PUBLIC_API_URLhttp://public-api:3001 作成中MCP または別の内部プロセスが、Compose サービス アドレス以外の場所でパブリック API に到達します。これは内部 URL であり、ブラウザ向け API オリジンではありません。
PUBLIC_API_OAUTH_ISSUERhttp://localhost:3001OAuth またはパブリック API をリモートで公開します。ブラウザから到達可能な HTTPS オリジンを使用します。
MCP_SERVER_PUBLIC_URLhttp://localhost:3002/mcpリモート MCP を公開します。完全なパブリックを使用する /mcp URL。
MCP_PUBLIC_URL由来 MCP_SERVER_PUBLIC_URL 作曲者:MCP サービスは、バンドルされた Compose ワイヤリングの外側で実行します。
OAUTH_ISSUER_URL由来 PUBLIC_API_OAUTH_ISSUER 作曲者:MCP は、バンドルされた Compose 配線の外側で実行します。
API_PORT, PUBLIC_API_PORT, WORKER_PORT, MCP_PORT3000, 3001, 3003, 3002Compose の外部でサービスを実行しているか、別の内部リスナー ポートが必要です。
API_TRUST_PROXY, PUBLIC_API_TRUST_PROXY, MCP_TRUST_PROXYfalse, false, true信頼されたリバース プロキシは、実際のクライアント IP を提供します。任意のクライアントから転送されたヘッダーを決して信頼しないでください。

ブラウザが接続するのは、 web;メインは公開しない api サービス。参照 サービスとルーティング パブリック API または MCP を公開する前に。

アカウントと認証​

変数デフォルト目的
SIGNUPS_ENABLEDtrueセット false 公開の新規登録と新しい組織の作成を停止します。既存の組織への招待リンクは引き続き使えます。
EMAIL_VERIFICATION_ENABLEDfalseサインアップ、サインアップの招待、およびメールの変更には 6 桁のメール チェックが必要です。 SMTP が機能した後でのみ有効にします。
AUTH_RATE_LIMIT_ENABLEDtrue未認証の認証ルートで IP ごとのブルート フォース スロットルを有効にします。
AUTH_RATE_LIMIT_MAX / AUTH_RATE_LIMIT_WINDOW_MS10 / 60000ウィンドウごとに許可される認証試行。
JWT_ACCESS_TTL / JWT_REFRESH_TTL_DAYS5m / 10アクセストークンとリフレッシュセッションの有効期間。
CLOUDFLARE_TURNSTILE_SITE_KEY / CLOUDFLARE_TURNSTILE_SECRET_KEY設定を解除するホスト型サインアップ保護。通常のセルフホスティングの場合は未設定のままにしておきます。

ユーザーは以下で独自の認証子を設定します。 設定 -> アカウント -> セキュリティ。組織管理者は以下でそれを要求できます 設定 -> 組織 -> セキュリティ。参照 プロファイルとセキュリティ.

パブリック API と MCP の制限​

変数デフォルト目的
PUBLIC_API_RATE_LIMIT_ENABLEDtrueパブリック API と MCP リクエストの制限を有効にします。
PUBLIC_API_IP_RATE_LIMIT_PER_MINUTE60認証されていない検出と無効なベアラー形式の制限。
PUBLIC_API_FAILED_KEY_RATE_LIMIT_PER_MINUTE10失敗した場合の IP ごとの制限 kanera_* 重要な試み。
PUBLIC_API_KEY_RATE_LIMIT_PER_MINUTE400認証成功後のキーごとのリクエスト制限。
PUBLIC_API_UPLOAD_RATE_LIMIT_PER_MINUTE30キーごとの添付ファイルのアップロード制限。
PUBLIC_API_RATE_LIMIT_WINDOW_MS60000パブリック API と MCP によって共有されるレート制限ウィンドウ。
MCP_BODY_MAX_BYTES1048576MCP リクエスト本文の最大数。
MCP_REQUEST_TIMEOUT_MS30000MCP リクエストの最大時間。
MCP_HEADERS_TIMEOUT_MS / MCP_KEEP_ALIVE_TIMEOUT_MS10000 / 5000MCP HTTP 接続のタイムアウト。
KANERA_API_KEY設定を解除するHTTP MCP サービスではなく、ローカルの stdio MCP ブリッジでのみ必要です。

データベース、キャッシュ、容量​

物資を準備する DATABASE_URL そして REDIS_URL バンドルされた PostgreSQL および Valkey サービスの場合。ネットワーク外でプロセスを実行する場合、またはマネージド サービスを使用する場合にのみ、これらを自分で設定します。

変数デフォルトの作成目的
DATABASE_SSLfalse外部データベースで SSL が必要な場合にのみ有効にします。
POSTGRES_BIND_PORT5433バンドルされた PostgreSQL のループバック専用ホスト ポート。
API_REPLICAS / PUBLIC_API_REPLICAS / MCP_REPLICAS2 / 1 / 1サービスプロセス数。ワーカーを正確に 1 人に保ちます。
PG_POOL_MAX / WORKER_PG_POOL_MAX20 / 5アプリプロセスごとおよびワーカーの最大データベース接続数。
PG_IDLE_TIMEOUT_MS / PG_CONNECTION_TIMEOUT_MS30000 / 5000プールのアイドル状態と取得のタイムアウト。
PG_STATEMENT_TIMEOUT_MS / SLOW_QUERY_LOG_MS30000 / 250データベース クエリのタイムアウトと低速クエリのログしきい値。
NODE_OPTIONS設定を解除するヒープ制限などのオプションのノード フラグ。
UV_THREADPOOL_SIZE16ハッシュ、暗号化、画像処理で使用されるネイティブ ワーカー スレッド。
REALTIME_WEBSOCKET_COMPRESSION_ENABLEDtrueより大きな Socket.IO WebSocket メッセージを圧縮します。
REALTIME_WEBSOCKET_COMPRESSION_THRESHOLD_BYTES1024圧縮するリアルタイム フレームの最小サイズ。
REALTIME_OUTBOX_POLL_MS500 作成中リアルタイムおよび Webhook 送信ボックス行のワーカー フォールバック ポーリング間隔。
USER_DISPLAY_CACHE_TTL_MS60000表示名検索のインプロセス キャッシュの有効期間。

容量を測定した後でのみ、レプリカとプールを一緒に起動してください。参照 アップデートとスケーリング.

ファイルとオブジェクトストレージ​

変数デフォルト目的
UPLOADS_DIR/data/uploads 作成中ローカルアップロードディレクトリ。バンドルされた Compose はこのパスを修正し、永続化します。 kanera_uploads;ではなくボリュームマッピングを変更します .env.
ATTACHMENT_MAX_BYTES104857600アップロードされる添付ファイルの最大サイズ (バイト単位)。
S3_REGION / S3_BUCKET設定を解除する認証情報が提供された場合、展開全体の S3 互換ストレージを開始します。
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY設定を解除するアップロードバケットの認証情報。環境ベースの S3 には両方が必要です。
S3_ENDPOINT設定を解除するMinIO、R2、または別の S3 互換プロバイダーのカスタム エンドポイント。これを設定すると、パス形式のリクエストが有効になります。
S3_PUBLIC_URL_PREFIX設定を解除する保存されたオブジェクトのオプションのパブリックまたは CDN プレフィックス。

環境ストレージは、アプリで構成された組織ストレージよりも優先されます。参照 ストレージとバックアップ すでにアップロードされているインストールを切り替える前に。

電子メール、通知、統合​

変数デフォルト目的
SMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAIL設定を解除するデフォルトの送信 SMTP 接続と送信者。
SMTP_PORT / SMTP_SECURITY587 / starttlsSMTP ポートとトランスポート: starttls, tls、または none.
SMTP_FROM_NAMEKanera送信者の表示名。
SMTP_IDENTITY_DOMAIN送信者のメールドメインEHLO およびメッセージ ID ドメイン。
INTERNAL_NOTIFICATION_EMAILS設定を解除するプレーンテキストのサインアップおよび招待アラートのカンマ区切りの受信者。 SMTP環境が必要です。
KANERA_ALLOW_PRIVATE_NOTIFICATION_DESTINATIONSfalseHTTP またはプライベート ネットワーク上で個人の ntfy、Gotify、および Webhook レシーバーを許可します。予約済みアドレスとメタデータ アドレスはブロックされたままになります。
ALERT_WEBHOOK_URL設定を解除する準備状況、ランタイム、および Grafana アラート用の Slack 互換の宛先。
OPS_ALERTS_ENABLED / OPS_ALERT_THROTTLE_MStrue / 300000運用アラートを有効にして重複を排除します。宛先がなければ何も送信されません。
SLOW_REQUEST_LOG_MS2500ログに記録される低速リクエストの警告のしきい値。
GITHUB_APP_ID, GITHUB_APP_SLUG, GITHUB_APP_PRIVATE_KEY設定を解除するプライベート リンク プレビュー用のオプションのデプロイメント定義の GitHub アプリ。セルフホスト型管理者は、代わりにアプリ内マニフェスト フローを使用できます。
TRELLO_API_KEY設定を解除するTrello インポートで添付ファイルを認証してコピーできるようにします。

参照 電子メールと通知 そして 統合とAPI.

バックアップと保存​

変数デフォルト目的
DB_BACKUPS_ENABLEDfalseS3 互換ストレージへのスケジュールされた暗号化された PostgreSQL バックアップを有効にします。
DB_BACKUP_ENCRYPTION_PASSPHRASE設定を解除するバックアップが有効な場合に必要であり、バックアップを復元する場合にも再度必要になります。
DB_BACKUP_TIMES_UTC00:15,12:15,16:45カンマで区切られた毎日の UTC バックアップ時間。
DB_BACKUP_RETENTION_DAYS14正常なバックアップ保持期間。
DB_BACKUP_S3_PREFIXbackups/postgresデータベースダンプのオブジェクトプレフィックス。
DB_BACKUP_S3_BUCKET, DB_BACKUP_S3_REGION, DB_BACKUP_S3_ENDPOINTアップロードストレージの値オプションの個別のバックアップ先。
DB_BACKUP_S3_ACCESS_KEY_ID, DB_BACKUP_S3_SECRET_ACCESS_KEYアップロードストレージの値オプションの個別のバックアップ認証情報。
ACTIVITY_EVENT_RETENTION_DAYS730アクティビティ履歴の保持。
ADMIN_AUDIT_LOG_RETENTION_DAYS1095管理監査ログの保存。
NOTIFICATION_READ_RETENTION_DAYS / NOTIFICATION_MAX_RETENTION_DAYS90 / 365既読通知と絶対的な通知保持。
AUTH_TOKEN_RETENTION_DAYS30期限切れまたは消費された認証アーティファクトがパージされるまでの猶予期間。
REALTIME_OUTBOX_RETENTION_DAYS / OUTBOX_STUCK_RETENTION_DAYS30 / 30処理され、永久にスタックされた送信トレイの保持。

参照 ストレージとバックアップ バックアップ要件と復元計画については、こちらをご覧ください。

モニタリング​

変数デフォルト目的
METRICS_ENABLEDtruePrometheus メトリクス エンドポイントを登録します。彼らは戻ってきます 404 有効なトークンなしでは利用できません。
METRICS_TOKEN設定を解除するスクレイピングには少なくとも 16 文字のベアラー トークンが必要です。
COMPOSE_PROFILES設定を解除する含める monitoring Grafana、Prometheus、Loki、Alloy、エクスポーターを起動します。次も含めてください: admin 管理ポータル用。
COMPOSE_PROJECT_NAMEkaneraこのデプロイメントのログを選択するために Alloy が使用する ID を構成します。チェックする docker compose ls 管理されたプラットフォーム上で。
GRAFANA_ADMIN_PASSWORD設定を解除する監視プロファイルが有効な場合に必要です。
MONITORING_BIND_IP127.0.0.1Grafana と Prometheus のホスト インターフェイス。プライベート VPN アドレスは決して使用しないでください 0.0.0.0 生産中です。
GRAFANA_BIND_PORT / PROMETHEUS_BIND_PORT3000 / 90902 つの監視 UI のホスト ポート。
PROMETHEUS_RETENTION / PROMETHEUS_RETENTION_SIZE30d / 5GBPrometheus データの時間とディスクの上限。
GRAFANA_ROOT_URL設定を解除するプロキシ経由で提供する場合の外部 Grafana URL。
POSTGRES_EXPORTER_DSNバンドルされたデータベース外部 PostgreSQL サーバーのオーバーライド。
REALTIME_EMIT_METRICS_ENABLEDfalseサンプリングされたリアルタイム ペイロード メトリックを有効にします。
REALTIME_EMIT_METRICS_SAMPLE_RATE / REALTIME_EMIT_METRICS_MIN_BYTES0.01 / 0リアルタイムのメトリクス サンプリングと最小ペイロード サイズ。

オプションの管理ポータル​

管理ポータルはテナント設定とは独立しており、独自の認証境界があります。オペレータが組織を越えた管理または監査されたサポート セッションを必要とする場合にのみ有効にします。

変数デフォルト目的
ADMIN_WEB_ORIGINhttp://localhost:4300管理コンソールのパブリック起点と CORS 境界。
ADMIN_API_PORT3002バンドルされた配線の外側で実行される場合の内部管理 API リスナー ポート。
ADMIN_COOKIE_DOMAIN設定を解除する管理ホスト名が外部にある場合の Cookie ドメインのオーバーライド COOKIE_DOMAIN.
ADMIN_JWT_SECRET設定を解除する管理 API に必須であり、次とは異なる必要があります。 JWT_SECRET.
ADMIN_EMAIL / ADMIN_PASSWORD設定を解除するadmin-user テーブルが空の間のみ、最初のスーパー管理者をシードします。既存のアカウントはリセットされません。
ADMIN_JWT_ACCESS_TTL / ADMIN_JWT_REFRESH_TTL_DAYS15m / 7管理者アクセスと更新の有効期間。
ADMIN_LOGIN_RATE_LIMIT_MAX / ADMIN_LOGIN_RATE_LIMIT_WINDOW_MS5 / 300000IP ごとの管理者ログイン スロットル。
ADMIN_TRUST_PROXYtrue実際のクライアント IP に対して管理リバース プロキシを信頼します。
SUPPORT_SESSION_TTL_MINUTES60サポートセッションの有効期間は短期間です。最大 8 時間、リフレッシュ トークンなし。

管理ポータルを非公開にし、別のホスト名とシークレットを使用し、その監査ログを確認します。完全な展開配線については、次の文書に記載されています。 DEPLOY.md Kanera リポジトリ内。

変更を適用して確認する​

ほとんどの変更では、影響を受けるサービスを再作成する必要があります。

docker compose config --quiet
docker compose up -d
docker compose ps

認証、配信、ストレージ、API、MCP、または管理設定を変更した後は、関連するサービス ログを確認してください。構文的に有効な .env 外部認証情報や URL が機能することを証明するものではありません。