Перейти к основному содержанию

Обзор

Контейнеры Docker предназначены для продакшен-хостинга или саморазмещения. Для участия в разработке см. Локальная настройка.
Это руководство предоставляет пошаговые инструкции по установке и настройке приложения Twenty с помощью Docker Compose. Цель заключается в том, чтобы сделать процесс простым и избежать распространенных ошибок, которые могут привести к сбоям в настройке. Важно: изменяйте только те настройки, которые явно упоминаются в этом руководстве. Изменение других конфигураций может привести к проблемам. См. Настройка переменных окружения для расширенной конфигурации. Все переменные окружения должны быть задекларированы в файле docker-compose.yml на уровне сервера и/или воркера, в зависимости от переменной.

Системные требования

  • ОЗУ: Убедитесь, что в вашей среде не менее 2 ГБ ОЗУ. Недостаток памяти может вызвать сбой процессов.
  • Docker и Docker Compose: убедитесь, что оба установлены и обновлены.

Вариант 1: Скрипт с одной строкой

Установите последнюю стабильную версию Twenty одной командой:
Для установки конкретной версии:
  • VERSION должен быть полным тегом релиза, опубликованным на Docker Hub, например v2.38.1. Псевдонимы, такие как v2 или latest, не принимаются.
  • Соответствующий docker-compose.yml загружается из git-тега twenty/<version>, поэтому релизы, выпущенные до появления этих тегов (v2.9.0 и более ранние), нельзя установить с помощью скрипта.
Чтобы вместо этого получить файлы конфигурации из ветки, например для тестирования неопубликованных изменений:
  • Замените branch-name на ветку, из которой нужно получить docker-compose.yml и .env.example. По умолчанию используется последний выпуск образа, если также не задана переменная VERSION.

Вариант 2: Ручные шаги

Выполните следующие шаги для ручной настройки.

Шаг 1: Настройте файл среды

  1. Создайте файл .env Скопируйте пример файла окружения в новый .env файл в вашем рабочем каталоге:
  2. Сгенерируйте ключ шифрования Выполните следующую команду для генерации уникальной случайной строки:
    Внимание: держите это значение в секрете / не делитесь им. Потеря ENCRYPTION_KEY означает потерю доступа ко всем секретам, хранящимся в базе данных (OAuth-токены, переменные приложения, TOTP-секреты и т. д.).
  3. Обновите файл .env Замените значение плейсхолдера в вашем файле .env на сгенерированный токен:
    См. руководство по ротации ключей для получения инструкций по их ротации без простоя.
  4. Установите пароль для Postgres Обновите значение PG_DATABASE_PASSWORD в файле .env, используя надежный пароль без специальных символов. Пароль вставляется в URL подключения Postgres без кодирования, поэтому такие символы, как @, /, # или %, нарушают строку подключения. Создайте его с помощью:
Переменные, которые docker-compose.yml передает без значения по умолчанию :-, например SERVER_URL и переменные STORAGE_S3_*, поступают на сервер как пустая строка, если они пусты или отсутствуют в .env, и сервер обрабатывает пустую строку как настроенное значение, а не как незаданное. Убедитесь, что для SERVER_URL задано значение, а при STORAGE_TYPE=S_3 задайте все необходимые переменные STORAGE_S3_*: пустое значение STORAGE_S3_NAME нарушает каждую загрузку. Переменные со значением по умолчанию в docker-compose.yml, например части PG_DATABASE_* и REDIS_URL, используют это значение по умолчанию, если они пусты или отсутствуют.

Шаг 2: Получите файл Docker Compose

Скачайте файл docker-compose.yml в ваш рабочий каталог:

Шаг 3: Запустите приложение

Запустите Docker-контейнеры:

Шаг 4: Доступ к приложению

Если вы размещаете twentyCRM на своем компьютере, откройте ваш браузер и перейдите на http://localhost:3000. Если вы размещаете это на сервере, убедитесь, что сервер запущен и что все в порядке с

Конфигурация

Открыть доступ к Twenty из внешней сети

