セルフホスト環境のリファレンス
まずはリリースから 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_SECURE | true | アプリが HTTPS 経由で提供される場合は必須です。 |
JWT_SECRET | 安定したランダム シークレット、少なくとも 16 文字 | ユーザーセッションに署名します。ローテーションで全員をサインアウトします。 |
MCP_INTERNAL_SECRET | 安定したランダム シークレット。少なくとも 32 文字であり、次のものとは異なります。 JWT_SECRET | MCP トークンを転送せずに、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_ENVIRONMENT | production 本番環境で作成する | 開発、テスト、ステージングには別の API キー プレフィックスが必要です。 |
API_PUBLIC_URL | WEB_ORIGIN | ブラウザー向けアプリ API は、別のパブリック オリジンを使用します。 |
KANERA_PUBLIC_API_URL | http://public-api:3001 作成中 | MCP または別の内部プロセスが、Compose サービス アドレス以外の場所でパブリック API に到達します。これは内部 URL であり、ブラウザ向け API オリジンではありません。 |
PUBLIC_API_OAUTH_ISSUER | http://localhost:3001 | OAuth またはパブリック API をリモートで公開します。ブラウザから到達可能な HTTPS オリジンを使用します。 |
MCP_SERVER_PUBLIC_URL | http://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_PORT | 3000, 3001, 3003, 3002 | Compose の外部でサービスを実行しているか、別の内部リスナー ポートが必要です。 |
API_TRUST_PROXY, PUBLIC_API_TRUST_PROXY, MCP_TRUST_PROXY | false, false, true | 信頼されたリバース プロキシは、実際のクライアント IP を提供します。任意のクライアントから転送されたヘッダーを決して信頼しないでください。 |
ブラウザが接続するのは、 web;メインは公開しない api サービス。参照 サービスとルーティング パブリック API または MCP を公開する前に。
アカウントと認証
| 変数 | デフォルト | 目的 |
|---|---|---|
SIGNUPS_ENABLED | true | セット false 公開の新規登録と新しい組織の作成を停止します。既存の組織への招待リンクは引き続き使えます。 |
EMAIL_VERIFICATION_ENABLED | false | サインアップ、サインアップの招待、およびメールの変更には 6 桁のメール チェックが必要です。 SMTP が機能した後でのみ有効にします。 |
AUTH_RATE_LIMIT_ENABLED | true | 未認証の認証ルートで IP ごとのブルート フォース スロットルを有効にします。 |
AUTH_RATE_LIMIT_MAX / AUTH_RATE_LIMIT_WINDOW_MS | 10 / 60000 | ウィンドウごとに許可される認証試行。 |
JWT_ACCESS_TTL / JWT_REFRESH_TTL_DAYS | 5m / 10 | アクセストークンとリフレッシュセッションの有効期間。 |
CLOUDFLARE_TURNSTILE_SITE_KEY / CLOUDFLARE_TURNSTILE_SECRET_KEY | 設定を解除する | ホスト型サインアップ保護。通常のセルフホスティングの場合は未設定のままにしておきます。 |
ユーザーは以下で独自の認証子を設定します。 設定 -> アカウント -> セキュリティ。組織管理者は以下でそれを要求できます 設定 -> 組織 -> セキュリティ。参照 プロファイルとセキュリティ.
パブリック API と MCP の制限
| 変数 | デフォルト | 目的 |
|---|---|---|
PUBLIC_API_RATE_LIMIT_ENABLED | true | パブリック API と MCP リクエストの制限を有効にします。 |
PUBLIC_API_IP_RATE_LIMIT_PER_MINUTE | 60 | 認証されていない検出と無効なベアラー形式の制限。 |
PUBLIC_API_FAILED_KEY_RATE_LIMIT_PER_MINUTE | 10 | 失敗した場合の IP ごとの制限 kanera_* 重要な試み。 |
PUBLIC_API_KEY_RATE_LIMIT_PER_MINUTE | 400 | 認証成功後のキーごとのリクエスト制限。 |
PUBLIC_API_UPLOAD_RATE_LIMIT_PER_MINUTE | 30 | キーごとの添付ファイルのアップロード制限。 |
PUBLIC_API_RATE_LIMIT_WINDOW_MS | 60000 | パブリック API と MCP によって共有されるレート制限ウィンドウ。 |
MCP_BODY_MAX_BYTES | 1048576 | MCP リクエスト本文の最大数。 |
MCP_REQUEST_TIMEOUT_MS | 30000 | MCP リクエストの最大時間。 |
MCP_HEADERS_TIMEOUT_MS / MCP_KEEP_ALIVE_TIMEOUT_MS | 10000 / 5000 | MCP HTTP 接続のタイムアウト。 |
KANERA_API_KEY | 設定を解除する | HTTP MCP サービスではなく、ローカルの stdio MCP ブリッジでのみ必要です。 |
データベース、キャッシュ、容量
物資を準備する DATABASE_URL そして REDIS_URL バンドルされた PostgreSQL および Valkey サービスの場合。ネットワーク外でプロセスを実行する場合、またはマネージド サービスを使用する場合にのみ、これらを自分で設定します。
| 変数 | デフォルトの作成 | 目的 |
|---|---|---|
DATABASE_SSL | false | 外部データベースで SSL が必要な場合にのみ有効にします。 |
POSTGRES_BIND_PORT | 5433 | バンドルされた PostgreSQL のループバック専用ホスト ポート。 |
API_REPLICAS / PUBLIC_API_REPLICAS / MCP_REPLICAS | 2 / 1 / 1 | サービスプロセス数。ワーカーを正確に 1 人に保ちます。 |
PG_POOL_MAX / WORKER_PG_POOL_MAX | 20 / 5 | アプリプロセスごとおよびワーカーの最大データベース接続数。 |
PG_IDLE_TIMEOUT_MS / PG_CONNECTION_TIMEOUT_MS | 30000 / 5000 | プールのアイドル状態と取得のタイムアウト。 |
PG_STATEMENT_TIMEOUT_MS / SLOW_QUERY_LOG_MS | 30000 / 250 | データベース クエリのタイムアウトと低速クエリのログしきい値。 |
NODE_OPTIONS | 設定を解除する | ヒープ制限などのオプションのノード フラグ。 |
UV_THREADPOOL_SIZE | 16 | ハッシュ、暗号化、画像処理で使用されるネイティブ ワーカー スレッド。 |
REALTIME_WEBSOCKET_COMPRESSION_ENABLED | true | より大きな Socket.IO WebSocket メッセージを圧縮します。 |
REALTIME_WEBSOCKET_COMPRESSION_THRESHOLD_BYTES | 1024 | 圧縮するリアルタイム フレームの最小サイズ。 |
REALTIME_OUTBOX_POLL_MS | 500 作成中 | リアルタイムおよび Webhook 送信ボックス行のワーカー フォールバック ポーリング間隔。 |
USER_DISPLAY_CACHE_TTL_MS | 60000 | 表示名検索のインプロセス キャッシュの有効期間。 |
容量を測定した後でのみ、レプリカとプールを一緒に起動してください。参照 アップデートとスケーリング.
ファイルとオブジェクトストレージ
| 変数 | デフォルト | 目的 |
|---|---|---|
UPLOADS_DIR | /data/uploads 作成中 | ローカルアップロードディレクトリ。バンドルされた Compose はこのパスを修正し、永続化します。 kanera_uploads;ではなくボリュームマッピングを変更します .env. |
ATTACHMENT_MAX_BYTES | 104857600 | アップロードされる添付ファイルの最大サイズ (バイト単位)。 |
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_SECURITY | 587 / starttls | SMTP ポートとトランスポート: starttls, tls、または none. |
SMTP_FROM_NAME | Kanera | 送信者の表示名。 |
SMTP_IDENTITY_DOMAIN | 送信者のメールドメイン | EHLO およびメッセージ ID ドメイン。 |
INTERNAL_NOTIFICATION_EMAILS | 設定を解除する | プレーンテキストのサインアップおよび招待アラートのカンマ区切りの受信者。 SMTP環境が必要です。 |
KANERA_ALLOW_PRIVATE_NOTIFICATION_DESTINATIONS | false | HTTP またはプライベート ネットワーク上で個人の ntfy、Gotify、および Webhook レシーバーを許可します。予約済みアドレスとメタデータ アドレスはブロックされたままになります。 |
ALERT_WEBHOOK_URL | 設定を解除する | 準備状況、ランタイム、および Grafana アラート用の Slack 互換の宛先。 |
OPS_ALERTS_ENABLED / OPS_ALERT_THROTTLE_MS | true / 300000 | 運用アラートを有効にして重複を排除します。宛先がなければ何も送信されません。 |
SLOW_REQUEST_LOG_MS | 2500 | ログに記録される低速リクエストの警告のしきい値。 |
GITHUB_APP_ID, GITHUB_APP_SLUG, GITHUB_APP_PRIVATE_KEY | 設定を解除する | プライベート リンク プレビュー用のオプションのデプロイメント定義の GitHub アプリ。セルフホスト型管理者は、代わりにアプリ内マニフェスト フローを使用できます。 |
TRELLO_API_KEY | 設定を解除する | Trello インポートで添付ファイルを認証してコピーできるようにします。 |
バックアップと保存
| 変数 | デフォルト | 目的 |
|---|---|---|
DB_BACKUPS_ENABLED | false | S3 互換ストレージへのスケジュールされた暗号化された PostgreSQL バックアップを有効にします。 |
DB_BACKUP_ENCRYPTION_PASSPHRASE | 設定を解除する | バックアップが有効な場合に必要であり、バックアップを復元する場合にも再度必要になります。 |
DB_BACKUP_TIMES_UTC | 00:15,12:15,16:45 | カンマで区切られた毎日の UTC バックアップ時間。 |
DB_BACKUP_RETENTION_DAYS | 14 | 正常なバックアップ保持期間。 |
DB_BACKUP_S3_PREFIX | backups/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_DAYS | 730 | アクティビティ履歴の保持。 |
ADMIN_AUDIT_LOG_RETENTION_DAYS | 1095 | 管理監査ログの保存。 |
NOTIFICATION_READ_RETENTION_DAYS / NOTIFICATION_MAX_RETENTION_DAYS | 90 / 365 | 既読通知と絶対的な通知保持。 |
AUTH_TOKEN_RETENTION_DAYS | 30 | 期限切れまたは消費された認証アーティファクトがパージされるまでの猶予期間。 |
REALTIME_OUTBOX_RETENTION_DAYS / OUTBOX_STUCK_RETENTION_DAYS | 30 / 30 | 処理され、永久にスタックされた送信トレイの保持。 |
参照 ストレージとバックアップ バックアップ要件と復元計画については、こちらをご覧ください。
モニタリング
| 変数 | デフォルト | 目的 |
|---|---|---|
METRICS_ENABLED | true | Prometheus メトリクス エンドポイントを登録します。彼らは戻ってきます 404 有効なトークンなしでは利用できません。 |
METRICS_TOKEN | 設定を解除する | スクレイピングには少なくとも 16 文字のベアラー トークンが必要です。 |
COMPOSE_PROFILES | 設定を解除する | 含める monitoring Grafana、Prometheus、Loki、Alloy、エクスポーターを起動します。次も含めてください: admin 管理ポータル用。 |
COMPOSE_PROJECT_NAME | kanera | このデプロイメントのログを選択するために Alloy が使用する ID を構成します。チェックする docker compose ls 管理されたプラットフォーム上で。 |
GRAFANA_ADMIN_PASSWORD | 設定を解除する | 監視プロファイルが有効な場合に必要です。 |
MONITORING_BIND_IP | 127.0.0.1 | Grafana と Prometheus のホスト インターフェイス。プライベート VPN アドレスは決して使用しないでください 0.0.0.0 生産中です。 |
GRAFANA_BIND_PORT / PROMETHEUS_BIND_PORT | 3000 / 9090 | 2 つの監視 UI のホスト ポート。 |
PROMETHEUS_RETENTION / PROMETHEUS_RETENTION_SIZE | 30d / 5GB | Prometheus データの時間とディスクの上限。 |
GRAFANA_ROOT_URL | 設定を解除する | プロキシ経由で提供する場合の外部 Grafana URL。 |
POSTGRES_EXPORTER_DSN | バンドルされたデータベース | 外部 PostgreSQL サーバーのオーバーライド。 |
REALTIME_EMIT_METRICS_ENABLED | false | サンプリングされたリアルタイム ペイロード メトリックを有効にします。 |
REALTIME_EMIT_METRICS_SAMPLE_RATE / REALTIME_EMIT_METRICS_MIN_BYTES | 0.01 / 0 | リアルタイムのメトリクス サンプリングと最小ペイロード サイズ。 |
オプションの管理ポータル
管理ポータルはテナント設定とは独立しており、独自の認証境界があります。オペレータが組織を越えた管理または監査されたサポート セッションを必要とする場合にのみ有効にします。
| 変数 | デフォルト | 目的 |
|---|---|---|
ADMIN_WEB_ORIGIN | http://localhost:4300 | 管理コンソールのパブリック起点と CORS 境界。 |
ADMIN_API_PORT | 3002 | バンドルされた配線の外側で実行される場合の内部管理 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_DAYS | 15m / 7 | 管理者アクセスと更新の有効期間。 |
ADMIN_LOGIN_RATE_LIMIT_MAX / ADMIN_LOGIN_RATE_LIMIT_WINDOW_MS | 5 / 300000 | IP ごとの管理者ログイン スロットル。 |
ADMIN_TRUST_PROXY | true | 実際のクライアント IP に対して管理リバース プロキシを信頼します。 |
SUPPORT_SESSION_TTL_MINUTES | 60 | サポートセッションの有効期間は短期間です。最大 8 時間、リフレッシュ トークンなし。 |
管理ポータルを非公開にし、別のホスト名とシークレットを使用し、その監査ログを確認します。完全な展開配線については、次の文書に記載されています。 DEPLOY.md Kanera リポジトリ内。
変更を適用して確認する
ほとんどの変更では、影響を受けるサービスを再作成する必要があります。
docker compose config --quiet
docker compose up -d
docker compose ps
認証、配信、ストレージ、API、MCP、または管理設定を変更した後は、関連するサービス ログを確認してください。構文的に有効な .env 外部認証情報や URL が機能することを証明するものではありません。