| Umgebungsvariable | Beschreibung | Standardwert | Erforderlich | Beispiel |
|---|---|---|---|---|
| Kernkonfiguration | ||||
| PUBLIC_ORIGIN | Öffentliche Origin zum Erzeugen vollständiger URLs; muss auf die Zugriffsadresse Ihrer Anwendung gesetzt werden | - | Ja | https://app.teable.ai |
| SECRET_KEY | Stammschlüssel für JWTs, Sitzungen und Freigaben. Generieren Sie einen starken Zufallswert | - | Ja | openssl rand -base64 32 |
| BACKEND_JWT_SECRET | Signiert Authentifizierungs-, Freigabe- und Plugin-JWTs. Fällt auf SECRET_KEY zurück | SECRET_KEY | - | openssl rand -base64 32 |
| BACKEND_SESSION_SECRET | Signiert Login-Sitzungscookies. Fällt auf SECRET_KEY zurück | SECRET_KEY | - | openssl rand -base64 32 |
| BACKEND_STORAGE_ENCRYPTION_KEY | Verschlüsselt Zugriffstoken für Anhänge. Erforderlich, wenn BACKEND_STORAGE_PROVIDER local ist | - | Ja | 16-stellige Zufallszeichenfolge |
| BACKEND_STORAGE_ENCRYPTION_IV | Mit BACKEND_STORAGE_ENCRYPTION_KEY verknüpfter Verschlüsselungs-IV | - | Ja | 16-stellige Zufallszeichenfolge |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY | Verschlüsselt persönliche Zugriffstoken | - | Ja | 16-stellige Zufallszeichenfolge |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_IV | Mit BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY verknüpfter Verschlüsselungs-IV | - | Ja | 16-stellige Zufallszeichenfolge |
| PORT | Port, auf dem die Anwendung ausgeführt wird | 3000 | - | 3000 |
| LOG_LEVEL | Protokollstufe, Optionen: fatal, error, warn, info, debug, trace | info | - | debug |
| Speicherkonfiguration | ||||
| BACKEND_STORAGE_PROVIDER | Speicheranbieter, Optionen: local, minio, s3, aliyun | local | - | s3 |
| BACKEND_STORAGE_LOCAL_PATH | Lokaler Speicherpfad | .assets/uploads | - | .assets/uploads |
| BACKEND_STORAGE_PUBLIC_BUCKET | Name des öffentlichen Buckets | public | - | teable-public |
| BACKEND_STORAGE_PRIVATE_BUCKET | Name des privaten Buckets für Anhänge, App-Dateien, archivierte Daten und andere geschützte Inhalte | private | - | teable-private |
| BACKEND_STORAGE_PUBLIC_URL | Überschreibung der öffentlichen URL für den öffentlichen Bucket (optional) | - | - | https://cdn.example.com |
| BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT | Überschreibung des Endpunkts für den privaten Bucket (optional) | - | - | https://private-bucket.endpoint |
| BACKEND_STORAGE_S3_REGION | S3-Speicherregion; erforderlich, wenn BACKEND_STORAGE_PROVIDER s3 ist | - | - | us-east-2 |
| BACKEND_STORAGE_S3_ENDPOINT | S3-Speicherendpunkt; erforderlich, wenn BACKEND_STORAGE_PROVIDER s3 ist | - | - | https://s3.us-east-2.amazonaws.com |
| BACKEND_STORAGE_S3_INTERNAL_ENDPOINT | Interner S3-Endpunkt (optional) | - | - | http://s3.internal |
| BACKEND_STORAGE_S3_FORCE_PATH_STYLE | Pfadbasierte URLs (endpoint/bucket/key) für browserseitige S3-Anfragen verwenden. Aktivieren Sie dies, wenn der öffentliche Endpunkt keine Bucket-Subdomains bereitstellen kann. Kann nicht mit BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT kombiniert werden | false | - | true |
| BACKEND_STORAGE_S3_INTERNAL_FORCE_PATH_STYLE | Pfadbasierte Adressierung für interne S3-Anfragen überschreiben. Wenn nicht gesetzt, übernimmt sie die öffentliche Einstellung, wenn beide Clients einen Endpunkt verwenden; ein separater interner Endpunkt verwendet virtuelle Hostadressierung | - | - | true |
| BACKEND_STORAGE_S3_ACCESS_KEY | S3-Speicherzugriffsschlüssel; erforderlich, wenn BACKEND_STORAGE_PROVIDER s3 ist | - | - | your_access_key |
| BACKEND_STORAGE_S3_SECRET_KEY | S3-Speichergeheimschlüssel; erforderlich, wenn BACKEND_STORAGE_PROVIDER s3 ist | - | - | your_secret_key |
| BACKEND_STORAGE_S3_MAX_SOCKETS | Maximale Anzahl S3-Sockets (optional) | 100 | - | 100 |
| BACKEND_STORAGE_MINIO_ENDPOINT | MinIO-Speicherendpunkt | - | - | minio.example.com |
| BACKEND_STORAGE_MINIO_PORT | MinIO-Port | 9000 | - | 443 |
| BACKEND_STORAGE_MINIO_USE_SSL | Ob MinIO SSL verwendet | false | - | true |
| BACKEND_STORAGE_MINIO_ACCESS_KEY | MinIO-Zugriffsschlüssel | - | - | access-key |
| BACKEND_STORAGE_MINIO_SECRET_KEY | MinIO-Geheimschlüssel | - | - | secret-key |
| BACKEND_STORAGE_MINIO_INTERNAL_ENDPOINT | Interner MinIO-Endpunkt (optional, kein HTTPS) | - | - | minio.internal |
| BACKEND_STORAGE_MINIO_INTERNAL_PORT | Interner MinIO-Port (optional) | 9000 | - | 9000 |
| BACKEND_STORAGE_MINIO_REGION | MinIO-Region (optional) | - | - | us-east-1 |
| BACKEND_STORAGE_UPLOAD_METHOD | Upload-Methode | put | - | put |
| STORAGE_PREFIX | Speicherpräfix; standardmäßig PUBLIC_ORIGIN | PUBLIC_ORIGIN | - | http://localhost:3000 |
| Cache-Konfiguration | ||||
| BACKEND_CACHE_PROVIDER | Cache-Anbieter, Optionen: sqlite, memory, redis | sqlite | - | redis |
| BACKEND_CACHE_REDIS_URI | Erforderliche Redis-Verbindungs-URI für die Bereitstellung berechneter Aufgaben; wird auch für den Cache verwendet, wenn BACKEND_CACHE_PROVIDER redis ist | - | Ja | redis://default:teable@127.0.0.1:6379/0 |
| Leistungs-Cache-Konfiguration | ||||
| BACKEND_PERFORMANCE_CACHE | Redis-URL des Leistungs-Cache für das Zwischenspeichern von Abfrageergebnissen; verbessert die Effizienz der Zusammenarbeit mehrerer Benutzer. Es wird empfohlen, eine separate Redis-Instanz von BACKEND_CACHE_REDIS_URI zu verwenden | - | - | redis://default:teable@127.0.0.1:6379/0 |
| Authentifizierungskonfiguration | ||||
| SOCIAL_AUTH_PROVIDERS | Liste sozialer Authentifizierungsanbieter, durch Kommas getrennt | - | - | github,google,oidc |
| BACKEND_GITHUB_CLIENT_ID | GitHub-OAuth-Client-ID | - | - | github_client_id |
| BACKEND_GITHUB_CLIENT_SECRET | GitHub-OAuth-Client-Secret | - | - | github_client_secret |
| BACKEND_GOOGLE_CLIENT_ID | Google-OAuth-Client-ID | - | - | google_client_id |
| BACKEND_GOOGLE_CLIENT_SECRET | Google-OAuth-Client-Secret | - | - | google_client_secret |
| BACKEND_OIDC_CLIENT_ID | OIDC-Client-ID | - | - | google_client_id |
| BACKEND_OIDC_CLIENT_SECRET | OIDC-Client-Secret | - | - | google_client_secret |
| BACKEND_OIDC_CALLBACK_URL | OIDC-Callback-URL | - | - | https://app.teable.ai/api/auth/oidc/callback |
| Sicherheit & Verifizierung | ||||
| TURNSTILE_SITE_KEY | Cloudflare-Turnstile-Websiteschlüssel für die Authentifizierungsverifizierung | - | - | 1x00000000000000000000AA |
| TURNSTILE_SECRET_KEY | Cloudflare-Turnstile-Geheimschlüssel für die Authentifizierungsverifizierung | - | - | 1x0000000000000000000000000000000AA |
| TEABLE_SSRF_PROTECTION_DISABLED | Deaktiviert den Schutz, der ausgehende Anfragen an Loopback-, private, linklokale und andere reservierte Netzwerkadressen blockiert. Nur in vertrauenswürdigen Self-hosted-Bereitstellungen auf true setzen, die auf interne Endpunkte zugreifen müssen | false | - | true |
| BACKEND_SIGNUP_VERIFICATION_CODE_RATE_LIMIT_SECONDS | Ratenbegrenzungsintervall (Sekunden) zum Senden von Registrierungsbestätigungs-E-Mails | - | - | 30 |
| BACKEND_TRUST_PROXY | Einstellung für vertrauenswürdige Reverse Proxys zur Auflösung der Client-IP hinter einem Proxy. Beeinflusst Audit-Protokolle und zugehörige Sicherheitsdatensätze. Akzeptiert true, false, eine Hop-Anzahl oder eine IP/CIDR-/Voreinstellungsliste. Leer vertraut Proxys im privaten Netzwerk | loopback, linklocal, uniquelocal | - | loopback, linklocal, uniquelocal |
| E-Mail-Konfiguration (veraltet – verwenden Sie Admin Panel > Instanzeinstellungen > E-Mail) | ||||
| BACKEND_MAIL_HOST | Standard-Mailserveradresse. Wir empfehlen, Benachrichtigungs-E-Mail und Automatisierungs-E-Mail visuell in Admin Panel > Instanzeinstellungen > E-Mail zu konfigurieren | smtp.teable.ai | - | smtp.gmail.com |
| BACKEND_MAIL_PORT | Standard-Mailserverport | 465 | - | 465 |
| BACKEND_MAIL_SECURE | Ob der Standard-Maildienst SSL/TLS verwendet | true | - | true |
| BACKEND_MAIL_SENDER | Standard-Absenderadresse | noreply.teable.ai | - | noreply@company.com |
| BACKEND_MAIL_SENDER_NAME | Standard-Absendername | Teable | - | Teable |
| BACKEND_MAIL_AUTH_USER | Standardbenutzername für die Mailserverauthentifizierung | - | - | username |
| BACKEND_MAIL_AUTH_PASS | Standardpasswort für die Mailserverauthentifizierung | - | - | usertoken |
| BACKEND_MAIL_INVITE_USER_NAME_MAX_LENGTH | Maximale Länge des Einladendennamens in Betreffzeilen von Einladungs-E-Mails. Leer oder 0 deaktiviert das Kürzen | - | - | 32 |
| BACKEND_MAIL_INVITE_SPACE_NAME_MAX_LENGTH | Maximale Länge des Space- oder Base-Namens in Betreffzeilen von Einladungs-E-Mails. Leer oder 0 deaktiviert das Kürzen | - | - | 32 |
| Sitzungs-/JWT-Konfiguration | ||||
| BACKEND_SESSION_EXPIRES_IN | Ablaufzeit der Sitzung | 7d | - | 7d |
| BACKEND_SESSION_COOKIE_SECURE | Ob das Sitzungscookie abgesichert wird | false | - | true |
| BACKEND_SESSION_ORIGIN_CHECK_ENABLED | Origin- und Fetch-Metadata-Prüfungen für unsichere API-Anfragen von Browser-Sitzungscookies aktivieren. Nur aktivieren, wenn Ihr Reverse Proxy oder CDN diese Header beibehält | false | - | false |
| BACKEND_JWT_EXPIRES_IN | JWT-Ablaufzeit | 20d | - | 20d |
| BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | Ablaufzeit der E-Mail zum Zurücksetzen des Passworts | 30m | - | 30m |
| Ressourcenlimits | ||||
| MAX_COPY_CELLS | Maximale Anzahl von Zellen, die in einer einzelnen Anfrage kopiert werden | - | - | 50000 |
| MAX_READ_ROWS | Maximale Anzahl von Zeilen, die in einer einzelnen Anfrage gelesen werden | - | - | 10000 |
| MAX_ATTACHMENT_UPLOAD_SIZE | Maximale Uploadgröße für Anhänge (Bytes) | - | - | 2147483648 |
| TASK_MAX_FIELDS_PER_BATCH | Maximale Anzahl von KI-Feldern, die in einer Batch-Anfrage an das Modell gesendet werden. Werte werden auf 1 bis 20 begrenzt | 5 | - | 5 |
| TASK_MAX_CONCURRENCY | Maximale Anzahl ausstehender KI-Feldaufgaben, die in einem Planungszyklus ausgelöst werden. Werte werden auf 1 bis 20 begrenzt | 5 | - | 5 |
| TABLE_LIMIT_FIELD_OPTIONS_MAX_BYTES | Maximale Anzahl serialisierter Bytes für Feldoptionen | 262144 | - | 262144 |
| TABLE_LIMIT_SELECT_CHOICES_MAX | Maximale Anzahl von Auswahloptionen pro Auswahlfeld | 1000 | - | 1000 |
| TABLE_LIMIT_SELECT_CHOICE_NAME_MAX_LENGTH | Maximale Länge des Namens einer Auswahloption | 1000 | - | 1000 |
| TABLE_LIMIT_SELECT_DEFAULT_VALUES_MAX | Maximale Anzahl standardmäßiger Auswahlwerte | 100 | - | 100 |
| TABLE_LIMIT_CELL_VALUE_MAX_BYTES | Maximale Anzahl von Bytes eines Zellenwerts | 262144 | - | 262144 |
| TABLE_LIMIT_RECORD_FIELDS_MAX_BYTES | Maximale Anzahl serialisierter Bytes für Datensatzfelder | 1048576 | - | 1048576 |
| TABLE_LIMIT_RECORDS_PER_MUTATION_MAX | Maximale Anzahl von Datensätzen pro Mutation | 20000 | - | 20000 |
| TABLE_LIMIT_COMPUTED_CELL_VALUE_MAX_BYTES | Maximale Anzahl von Bytes eines berechneten Zellenwerts | 262144 | - | 262144 |
| TABLE_LIMIT_FORMULA_MAX_LENGTH | Maximale Formellänge | 8192 | - | 8192 |
| TABLE_LIMIT_TABLES_PER_BASE_MAX | Maximale Anzahl von Tabellen pro Base | 1000 | - | 1000 |
| TABLE_LIMIT_FIELDS_PER_TABLE_MAX | Maximale Anzahl von Feldern pro Tabelle | 500 | - | 500 |
| TABLE_LIMIT_VIEWS_PER_TABLE_MAX | Maximale Anzahl von Ansichten pro Tabelle | 100 | - | 100 |
| TABLE_LIMIT_CREATE_TABLE_FIELDS_MAX | Maximale Anzahl von Feldern beim Erstellen einer Tabelle | 1000 | - | 1000 |
| TABLE_LIMIT_CREATE_TABLE_VIEWS_MAX | Maximale Anzahl von Ansichten beim Erstellen einer Tabelle | 20 | - | 20 |
| TABLE_LIMIT_CREATE_TABLE_RECORDS_MAX | Maximale Anzahl von Datensätzen beim Erstellen einer Tabelle | 20000 | - | 20000 |
| TABLE_LIMIT_RECORDS_PER_TABLE_MAX | Maximale Anzahl von Zeilen pro Tabelle. Leer bedeutet kein Limit auf Instanzebene | - | - | 1000000 |
| TABLE_LIMIT_VIEW_FILTER_ITEMS_MAX | Maximale Anzahl von Filterelementen in einer Ansicht | 100 | - | 100 |
| TABLE_LIMIT_VIEW_FILTER_DEPTH_MAX | Maximale Tiefe verschachtelter Filter in einer Ansicht | 5 | - | 5 |
| TABLE_LIMIT_VIEW_SORT_ITEMS_MAX | Maximale Anzahl von Sortierelementen in einer Ansicht | 20 | - | 20 |
| TABLE_LIMIT_VIEW_GROUP_ITEMS_MAX | Maximale Anzahl von Gruppierungselementen in einer Ansicht | 3 | - | 3 |
| TABLE_LIMIT_VIEW_OPTIONS_MAX_BYTES | Maximale Anzahl serialisierter Bytes für Ansichtsoptionen | 262144 | - | 262144 |
| TABLE_LIMIT_NAME_MAX_LENGTH | Maximale Länge des Anzeigenamens für unterstützte Tabellenobjekte | 100 | - | 100 |
| TABLE_LIMIT_DESCRIPTION_MAX_LENGTH | Maximale Beschreibungslänge für unterstützte Tabellenobjekte | 2000 | - | 2000 |
| AUTOMATION_MIN_SCHEDULED_MINUTES_INTERVAL | Kürzestes Intervall (Minuten), das ein geplanter Trigger mit der Frequenz Minuten verwenden darf. Setzen Sie einen Wert über 60, um minutengenaue Zeitpläne zu deaktivieren | 10 | - | 15 |
| AUTOMATION_MIN_EMAIL_POLL_INTERVAL_MINUTES | Kürzestes Postfachabfrageintervall (Minuten), das ein E-Mail-Trigger verwenden darf | 10 | - | 15 |
| KI & App Builder (Verbindung zur Laufzeitebene) | ||||
| SANDBOX_PROVIDER | Sandbox-Anbieter für KI-Sitzungen; opensandbox verbindet sich mit einer Self-hosted-Laufzeitebene | - | - | opensandbox |
| TEABLE_INFRA_API_URL | Einstieg-URL der Laufzeitebene — muss der öffentliche Einstieg sein (leitet /v1 an die Sandbox-Engine weiter), keine interne Dienstadresse | - | - | https://infra.teable.example.com |
| TEABLE_INFRA_API_KEY | Mit der Laufzeitebene geteilter API-Schlüssel | - | - | your-infra-api-key |
| TEABLE_INFRA_BUCKET | Bucket für die Datenebene des KI-Arbeitsbereichs | teable-agent | - | teable-agent |
| SANDBOX_OPENSANDBOX_IMAGE | Image-Präfix ohne Tag des Sandbox-Agenten — Teable hängt sein eigenes Release-Tag an, damit der Agent immer der App-Version entspricht. Bereitstellungen in China verwenden das Aliyun-Mirror-Präfix | - | - | ghcr.io/teableio/teable-sandbox-agent |
| SANDBOX_OPENSANDBOX_RUNTIME | Laufzeittyp der Sandbox-Engine: kubernetes oder docker. Muss bei Docker-Bereitstellungen docker sein | kubernetes | - | docker |
| SANDBOX_OPENSANDBOX_USE_SERVER_PROXY | Sandbox-Endpunkte über den pfadbasierten Proxy der Engine statt über Subdomains pro Port weiterleiten (wird vom lokalen Docker-Modus verwendet) | false | - | true |
| APP_DEPLOY_PROVIDER | Bereitstellungs-Backend des App Builder; Self-host mit vollem Funktionsumfang verwendet docker-runtime | vercel | - | docker-runtime |
| SANDBOX_JWT_SECRET | Geheimnis zum Signieren von Sandbox-Sitzungen. Generieren Sie einen Zufallswert pro Host und verwenden Sie denselben Wert im Sandbox-Dienst | - | Ja | Zufallszeichenfolge |
| SANDBOX_CPU | vCPUs pro Sandbox (Einstellungen im Admin Panel haben Vorrang) | 2 | - | 2 |
| SANDBOX_MEMORY | Arbeitsspeicher (GiB) pro Sandbox (Einstellungen im Admin Panel haben Vorrang) | 4 | - | 4 |
| SANDBOX_DISK | Flüchtiger Speicher (GiB) pro Sandbox (Einstellungen im Admin Panel haben Vorrang) | 15 | - | 15 |
| Funktionsschalter | ||||
| RECORD_HISTORY_DISABLED | Ob der Datensatzverlauf deaktiviert werden soll; standardmäßig false | false | - | true |
| BACKEND_STORAGE_COLD_ARCHIVE_DISABLED | Ob die planmäßige Archivierung historischer Daten gestoppt werden soll. Bereits archivierte Daten bleiben lesbar | false | - | true |
| PASSWORD_LOGIN_DISABLED | Ob die Passwortanmeldung deaktiviert werden soll (OAuth und OIDC sind weiterhin verfügbar) | false | - | true |
| Analysen & Überwachung | ||||
| MICROSOFT_CLARITY_ID | Microsoft-Clarity-Metrik-ID zum Aktivieren der Microsoft-Clarity-Analyse | - | - | your-metrics-id |
| OTEL_EXPORTER_OTLP_ENDPOINT | OpenTelemetry-OTLP-Endpunkt | - | - | http://jaeger:4317 |
| TELEMETRY_REPORT_DISABLED | Self-hosted-Telemetrieberichte deaktivieren, einschließlich Berichten zur Lizenzkonformität verbundener Instanzen | false | - | true |
| Datenbankkonfiguration | ||||
| PRISMA_DATABASE_URL | Datenbankverbindungs-URL; muss konfiguriert werden | - | Ja | postgresql://teable:teable@127.0.0.1:5432/teable |
| PUBLIC_DATABASE_PROXY | Extern erreichbare Datenbankadresse (host:port), die in den im Base-Panel „Datenbankverbindung“ erzeugten Anmeldedaten verwendet wird; setzen Sie sie, um externen schreibgeschützten SQL-Zugriff zu aktivieren | - | - | db.example.com:42345 |
| PRISMA_TRANSACTION_TIMEOUT | Maximale Zeit (ms), die eine Transaktion vor dem Timeout ausgeführt werden kann. Für lang laufende Transaktionen erhöhen (z. B. Massenaktualisierungen mit vielen Fremdschlüsseln) | 5000 | - | 60000 |
| PRISMA_TRANSACTION_MAX_WAIT | Maximale Wartezeit (ms), um eine Transaktion aus dem Pool zu beziehen | 2000 | - | 5000 |
| BIG_TRANSACTION_TIMEOUT | Timeout (ms) für große interne Transaktionen, z. B. den Export großer Bases | 600000 | - | 1200000 |
Geheimnisse und Rotation
Jeder oben als Geheimnis markierte Wert sollte aus Ihrer eigenen Konfiguration stammen. Der Server prüft sie einmal beim Start, doch ein fehlendes Geheimnis blockiert den Start nie: Teable verwendet den in älteren Versionen integrierten Standardwert, protokolliert die fehlenden Variablen und startet. Diese integrierten Werte sind öffentlich, sodass jeder Token fälschen oder mit ihnen geschützte Daten entschlüsseln kann. Das ist für einen schnellen lokalen Test in Ordnung und für alles andere unsicher. Aktualisierung einer bestehenden Bereitstellung. Eine Instanz, die ohne diese Variablen lief, verwendete implizit die alten integrierten Werte und tut dies weiterhin. Die Startwarnung gibt den genauen hinzuzufügenden Block aus, damit aktuelle Sitzungen, Token und verschlüsselte Daten weiterhin funktionieren. Kopieren Sie ihn unverändert, starten Sie neu und planen Sie dann eine Rotation. Falls Ihr Konfigurationsformat dies erfordert, denken Sie daran,$ in den Werten zu maskieren.
Neue Bereitstellung. Generieren Sie stattdessen neue Werte:
openssl rand -base64 32
openssl rand -hex 8 für die Slots *_ENCRYPTION_KEY und
*_ENCRYPTION_IV mit 16 Zeichen.
Das Startprotokoll warnt auch, wenn ein Geheimnis explizit auf einen öffentlich bekannten
ehemaligen Standardwert gesetzt ist. Die Instanz läuft weiter, damit Ihre Daten erreichbar
bleiben, doch jeder kann Token fälschen oder mit diesem Wert geschützte Daten entschlüsseln.
Rotieren Sie ihn.