По умолчанию Twenty работает на localhost на порту 3000. Пользовательский интерфейс определяет API из источника самого браузера, поэтому он загружается с любого имени хоста, который обращается к контейнеру, — но всё равно укажите SERVER_URL как ваш публичный URL: сервер использует его для сгенерированных ссылок (email‑сообщений, OAuth‑обратных вызовов) и для определения HTTPS для защищённых cookie.

Понимание SERVER_URL

  • Протокол: используйте http или https в зависимости от вашей настройки.
    • Используйте http, если SSL не настроен.
    • Используйте https, если SSL настроен.
  • Домен/IP: это имя домена или IP-адрес, где ваше приложение доступно.
  • Порт: указывайте номер порта, если вы не используете порты по умолчанию (80 для http, 443 для https).

Требования к SSL

SSL (HTTPS) требуется для правильной работы некоторых функций браузера. Хотя эти функции могут работать во время разработки на локальном компьютере (поскольку браузеры обрабатывают localhost иначе), правильная настройка SSL необходима при размещении Twenty на регулярном домене. Например, API буфера обмена может потребовать защищенный контекст - некоторые функции, такие как кнопки копирования в приложении, могут не работать без включения HTTPS. Мы настоятельно рекомендуем настроить Twenty за обратным прокси-сервером с прекращением SSL для оптимальной безопасности и функциональности.
Прежде чем открывать Twenty для доступа из интернета, ознакомьтесь с Защитой вашего экземпляра. Большинство команд могут оставить приложение закрытым и открыть только несколько путей.

Настройка SERVER_URL

  1. Определите ваш URL-адрес доступа
    • Без обратного прокси (Прямой доступ): Если вы получаете доступ к приложению напрямую без использования обратного прокси:
    • С обратным прокси (Стандартные порты): Если вы используете обратный прокси, такой как Nginx или Traefik, и у вас настроен SSL:
    • С обратным прокси (Не стандартные порты): Если вы используете нестандартные порты:
  2. Обновите файл .env Откройте ваш файл .env и обновите SERVER_URL:
    Примеры:
    • Прямой доступ без SSL:
    • Доступ через домен с SSL:
  3. Перезапустите приложение Для применения изменений перезапустите контейнеры Docker:

Рассмотрения

  • Конфигурация обратного прокси: Убедитесь, что ваш обратный прокси передаёт запросы на правильный внутренний порт (3000 по умолчанию). Настройте завершение SSL и все необходимые заголовки.
  • Настройки брандмауэра: Откройте необходимые порты в вашем брандмауэре для обеспечения внешнего доступа.
  • Последовательность: Значение SERVER_URL должно соответствовать тому, как пользователи обращаются к вашему приложению в своих браузерах.

Сохранение данных

  • Тома данных: Конфигурация Docker Compose использует тома для сохранения данных базы данных и хранилища сервера.
  • Среды без состояния: Если развёртывание осуществляется в бесстатном окружении (например, некоторых облачных сервисах), настройте внешнее хранилище для сохранения данных.

Резервное копирование и восстановление

Регулярные резервные копии защищают данные вашей CRM от потери.

Создание резервной копии базы данных

Автоматизируйте ежедневное резервное копирование

Добавьте в свой crontab (crontab -e):

Восстановление из резервной копии

  1. Остановите приложение:
  1. Восстановите базу данных:
  1. Перезапустите службы:

Лучшие практики резервного копирования

  • Регулярно проверяйте восстановление — убедитесь, что резервные копии действительно работают
  • Храните резервные копии вне площадки — используйте облачное хранилище (S3, GCS и т. д.)
  • Шифруйте конфиденциальные данные — защищайте резервные копии с помощью шифрования
  • Храните несколько копий — сохраняйте ежедневные, еженедельные и ежемесячные резервные копии

Устранение неполадок

Если у вас возникли проблемы, проверьте Устранение неполадок для получения решений.

Управляемый хостинг

Не хотите запускать и поддерживать Twenty самостоятельно? Найдите сертифицированного партнёра по хостингу Twenty, который развернёт, разместит и полностью возьмёт на себя управление вашим экземпляром. (Или свяжитесь с нашей командой: contact@twenty.com.)