| 環境変数 | 説明 | デフォルト値 | 必須 | 例 |
|---|---|---|---|---|
| 基本設定 | ||||
| PUBLIC_ORIGIN | 完全なURLを生成するための公開オリジン。アプリへのアクセスに使用するアドレスを設定する必要があります | - | はい | https://app.teable.ai |
| SECRET_KEY | JWT、セッション、共有に使用するルートシークレット。強力なランダム値を生成してください | - | はい | openssl rand -base64 32 |
| BACKEND_JWT_SECRET | 認証、共有、プラグインの JWT に署名します。未設定の場合は SECRET_KEY を使用します | SECRET_KEY | - | openssl rand -base64 32 |
| BACKEND_SESSION_SECRET | ログインセッションCookieに署名します。未設定の場合は SECRET_KEY を使用します | SECRET_KEY | - | openssl rand -base64 32 |
| BACKEND_STORAGE_ENCRYPTION_KEY | 添付ファイルのアクセストークンを暗号化します。BACKEND_STORAGE_PROVIDER が local の場合は必須です | - | はい | 16文字のランダム文字列 |
| BACKEND_STORAGE_ENCRYPTION_IV | BACKEND_STORAGE_ENCRYPTION_KEY と組み合わせる暗号化 IV | - | はい | 16文字のランダム文字列 |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY | 個人アクセストークンを暗号化します | - | はい | 16文字のランダム文字列 |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_IV | BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY と組み合わせる暗号化 IV | - | はい | 16文字のランダム文字列 |
| PORT | アプリケーションを実行するポート | 3000 | - | 3000 |
| LOG_LEVEL | ログレベル。選択肢:fatal、error、warn、info、debug、trace | info | - | debug |
| ストレージ設定 | ||||
| BACKEND_STORAGE_PROVIDER | ストレージプロバイダー。選択肢:local、minio、s3、aliyun | local | - | s3 |
| BACKEND_STORAGE_LOCAL_PATH | ローカルストレージのパス | .assets/uploads | - | .assets/uploads |
| BACKEND_STORAGE_PUBLIC_BUCKET | 公開バケット名 | public | - | teable-public |
| BACKEND_STORAGE_PRIVATE_BUCKET | 添付ファイル、アプリファイル、アーカイブデータなどの保護された内容を保存する非公開バケット名 | private | - | teable-private |
| BACKEND_STORAGE_PUBLIC_URL | 公開バケットの公開URLを上書きします(任意) | - | - | https://cdn.example.com |
| BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT | 非公開バケットのエンドポイントを上書きします(任意) | - | - | https://private-bucket.endpoint |
| BACKEND_STORAGE_S3_REGION | S3ストレージのリージョン。BACKEND_STORAGE_PROVIDER が s3 の場合は必須です | - | - | us-east-2 |
| BACKEND_STORAGE_S3_ENDPOINT | S3ストレージのエンドポイント。BACKEND_STORAGE_PROVIDER が s3 の場合は必須です | - | - | https://s3.us-east-2.amazonaws.com |
| BACKEND_STORAGE_S3_INTERNAL_ENDPOINT | S3の内部エンドポイント(任意) | - | - | http://s3.internal |
| BACKEND_STORAGE_S3_FORCE_PATH_STYLE | ブラウザー向けの S3 リクエストでパス形式のURL(endpoint/bucket/key)を使用します。公開エンドポイントでバケットのサブドメインを提供できない場合に有効にしてください。BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT とは併用できません | false | - | true |
| BACKEND_STORAGE_S3_INTERNAL_FORCE_PATH_STYLE | 内部の S3 リクエストでパス形式のアドレス指定を上書きします。未設定の場合、両方のクライアントが同じエンドポイントを共有していれば公開設定を継承します。内部エンドポイントが別の場合は仮想ホスト形式のアドレス指定を維持します | - | - | true |
| BACKEND_STORAGE_S3_ACCESS_KEY | S3ストレージのアクセスキー。BACKEND_STORAGE_PROVIDER が s3 の場合は必須です | - | - | your_access_key |
| BACKEND_STORAGE_S3_SECRET_KEY | S3ストレージのシークレットキー。BACKEND_STORAGE_PROVIDER が s3 の場合は必須です | - | - | your_secret_key |
| BACKEND_STORAGE_S3_MAX_SOCKETS | S3の最大ソケット数(任意) | 100 | - | 100 |
| BACKEND_STORAGE_MINIO_ENDPOINT | MinIO ストレージのエンドポイント | - | - | minio.example.com |
| BACKEND_STORAGE_MINIO_PORT | MinIO のポート | 9000 | - | 443 |
| BACKEND_STORAGE_MINIO_USE_SSL | MinIO で SSL を使用するかどうか | false | - | true |
| BACKEND_STORAGE_MINIO_ACCESS_KEY | MinIO のアクセスキー | - | - | access-key |
| BACKEND_STORAGE_MINIO_SECRET_KEY | MinIO のシークレットキー | - | - | secret-key |
| BACKEND_STORAGE_MINIO_INTERNAL_ENDPOINT | MinIO の内部エンドポイント(任意、HTTPS なし) | - | - | minio.internal |
| BACKEND_STORAGE_MINIO_INTERNAL_PORT | MinIO の内部ポート(任意) | 9000 | - | 9000 |
| BACKEND_STORAGE_MINIO_REGION | MinIO のリージョン(任意) | - | - | us-east-1 |
| BACKEND_STORAGE_UPLOAD_METHOD | アップロード方法 | put | - | put |
| STORAGE_PREFIX | ストレージのプレフィックス。デフォルトでは PUBLIC_ORIGIN を使用します | PUBLIC_ORIGIN | - | http://localhost:3000 |
| キャッシュ設定 | ||||
| BACKEND_CACHE_PROVIDER | キャッシュプロバイダー。選択肢:sqlite、memory、redis | sqlite | - | redis |
| BACKEND_CACHE_REDIS_URI | 計算タスクの配信に必要な Redis 接続 URI。BACKEND_CACHE_PROVIDER が redis の場合はキャッシュにも使用します | - | はい | redis://default:teable@127.0.0.1:6379/0 |
| パフォーマンスキャッシュ設定 | ||||
| BACKEND_PERFORMANCE_CACHE | クエリ結果をキャッシュするためのパフォーマンスキャッシュ Redis URL。複数ユーザーの共同作業効率を向上させます。BACKEND_CACHE_REDIS_URI とは別の Redis インスタンスの使用を推奨します | - | - | redis://default:teable@127.0.0.1:6379/0 |
| 認証設定 | ||||
| SOCIAL_AUTH_PROVIDERS | ソーシャル認証プロバイダーの一覧。カンマ区切りで指定します | - | - | github,google,oidc |
| BACKEND_GITHUB_CLIENT_ID | GitHub OAuth クライアントID | - | - | github_client_id |
| BACKEND_GITHUB_CLIENT_SECRET | GitHub OAuth クライアントシークレット | - | - | github_client_secret |
| BACKEND_GOOGLE_CLIENT_ID | Google OAuth クライアントID | - | - | google_client_id |
| BACKEND_GOOGLE_CLIENT_SECRET | Google OAuth クライアントシークレット | - | - | google_client_secret |
| BACKEND_OIDC_CLIENT_ID | OIDC クライアントID | - | - | google_client_id |
| BACKEND_OIDC_CLIENT_SECRET | OIDC クライアントシークレット | - | - | google_client_secret |
| BACKEND_OIDC_CALLBACK_URL | OIDC コールバックURL | - | - | https://app.teable.ai/api/auth/oidc/callback |
| セキュリティと認証 | ||||
| TURNSTILE_SITE_KEY | 認証検証に使用する Cloudflare Turnstile のサイトキー | - | - | 1x00000000000000000000AA |
| TURNSTILE_SECRET_KEY | 認証検証に使用する Cloudflare Turnstile のシークレットキー | - | - | 1x0000000000000000000000000000000AA |
| TEABLE_SSRF_PROTECTION_DISABLED | ループバック、プライベート、リンクローカルなどの予約済みネットワークアドレスへの外部リクエストを遮断する保護を無効にします。内部エンドポイントへアクセスする必要がある、信頼できるセルフホスト環境でのみ true に設定してください | false | - | true |
| BACKEND_SIGNUP_VERIFICATION_CODE_RATE_LIMIT_SECONDS | 登録確認メールを送信するレート制限間隔(秒) | - | - | 30 |
| BACKEND_TRUST_PROXY | プロキシの背後にあるクライアントIPを特定するための、リバースプロキシ信頼設定です。監査ログや関連するセキュリティ記録に影響します。true、false、ホップ数、IP/CIDR/プリセット一覧を指定できます。空の場合、プライベートネットワークのプロキシを信頼します | loopback, linklocal, uniquelocal | - | loopback, linklocal, uniquelocal |
| メール設定(非推奨 — システム管理 > インスタンス設定 > メールを使用) | ||||
| BACKEND_MAIL_HOST | デフォルトのメールサーバーアドレス。システム管理 > インスタンス設定 > メールで、通知メールとオートメーションメールを画面上から設定することを推奨します | smtp.teable.ai | - | smtp.gmail.com |
| BACKEND_MAIL_PORT | デフォルトのメールサーバーポート | 465 | - | 465 |
| BACKEND_MAIL_SECURE | デフォルトのメールサービスで SSL/TLS を使用するかどうか | true | - | true |
| BACKEND_MAIL_SENDER | デフォルトの送信元アドレス | noreply.teable.ai | - | noreply@company.com |
| BACKEND_MAIL_SENDER_NAME | デフォルトの送信者名 | Teable | - | Teable |
| BACKEND_MAIL_AUTH_USER | デフォルトのメールサーバー認証ユーザー名 | - | - | username |
| BACKEND_MAIL_AUTH_PASS | デフォルトのメールサーバー認証パスワード | - | - | usertoken |
| BACKEND_MAIL_INVITE_USER_NAME_MAX_LENGTH | 招待メールの件名に含める招待者名の最大文字数。空または0の場合、切り詰めません | - | - | 32 |
| BACKEND_MAIL_INVITE_SPACE_NAME_MAX_LENGTH | 招待メールの件名に含めるスペース名またはベース名の最大文字数。空または0の場合、切り詰めません | - | - | 32 |
| セッション/JWT設定 | ||||
| BACKEND_SESSION_EXPIRES_IN | セッションの有効期間 | 7d | - | 7d |
| BACKEND_SESSION_COOKIE_SECURE | セッションCookieを保護するかどうか | false | - | true |
| BACKEND_SESSION_ORIGIN_CHECK_ENABLED | 安全でないブラウザーのセッションCookie API リクエストに対して、Origin と Fetch Metadata の検証を有効にします。リバースプロキシまたは CDN がこれらのヘッダーを維持する場合にのみ有効にしてください | false | - | false |
| BACKEND_JWT_EXPIRES_IN | JWT の有効期間 | 20d | - | 20d |
| BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | パスワードリセットメールの有効期間 | 30m | - | 30m |
| リソース上限 | ||||
| MAX_COPY_CELLS | 1回のリクエストでコピーできるセルの最大数 | - | - | 50000 |
| MAX_READ_ROWS | 1回のリクエストで読み取れる行の最大数 | - | - | 10000 |
| MAX_ATTACHMENT_UPLOAD_SIZE | 添付ファイルの最大アップロードサイズ(バイト) | - | - | 2147483648 |
| TASK_MAX_FIELDS_PER_BATCH | 1回のバッチリクエストでモデルへ送信するAIフィールドの最大数。値は1~20の範囲に制限されます | 5 | - | 5 |
| TASK_MAX_CONCURRENCY | 1回のスケジュールサイクルで処理を開始する、保留中のAIフィールドタスク実行数の上限。値は1~20の範囲に制限されます | 5 | - | 5 |
| TABLE_LIMIT_FIELD_OPTIONS_MAX_BYTES | シリアライズしたフィールドオプションの最大バイト数 | 262144 | - | 262144 |
| TABLE_LIMIT_SELECT_CHOICES_MAX | 選択フィールド1つあたりの選択肢の最大数 | 1000 | - | 1000 |
| TABLE_LIMIT_SELECT_CHOICE_NAME_MAX_LENGTH | 選択肢名の最大文字数 | 1000 | - | 1000 |
| TABLE_LIMIT_SELECT_DEFAULT_VALUES_MAX | 選択フィールドのデフォルト値の最大数 | 100 | - | 100 |
| TABLE_LIMIT_CELL_VALUE_MAX_BYTES | セル値の最大バイト数 | 262144 | - | 262144 |
| TABLE_LIMIT_RECORD_FIELDS_MAX_BYTES | シリアライズしたレコードフィールドの最大バイト数 | 1048576 | - | 1048576 |
| TABLE_LIMIT_RECORDS_PER_MUTATION_MAX | 1回の変更操作あたりの最大レコード数 | 20000 | - | 20000 |
| TABLE_LIMIT_COMPUTED_CELL_VALUE_MAX_BYTES | 計算セル値の最大バイト数 | 262144 | - | 262144 |
| TABLE_LIMIT_FORMULA_MAX_LENGTH | 数式の最大文字数 | 8192 | - | 8192 |
| TABLE_LIMIT_TABLES_PER_BASE_MAX | 1ベースあたりのテーブルの最大数 | 1000 | - | 1000 |
| TABLE_LIMIT_FIELDS_PER_TABLE_MAX | 1テーブルあたりのフィールドの最大数 | 500 | - | 500 |
| TABLE_LIMIT_VIEWS_PER_TABLE_MAX | 1テーブルあたりのビューの最大数 | 100 | - | 100 |
| TABLE_LIMIT_CREATE_TABLE_FIELDS_MAX | テーブル作成時に受け付けるフィールドの最大数 | 1000 | - | 1000 |
| TABLE_LIMIT_CREATE_TABLE_VIEWS_MAX | テーブル作成時に受け付けるビューの最大数 | 20 | - | 20 |
| TABLE_LIMIT_CREATE_TABLE_RECORDS_MAX | テーブル作成時に受け付けるレコードの最大数 | 20000 | - | 20000 |
| TABLE_LIMIT_RECORDS_PER_TABLE_MAX | 1テーブルあたりの最大行数。空の場合、インスタンス単位の行数制限はありません | - | - | 1000000 |
| TABLE_LIMIT_VIEW_FILTER_ITEMS_MAX | ビュー内のフィルター項目の最大数 | 100 | - | 100 |
| TABLE_LIMIT_VIEW_FILTER_DEPTH_MAX | ビュー内で入れ子にできるフィルターの最大階層 | 5 | - | 5 |
| TABLE_LIMIT_VIEW_SORT_ITEMS_MAX | ビュー内の並べ替え項目の最大数 | 20 | - | 20 |
| TABLE_LIMIT_VIEW_GROUP_ITEMS_MAX | ビュー内のグループ項目の最大数 | 3 | - | 3 |
| TABLE_LIMIT_VIEW_OPTIONS_MAX_BYTES | シリアライズしたビューオプションの最大バイト数 | 262144 | - | 262144 |
| TABLE_LIMIT_NAME_MAX_LENGTH | 対応するテーブルオブジェクトの表示名の最大文字数 | 100 | - | 100 |
| TABLE_LIMIT_DESCRIPTION_MAX_LENGTH | 対応するテーブルオブジェクトの説明の最大文字数 | 2000 | - | 2000 |
| AUTOMATION_MIN_SCHEDULED_MINUTES_INTERVAL | 「分」単位の頻度でスケジュール済みトリガーが使用できる最短間隔(分)。60を超える値に設定すると、分単位のスケジュールを無効にします | 10 | - | 15 |
| AUTOMATION_MIN_EMAIL_POLL_INTERVAL_MINUTES | メールトリガーが使用できるメールボックスの最短ポーリング間隔(分) | 10 | - | 15 |
| AIとアプリビルダー(ランタイムプレーン接続) | ||||
| SANDBOX_PROVIDER | AIセッション用のサンドボックスプロバイダー。opensandbox はセルフホストのランタイムプレーンへ接続します | - | - | opensandbox |
| TEABLE_INFRA_API_URL | ランタイムプレーンの入口URL。内部サービスのアドレスではなく、公開された入口を指定する必要があります(/v1 をサンドボックスエンジンへ振り分けます) | - | - | https://infra.teable.example.com |
| TEABLE_INFRA_API_KEY | ランタイムプレーンと共有するAPIキー | - | - | your-infra-api-key |
| TEABLE_INFRA_BUCKET | AIワークスペースのデータプレーン用バケット | teable-agent | - | teable-agent |
| SANDBOX_OPENSANDBOX_IMAGE | サンドボックスエージェントのイメージプレフィックス(タグなし)。エージェントが常にアプリのバージョンと一致するよう、Teable が独自のリリースタグを追加します。中国でのデプロイでは Aliyun ミラーのプレフィックスを使用します | - | - | ghcr.io/teableio/teable-sandbox-agent |
| SANDBOX_OPENSANDBOX_RUNTIME | サンドボックスエンジンのランタイムの種類:kubernetes または docker。Docker 環境では docker にする必要があります | kubernetes | - | docker |
| SANDBOX_OPENSANDBOX_USE_SERVER_PROXY | ポートごとのサブドメインではなく、エンジンのパスベースプロキシを介してサンドボックスのエンドポイントをルーティングします(Docker のローカルモードで使用) | false | - | true |
| APP_DEPLOY_PROVIDER | アプリビルダーのデプロイバックエンド。フル機能のセルフホストでは docker-runtime を使用します | vercel | - | docker-runtime |
| SANDBOX_JWT_SECRET | サンドボックスセッションに署名するシークレット。ホストごとにランダム値を生成し、サンドボックスサービスでも同じ値を使用します | - | はい | ランダム文字列 |
| SANDBOX_CPU | サンドボックス1つあたりの vCPU 数(システム管理の設定が優先されます) | 2 | - | 2 |
| SANDBOX_MEMORY | サンドボックス1つあたりのメモリ(GiB。システム管理の設定が優先されます) | 4 | - | 4 |
| SANDBOX_DISK | サンドボックス1つあたりの一時ディスク(GiB。システム管理の設定が優先されます) | 15 | - | 15 |
| 機能の切り替え | ||||
| RECORD_HISTORY_DISABLED | レコード履歴を無効にするかどうか。デフォルトは false です | false | - | true |
| BACKEND_STORAGE_COLD_ARCHIVE_DISABLED | 履歴データのスケジュール済みアーカイブを停止するかどうか。アーカイブ済みデータは引き続き読み取れます | false | - | true |
| PASSWORD_LOGIN_DISABLED | パスワードログインを無効にするかどうか(OAuth と OIDC は引き続き利用できます) | false | - | true |
| 分析と監視 | ||||
| MICROSOFT_CLARITY_ID | Microsoft Clarity の分析を有効にするための Microsoft Clarity メトリクスID | - | - | your-metrics-id |
| OTEL_EXPORTER_OTLP_ENDPOINT | OpenTelemetry OTLP エンドポイント | - | - | http://jaeger:4317 |
| TELEMETRY_REPORT_DISABLED | 接続されたインスタンスからのライセンス遵守レポートを含む、セルフホスト版のテレメトリーレポートを無効にします | false | - | true |
| データベース設定 | ||||
| PRISMA_DATABASE_URL | データベース接続URL。設定が必須です | - | はい | postgresql://teable:teable@127.0.0.1:5432/teable |
| PUBLIC_DATABASE_PROXY | ベースの「データベース接続」パネルで生成される認証情報に使用する、外部からアクセス可能なデータベースアドレス(host:port)。外部からの読み取り専用 SQL アクセスを有効にするには設定してください | - | - | db.example.com:42345 |
| PRISMA_TRANSACTION_TIMEOUT | トランザクションがタイムアウトするまで実行できる最大時間(ミリ秒)。長時間のトランザクション(多数の外部キーを伴う一括更新など)では値を増やしてください | 5000 | - | 60000 |
| PRISMA_TRANSACTION_MAX_WAIT | プールからトランザクションを取得するまでの最大待機時間(ミリ秒) | 2000 | - | 5000 |
| BIG_TRANSACTION_TIMEOUT | 大規模なベースのエクスポートなど、大きな内部トランザクションのタイムアウト(ミリ秒) | 600000 | - | 1200000 |
シークレットとローテーション
上記でシークレットとされている値はすべて、ご自身の設定から指定してください。サーバーは起動時に一度確認しますが、シークレットがなくても起動は阻止されません。Teable は旧バージョンに組み込まれていたデフォルト値を代わりに使用し、不足している変数をログへ記録して起動します。これらの組み込み値は公開されているため、誰でもトークンを偽造したり、その値で保護されたデータを復号したりできます。ローカルで簡単に試す用途には問題ありませんが、それ以外では安全ではありません。 既存のデプロイをアップグレードする場合。 これらの変数なしで稼働していたインスタンスは、暗黙的に以前の組み込み値を使用しており、現在もその状態です。起動時の警告には、現在のセッション、トークン、暗号化データを維持するために追加すべき正確なブロックが表示されます。そのままコピーして再起動し、その後ローテーションを計画してください。設定形式で必要な場合は、値に含まれる$ をエスケープしてください。
新しいデプロイの場合。 代わりに新しい値を生成します。
openssl rand -base64 32
openssl rand -hex 8 を、16文字の *_ENCRYPTION_KEY と *_ENCRYPTION_IV の項目に使用します。
シークレットに、以前使用されていた公開済みのデフォルト値を明示的に設定した場合も、起動ログに警告が表示されます。データへアクセスできる状態を保つためにインスタンスは稼働を続けますが、誰でもトークンを偽造したり、その値で保護されたデータを復号したりできます。値をローテーションしてください。

