| Core Configuration | | | | |
| PUBLIC_ORIGIN | Public origin for generating complete URLs, must be set to your app’s access address | - | Yes | https://app.teable.ai |
| SECRET_KEY | Key for JWT, sessions, and sharing, use a strong password | defaultSecretKey | Yes | yourStrongSecretKey |
| PORT | Port on which the application runs | 3000 | - | 3000 |
| LOG_LEVEL | Log level, options: fatal, error, warn, info, debug, trace | info | - | debug |
| NEXT_ENV_IMAGES_ALL_REMOTE | Whether to allow loading third-party images | false | - | true |
| Storage Configuration | | | | |
| BACKEND_STORAGE_PROVIDER | Storage provider, options: local, minio, s3 | local | - | s3 |
| BACKEND_STORAGE_S3_REGION | S3 storage region, required when BACKEND_STORAGE_PROVIDER is s3 | - | - | us-east-2 |
| BACKEND_STORAGE_S3_ENDPOINT | S3 storage endpoint, required when BACKEND_STORAGE_PROVIDER is s3 | - | - | https://s3.us-east-2.amazonaws.com |
| BACKEND_STORAGE_S3_ACCESS_KEY | S3 storage access key, required when BACKEND_STORAGE_PROVIDER is s3 | - | - | your_access_key |
| BACKEND_STORAGE_S3_SECRET_KEY | S3 storage secret key, required when BACKEND_STORAGE_PROVIDER is s3 | - | - | your_secret_key |
| BACKEND_STORAGE_MINIO_ENDPOINT | MinIO storage endpoint | - | - | minio.example.com |
| BACKEND_STORAGE_MINIO_ACCESS_KEY | MinIO access key | - | - | access-key |
| BACKEND_STORAGE_MINIO_SECRET_KEY | MinIO secret key | - | - | secret-key |
| STORAGE_PREFIX | Storage prefix, defaults to PUBLIC_ORIGIN | PUBLIC_ORIGIN | - | http://localhost:3000 |
| Cache Configuration | | | | |
| BACKEND_CACHE_PROVIDER | Cache provider, options: sqlite, memory, redis | memory | - | redis |
| BACKEND_CACHE_REDIS_URI | Redis cache connection URI, required when BACKEND_CACHE_PROVIDER is redis | - | - | redis://default:teable@127.0.0.1:6379/0 |
| Performance Cache Configuration | | | | |
| BACKEND_PERFORMANCE_CACHE | Performance cache Redis URL for query result caching, improves multi-user collaboration efficiency. Recommended to use separate Redis instance from BACKEND_CACHE_REDIS_URI | - | - | redis://default:teable@127.0.0.1:6379/0 |
| Authentication Configuration | | | | |
| SOCIAL_AUTH_PROVIDERS | List of social auth providers, comma-separated | - | - | 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 |
| Security & Verification | | | | |
| TURNSTILE_SITE_KEY | Cloudflare Turnstile site key for authentication verification | - | - | 1x00000000000000000000AA |
| TURNSTILE_SECRET_KEY | Cloudflare Turnstile secret key for authentication verification | - | - | 1x0000000000000000000000000000000AA |
| BACKEND_SIGNUP_VERIFICATION_CODE_RATE_LIMIT_SECONDS | Rate limit interval (seconds) for sending signup verification emails | - | - | 30 |
| Email Configuration (Deprecated - Use Admin Panel Settings) | | | | |
| BACKEND_MAIL_HOST | [DEPRECATED] Email server host. Please use Admin Panel > Settings for visual email configuration | - | - | smtp.gmail.com |
| BACKEND_MAIL_PORT | [DEPRECATED] Email server port. Please use Admin Panel > Settings for visual email configuration | - | - | 465 |
| BACKEND_MAIL_AUTH_USER | [DEPRECATED] Email server authentication username. Please use Admin Panel > Settings for visual email configuration | - | - | username |
| BACKEND_MAIL_AUTH_PASS | [DEPRECATED] Email server authentication password. Please use Admin Panel > Settings for visual email configuration | - | - | usertoken |
| Session/JWT Configuration | | | | |
| BACKEND_SESSION_EXPIRES_IN | Session expiration time | 7d | - | 7d |
| BACKEND_SESSION_COOKIE_SECURE | Whether to secure session cookie | false | - | true |
| BACKEND_JWT_EXPIRES_IN | JWT expiration time | 20d | - | 20d |
| BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | Reset password email expiration time | 30m | - | 30m |
| Resource Limits | | | | |
| MAX_COPY_CELLS | Maximum number of cells to copy in a single request | - | - | 50000 |
| MAX_READ_ROWS | Maximum number of rows to read in a single request | - | - | 10000 |
| MAX_ATTACHMENT_UPLOAD_SIZE | Maximum attachment upload size (bytes) | - | - | 2147483648 |
| Feature Toggles | | | | |
| RECORD_HISTORY_DISABLED | Whether to disable record history, defaults to false | false | - | true |
| PASSWORD_LOGIN_DISABLED | Whether to disable password login (OAuth and OIDC still available) | false | - | true |
| Analytics & Monitoring | | | | |
| MICROSOFT_CLARITY_ID | Microsoft Clarity metrics ID, for enabling Microsoft Clarity analytics | - | - | your-metrics-id |
| OTEL_EXPORTER_OTLP_ENDPOINT | OpenTelemetry OTLP endpoint | - | - | http://jaeger:4317 |
| Database Configuration | | | | |
| PRISMA_DATABASE_URL | Database connection URL, must be configured | - | Yes | postgresql://teable:teable@127.0.0.1:5432/teable |
| PRISMA_TRANSACTION_TIMEOUT | Maximum time (ms) a transaction can run before timing out. Increase for long-running transactions (e.g., bulk updates with many foreign keys) | 5000 | - | 60000 |
| PRISMA_TRANSACTION_MAX_WAIT | Maximum time (ms) to wait to acquire a transaction from the pool | 2000 | - | 5000 |
| Frontend Configuration | | | | |
| NEXT_BUILD_ENV_ASSET_PREFIX | CDN origin URL for frontend static assets. Configure after setting up CDN origin to your site | - | - | https://cdn.mydomain.com |