| Переменная окружения | Описание | Значение по умолчанию | Обязательно | Пример |
|---|---|---|---|---|
| Основная конфигурация | ||||
| PUBLIC_ORIGIN | Публичный 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 | IV шифрования, связанный с BACKEND_STORAGE_ENCRYPTION_KEY | - | Да | Случайная строка из 16 символов |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY | Шифрует персональные токены доступа | - | Да | Случайная строка из 16 символов |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_IV | IV шифрования, связанный с BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY | - | Да | Случайная строка из 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 | Использовать URL в стиле пути (endpoint/bucket/key) для обращений S3 из браузера. Включите, когда публичный эндпоинт не может обслуживать поддомены бакетов. Нельзя использовать вместе с 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 | Требуемый URI подключения Redis для доставки вычисляемых задач; также используется для кэша, когда BACKEND_CACHE_PROVIDER имеет значение redis | - | Да | redis://default:teable@127.0.0.1:6379/0 |
| Конфигурация кэша производительности | ||||
| BACKEND_PERFORMANCE_CACHE | URL Redis для кэша производительности результатов запросов; повышает эффективность совместной работы нескольких пользователей. Рекомендуется использовать отдельный экземпляр Redis от BACKEND_CACHE_REDIS_URI | - | - | redis://default:teable@127.0.0.1:6379/0 |
| Конфигурация аутентификации | ||||
| SOCIAL_AUTH_PROVIDERS | Список провайдеров социальной аутентификации через запятую | - | - | github,google,oidc |
| BACKEND_GITHUB_CLIENT_ID | ID клиента GitHub OAuth | - | - | github_client_id |
| BACKEND_GITHUB_CLIENT_SECRET | Секрет клиента GitHub OAuth | - | - | github_client_secret |
| BACKEND_GOOGLE_CLIENT_ID | ID клиента Google OAuth | - | - | google_client_id |
| BACKEND_GOOGLE_CLIENT_SECRET | Секрет клиента Google OAuth | - | - | google_client_secret |
| BACKEND_OIDC_CLIENT_ID | ID клиента OIDC | - | - | google_client_id |
| BACKEND_OIDC_CLIENT_SECRET | Секрет клиента OIDC | - | - | google_client_secret |
| BACKEND_OIDC_CALLBACK_URL | URL обратного вызова OIDC | - | - | https://app.teable.ai/api/auth/oidc/callback |
| Безопасность и проверка | ||||
| TURNSTILE_SITE_KEY | Ключ сайта Cloudflare Turnstile для проверки аутентификации | - | - | 1x00000000000000000000AA |
| TURNSTILE_SECRET_KEY | Секретный ключ Cloudflare Turnstile для проверки аутентификации | - | - | 1x0000000000000000000000000000000AA |
| TEABLE_SSRF_PROTECTION_DISABLED | Отключить защиту, блокирующую исходящие запросы к loopback, частным, link-local и другим зарезервированным сетевым адресам. Установите 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 | Включить проверки Origin и Fetch Metadata для небезопасных запросов API браузера с cookie сеанса. Включайте, только если ваш обратный прокси или CDN сохраняет эти заголовки | false | - | false |
| BACKEND_JWT_EXPIRES_IN | Время истечения JWT | 20d | - | 20d |
| BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | Время истечения письма для сброса пароля | 30m | - | 30m |
| Ограничения ресурсов | ||||
| MAX_COPY_CELLS | Максимальное число ячеек для копирования в одном запросе | - | - | 50000 |
| MAX_READ_ROWS | Максимальное число строк для чтения в одном запросе | - | - | 10000 |
| MAX_ATTACHMENT_UPLOAD_SIZE | Максимальный размер загружаемого вложения (в байтах) | - | - | 2147483648 |
| TASK_MAX_FIELDS_PER_BATCH | Максимальное число Полей ИИ, отправляемых модели в одном пакетном запросе. Значения ограничиваются диапазоном от 1 до 20 | 5 | - | 5 |
| TASK_MAX_CONCURRENCY | Максимальное число ожидающих запусков задач Полей ИИ, отправляемых в одном цикле планирования. Значения ограничиваются диапазоном от 1 до 20 | 5 | - | 5 |
| TABLE_LIMIT_FIELD_OPTIONS_MAX_BYTES | Максимальный размер сериализованных параметров Поля в байтах | 262144 | - | 262144 |
| TABLE_LIMIT_SELECT_CHOICES_MAX | Максимальное число вариантов выбора в Поле выбора | 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 | Максимальное число Записей на мутацию | 20000 | - | 20000 |
| TABLE_LIMIT_COMPUTED_CELL_VALUE_MAX_BYTES | Максимальный размер вычисленного значения ячейки в байтах | 262144 | - | 262144 |
| TABLE_LIMIT_FORMULA_MAX_LENGTH | Максимальная длина формулы | 8192 | - | 8192 |
| TABLE_LIMIT_TABLES_PER_BASE_MAX | Максимальное число Таблиц в Базе | 1000 | - | 1000 |
| TABLE_LIMIT_FIELDS_PER_TABLE_MAX | Максимальное число Полей в Таблице | 500 | - | 500 |
| TABLE_LIMIT_VIEWS_PER_TABLE_MAX | Максимальное число Представлений в Таблице | 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 | Максимальное число строк в Таблице. Пустое значение означает отсутствие ограничения строк на уровне экземпляра | - | - | 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 |
| ИИ и Конструктор приложений (подключение к плоскости выполнения) | ||||
| SANDBOX_PROVIDER | Провайдер песочницы для сеансов ИИ; 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 | Бакет для плоскости данных рабочего пространства ИИ | 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 | vCPU на песочницу (настройки панели администрирования имеют приоритет) | 2 | - | 2 |
| SANDBOX_MEMORY | Память (ГиБ) на песочницу (настройки панели администрирования имеют приоритет) | 4 | - | 4 |
| SANDBOX_DISK | Временный диск (ГиБ) на песочницу (настройки панели администрирования имеют приоритет) | 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 | ID метрик Microsoft Clarity для включения аналитики Microsoft Clarity | - | - | 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 | Внешне доступный адрес базы данных (хост:порт), используемый в учётных данных, созданных панелью Базы «Подключение к базе данных»; задайте его, чтобы включить внешний 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.
Журнал запуска также предупреждает, если для секрета явно задано общедоступное
прежнее значение по умолчанию. Экземпляр продолжает работать, чтобы ваши данные оставались доступны, но
любой может подделать токены или расшифровать данные, защищённые этим значением. Выполните ротацию.

