--- title: Настройка icon: шестерёнка --- # Управление конфигурацией **Устанавливаете впервые?** Следуйте [руководству по установке Docker Compose](/l/ru/developers/self-host/capabilities/docker-compose), чтобы запустить Twenty, затем вернитесь сюда для настройки. Twenty предлагает **два режима конфигурации**, чтобы соответствовать разным потребностям развертывания: **Доступ к панели администратора:** Только пользователи с правами администратора (`canAccessFullAdminPanel: true`) могут получить доступ к интерфейсу конфигурации. ## 1. Конфигурация панели администратора (по умолчанию) ```bash IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # по умолчанию ``` **Большая часть конфигурации происходит через UI** после установки: 1. Получите доступ к вашему экземпляру Twenty (обычно `http://localhost:3000`) 2. Перейдите в **Настройки / Панель администратора / Переменные конфигурации** 3. Настройте интеграции, почту, хранилище и многое другое 4. Изменения вступают в силу немедленно (в течение 15 секунд для многоконтейнерных развертываний) **Многоконтейнерное развертывание:** при использовании конфигурации базы данных (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`) серверные и рабочие контейнеры читают из одной базы данных. Изменения в панели администратора влияют на оба контейнера автоматически, исключая необходимость дублирования переменных среды между контейнерами (за исключением инфраструктурных переменных). **Что вы можете настроить через панель администратора:** * **Аутентификация** - Google/Microsoft OAuth, настройки паролей * **Электронная почта** - настройки SMTP, шаблоны, верификация * **Хранилище** - конфигурация S3, пути локального хранения * **Интеграции** - Gmail, Google Calendar, сервисы Microsoft * **Рабочий процесс и Ограничения скорости** - лимиты выполнения, ограничение API * **И многое другое...** ![Переменные конфигурации панели администратора](/images/user-guide/setup/admin-panel-config-variables.png) Каждая переменная документирована с описаниями в вашей панели администратора в **Настройки → Панель администратора → Переменные конфигурации**. Некоторые инфраструктурные настройки, такие как соединения с базой данных (`PG_DATABASE_URL`), URL сервера (`SERVER_URL`) и секреты (`ENCRYPTION_KEY`, `FALLBACK_ENCRYPTION_KEY`), могут быть настроены только через файл `.env`. [Полная техническая ссылка →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts) ## Ключи шифрования Twenty использует два ключа шифрования, задаваемых только через переменные окружения: | Переменная | Назначение | Обязательно | | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | `ENCRYPTION_KEY` | Основной ключ, используемый для шифрования секретов в состоянии покоя (OAuth-токены, переменные приложения, закрытые ключи для подписания, TOTP-секреты, конфиденциальные значения конфигурации). | Да, для новых установок (устаревшие установки могут вместо этого полагаться на `APP_SECRET` — см. ниже) | | `FALLBACK_ENCRYPTION_KEY` | Ключ, используемый только для проверки. Во время ротации установите значение равным *предыдущему* `ENCRYPTION_KEY`, чтобы существующие строки оставались доступными для расшифровки. | Только во время ротации | Для обеспечения обратной совместимости, если `ENCRYPTION_KEY` не задан, Twenty использует `APP_SECRET` для шифрования данных в состоянии покоя — что соответствует устаревшему поведению для более старых развертываний. Для новых установок всегда следует задавать отдельный `ENCRYPTION_KEY`. Генерируйте значения с помощью `openssl rand -base64 32` и храните их в безопасном месте (менеджер секретов, защищённая конфигурация и т. п.). Потеря `ENCRYPTION_KEY` означает потерю доступа ко всем секретам, хранящимся в базе данных. Чтобы выполнить ротацию `ENCRYPTION_KEY` без простоя, см. [руководство по ротации ключей](/l/ru/developers/self-host/capabilities/key-rotation). ## 2. Конфигурация только для среды ```bash IS_CONFIG_VARIABLES_IN_DB_ENABLED=false ``` **Вся конфигурация управляется через файлы `.env`:** 1. Установите `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` в своем `.env` файле 2. Добавьте все переменные конфигурации в ваш файл `.env` 3. Перезапустите контейнеры, чтобы изменения вступили в силу 4. Панель администратора будет показывать текущие значения, но не сможет их изменить ## Режим нескольких рабочих пространств По умолчанию Twenty работает в **режиме одного рабочего пространства** — оптимально для большинства развертываний с самостоятельным размещением, где вашей организации нужен один экземпляр CRM. ### Режим одного рабочего пространства (по умолчанию) ```bash IS_MULTIWORKSPACE_ENABLED=false # default ``` * Одно рабочее пространство на один экземпляр Twenty * Первый пользователь автоматически становится администратором с полными привилегиями (`canImpersonate` и `canAccessFullAdminPanel`) * Новые регистрации отключаются после создания первого рабочего пространства * Простая структура URL: `https://your-domain.com` ### Включение режима нескольких рабочих пространств ```bash IS_MULTIWORKSPACE_ENABLED=true DEFAULT_SUBDOMAIN=app # default value ``` Включите режим нескольких рабочих пространств для развертываний, похожих на SaaS, где нескольким независимым командам нужны собственные рабочие пространства на одном экземпляре Twenty. **Ключевые отличия от режима одного рабочего пространства:** * На одном экземпляре можно создать несколько рабочих пространств * Каждое рабочее пространство получает собственный поддомен (например, `sales.your-domain.com`, `marketing.your-domain.com`) * Пользователи регистрируются и входят на `{DEFAULT_SUBDOMAIN}.your-domain.com` (например, `app.your-domain.com`) * Нет автоматических привилегий администратора — первый пользователь в каждом рабочем пространстве является обычным пользователем * Параметры, специфичные для рабочего пространства, такие как поддомен и пользовательский домен, становятся доступны в настройках рабочего пространства **Параметр только среды:** `IS_MULTIWORKSPACE_ENABLED` можно настроить только через файл `.env`; требуется перезапуск. Его нельзя изменить через панель администратора. ### Настройка DNS для режима нескольких рабочих пространств При использовании режима нескольких рабочих пространств настройте DNS с помощью подстановочной записи, чтобы разрешить динамическое создание поддоменов: ``` *.your-domain.com -> your-server-ip ``` Это включает автоматическую маршрутизацию поддоменов для новых рабочих пространств без ручной настройки DNS. ### Ограничение создания рабочих пространств В режиме нескольких рабочих пространств вы можете ограничить круг пользователей, которые могут создавать новые рабочие пространства: ```bash IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true ``` Если включено, только пользователи с правом `canAccessFullAdminPanel` могут создавать дополнительные рабочие пространства. Пользователи все равно могут создать свое первое рабочее пространство во время первоначальной регистрации. ## Интеграция Gmail и Google Calendar ### Создайте проект в Google Cloud 1. Перейдите в [Google Cloud Console](https://console.cloud.google.com/) 2. Создайте новый проект или выберите существующий 3. Включите следующие API: * [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com) * [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com) * [People API](https://console.cloud.google.com/apis/library/people.googleapis.com) ### Настройте OAuth 1. Перейдите к [Учётные данные](https://console.cloud.google.com/apis/credentials) 2. Создайте OAuth 2.0 Client ID 3. Добавьте эти URI перенаправления: * `https://{your-domain}/auth/google/redirect` (для SSO) * `https://{your-domain}/auth/google-apis/get-access-token` (для интеграций) ### Настройка в Twenty 1. Перейдите в **Настройки → Панель администратора → Переменные конфигурации** 2. Найдите раздел **Google Auth**. 3. Установите эти переменные: * `MESSAGING_PROVIDER_GMAIL_ENABLED=true` * `CALENDAR_PROVIDER_GOOGLE_ENABLED=true` * `AUTH_GOOGLE_CLIENT_ID={client-id}` * `AUTH_GOOGLE_CLIENT_SECRET={client-secret}` * `AUTH_GOOGLE_CALLBACK_URL=https://{your-domain}/auth/google/redirect` * `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token` **Режим только для среды:** если вы установили `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, добавьте эти переменные в свой `.env` файл вместо этого. соответствующий исходный код](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10) * `https://www.googleapis.com/auth/calendar.events` * `https://www.googleapis.com/auth/gmail.readonly` * `https://www.googleapis.com/auth/profile.emails.read` ### Если ваше приложение находится в тестовом режиме Если ваше приложение находится в тестовом режиме, вам потребуется добавить тестовых пользователей в ваш проект. На [экране согласия OAuth](https://console.cloud.google.com/apis/credentials/consent) добавьте тестовых пользователей в раздел "Тестовые пользователи". ## Интеграция Microsoft 365 Пользователи должны иметь [лицензию Microsoft 365](https://admin.microsoft.com/Adminportal/Home), чтобы иметь возможность использовать API Календаря и Сообщений. Они не смогут синхронизировать свою учетную запись в Twenty без нее. ### Создайте проект в Microsoft Azure Вам потребуется создать проект в [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) и получить учетные данные. ### Включите API На консоли Microsoft Azure включите следующие API в "Разрешениях": * Microsoft Graph: Mail.ReadWrite * Microsoft Graph: Mail.Send * Microsoft Graph: Calendars.Read * Microsoft Graph: User.Read * Microsoft Graph: openid * Microsoft Graph: email * Microsoft Graph: profile * Microsoft Graph: offline_access Примечание: «Mail.ReadWrite» и «Mail.Send» обязательны только если вы хотите отправлять письма с использованием наших действий рабочего процесса. Вы можете использовать «Mail.Read», если хотите получать только письма. ### Авторизованные URI перенаправления Вам нужно добавить следующие URI перенаправления в ваш проект: * `https://{your-domain}/auth/microsoft/redirect` если вы хотите использовать Microsoft SSO * `https://{your-domain}/auth/microsoft-apis/get-access-token` ### Настройка в Twenty 1. Перейдите в **Настройки → Панель администратора → Переменные конфигурации** 2. Найдите раздел **Microsoft Auth**. 3. Установите эти переменные: * `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true` * `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true` * `AUTH_MICROSOFT_ENABLED=true` * `AUTH_MICROSOFT_CLIENT_ID={client-id}` * `AUTH_MICROSOFT_CLIENT_SECRET={client-secret}` * `AUTH_MICROSOFT_CALLBACK_URL=https://{your-domain}/auth/microsoft/redirect` * `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token` **Режим только для среды:** если вы установили `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, добавьте эти переменные в свой `.env` файл вместо этого. ### Настройка областей доступа соответствующий исходный код](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9) * 'openid' * 'электронная почта' * 'профиль' * 'offline_access' * 'Mail.ReadWrite' * 'Mail.Send' * 'Calendars.Read' ### Если ваше приложение находится в тестовом режиме Если ваше приложение находится в тестовом режиме, вам потребуется добавить тестовых пользователей в ваш проект. Добавьте тестовых пользователей в раздел "Пользователи и группы". ## Фоновые задания для Календаря и Сообщений После настройки интеграций Gmail, Google Calendar или Microsoft 365, вам необходимо запустить фоновые задания, синхронизирующие данные. Зарегистрируйте следующие повторяющиеся задания в вашем контейнере рабочего: ```bash # из вашего контейнера рабочего yarn command:prod cron:messaging:messages-import yarn command:prod cron:messaging:message-list-fetch yarn command:prod cron:calendar:calendar-event-list-fetch yarn command:prod cron:calendar:calendar-events-import yarn command:prod cron:messaging:ongoing-stale yarn command:prod cron:calendar:ongoing-stale yarn command:prod cron:workflow:automated-cron-trigger ``` ## Конфигурация электронной почты 1. Перейдите в **Настройки → Панель администратора → Переменные конфигурации** 2. Найдите раздел **Электронной почты**. 3. Настройте параметры вашего SMTP: Вам потребуется предоставить [Пароль Приложения](https://support.google.com/accounts/answer/185833). * EMAIL_DRIVER=smtp * EMAIL_SMTP_HOST=smtp.gmail.com * EMAIL_SMTP_PORT=465 * EMAIL_SMTP_USER=gmail_email_address * EMAIL_SMTP_PASSWORD='gmail_app_password' Помните, что если у вас включена двухфакторная аутентификация, вам потребуется предоставить [пароль приложения](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9). * EMAIL_DRIVER=smtp * EMAIL_SMTP_HOST=smtp.office365.com * EMAIL_SMTP_PORT=587 * EMAIL_SMTP_USER=office365_email_address * EMAIL_SMTP_PASSWORD='office365_password' **smtp4dev** - это поддельный SMTP почтовый сервер для разработки и тестирования. * Запустите образ smtp4dev: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev` * Получите доступ к интерфейсу smtp4dev здесь: [http://localhost:8090](http://localhost:8090) * Установите следующие переменные: * EMAIL_DRIVER=smtp * EMAIL_SMTP_HOST=localhost * EMAIL_SMTP_PORT=2525 **Режим только для среды:** если вы установили `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, добавьте эти переменные в свой `.env` файл вместо этого. ## S3 Storage By default, Twenty stores uploaded files on the local filesystem. Для продакшн-развертываний используйте S3 или совместимый с S3 сервис (MinIO, DigitalOcean Spaces и т. д.). чтобы файлы сохранялись при перезапусках контейнеров и были доступны на нескольких экземплярах сервера при масштабировании. Установите `STORAGE_TYPE=S_3` и настройте переменные `STORAGE_S3_*` через админ-панель или `.env`. См. [справочник config-variables.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts) для полного списка переменных S3. При использовании S3 с функциями, зависящими от CORS (например, загрузки файлов в браузере), убедитесь, что в конфигурации CORS вашего бакета разрешен origin фронтенда Twenty. ## Логические функции и интерпретатор кода Twenty поддерживает логические функции для рабочих процессов и интерпретатор кода для анализа данных ИИ. Оба запускают предоставленный пользователем код и требуют явной настройки в целях безопасности. ### Настройки безопасности по умолчанию **В продакшене (NODE_ENV=production):** логические функции и интерпретатор кода по умолчанию — **Отключено**. Если вам нужны эти функции, вы должны явно включить их с помощью `LOGIC_FUNCTION_TYPE` и `CODE_INTERPRETER_TYPE`. **В разработке (NODE_ENV=development):** оба по умолчанию — **LOCAL** для удобства при локальном запуске. **Уведомление о безопасности:** локальный драйвер (`LOGIC_FUNCTION_TYPE=LOCAL` или `CODE_INTERPRETER_TYPE=LOCAL`) выполняет код напрямую на хосте в процессе Node.js без изоляции. Его следует использовать только для доверенного кода в разработке. Для рабочих развёртываний, обрабатывающих недоверенный код, используйте `LOGIC_FUNCTION_TYPE=LAMBDA` или `CODE_INTERPRETER_TYPE=E2B` (с песочницей) либо оставьте их отключёнными. ### Логические функции — доступные драйверы | Драйвер | Переменная окружения | Сценарий использования | Уровень безопасности | | --------- | ------------------------------ | -------------------------------------- | ----------------------------------------- | | Отключено | `LOGIC_FUNCTION_TYPE=DISABLED` | Полностью отключить логические функции | Н/Д | | Локальный | `LOGIC_FUNCTION_TYPE=LOCAL` | Разработка и доверенные среды | Низкий (без изоляции) | | Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Продакшн с недоверенным кодом | Высокий (изоляция на уровне оборудования) | ### Логические функции — рекомендуемая конфигурация **Для разработки:** ```bash LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development ``` **Для продакшна (AWS):** ```bash LOGIC_FUNCTION_TYPE=LAMBDA LOGIC_FUNCTION_LAMBDA_REGION=us-east-1 LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key ``` **Чтобы отключить логические функции:** ```bash LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production ``` ### Интерпретатор кода — доступные драйверы | Драйвер | Переменная окружения | Сценарий использования | Уровень безопасности | | --------- | -------------------------------- | ----------------------------------------------------- | --------------------------------- | | Отключено | `CODE_INTERPRETER_TYPE=DISABLED` | Отключить выполнение кода ИИ | Н/Д | | Локальный | `CODE_INTERPRETER_TYPE=LOCAL` | Только для разработки | Низкий (без изоляции) | | E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Рабочая среда с изолированным исполнением в песочнице | Высокий (изолированная песочница) | При использовании `LOGIC_FUNCTION_TYPE=DISABLED` или `CODE_INTERPRETER_TYPE=DISABLED` любая попытка выполнения вернёт ошибку. Это полезно, если вы хотите запускать Twenty без этих возможностей.