Обновлено 29 октября 2026 г.
Поддержка

Chatwoot

Chatwoot - чат для сайта и общая очередь обращений на своем сервере: несколько операторов отвечают клиентам, передают диалоги и видят историю; замена чат-части Intercom. Развернули CE v4.19.1 на Fatmetal Cloud Server и проверили сайт и почту.

В Chatwoot CE, в отличие от Intercom, нет лицензионной платы за каждого оператора. Оплачивать сервер и обслуживать установку придется самой команде.

Проверено на версии v4.19.1, 28 октября 2026~11 минут чтенияFatmetal Team

Вердикт

Подходит, если обращения уже теряются между сайтом и общей почтой

Подходит
  • Магазину, где несколько операторов отвечают на вопросы о заказах и передают диалог коллеге.
  • Сервисной команде, которой нужны история писем, внутренние заметки и готовые ответы в одном окне.
Не подходит
  • Поддержке, которая покупает Intercom ради автоматических ответов Fin.
  • Команде, ожидающей приема писем сразу после запуска сервера без настройки почтового ящика.
Тариф: CPU4-RAM8-DISK100Сложность: средняяВремя до первого диалога: 18 минутГлавный риск: почтовые настройки и доставка писем
Задача

Одна очередь вместо отдельных переписок

Посетитель пишет через виджет, оператор отвечает из общей очереди. Диалог можно назначить коллеге, снабдить внутренней заметкой и закрыть после решения вопроса. Следующий оператор видит историю.

Почтовый канал помещает письма туда же. На стенде письмо с вложением появилось через 33 секунды, ответ оператора дошел до отправителя. Для клиента это остается обычной перепиской.

Если нужен Telegram, учтите границу проверки этого канала.

Chatwoot заменяет чат и командную обработку обращений в Intercom. Help Center хранит опубликованные инструкции отдельно от личных сообщений: посетитель читает статью, а поддержка отправляет ссылку.

Русский язык выбирается в настройках профиля и пространства. Перевод частичный: в редакторе базы знаний и отдельных настройках остаются английские подписи. Лицензия бесплатной CE - MIT.

Очередь диалогов, ответственный и редактор ответа
Очередь диалогов, ответственный и редактор ответа. CE v4.19.1, CPU4-RAM8-DISK100.
Сравнение

Сколько стоит общая очередь

У CE нет платы за место оператора. Экономия появляется, когда команда использует общую очередь, но не нуждается в оплачиваемых возможностях конкретного облачного сервиса.

ВариантЦена на 28.10.2026Что оплачивается отдельно
Chatwoot CEЛицензия 0 ₽; сервер 1100 ₽/месПочта, администрирование, резервные копии
Chatwoot Cloud Startups$19 за оператора/месСледующие уровни возможностей
Intercom Essential$29 за место/месFin: $0,99 за результат
Zendesk Suite Team$55 за оператора/мес при годовой оплатеДополнения к выбранному плану

Для пяти операторов Intercom Essential стоит $145 в месяц до дополнительных услуг. Сервер Chatwoot стоит фиксированно, но его обслуживание остается на вашей стороне: это разные статьи расходов.

Zendesk объявлял о приостановке продаж в России и Беларуси. У Intercom перечислены зарубежные способы оплаты; МИР и СБП в документации не перечислены. Прямую оплату из России заранее уточняйте.

Источники цен: Chatwoot, Intercom, Zendesk. Собственный сервер позволяет выбрать место хранения обращений, но сам по себе не делает службу поддержки соответствующей требованиям законодательства.

Архитектура

Что хранится в каждом контейнере

Rails обслуживает интерфейс и API, Sidekiq выполняет фоновые задачи: получение почты и отправку уведомлений. Оба используют один образ приложения и общий том с вложениями.

PostgreSQL 16 хранит пользователей, обращения и сообщения. Официальный Compose использует образ с расширением pgvector. Redis обслуживает очереди задач. Потеря базы или файлового тома означает потерю части переписки.

Caddy принимает HTTPS на портах 80 и 443 и передает запросы Rails. Порт 3000 доступен только с самого сервера; порты базы и Redis тоже привязаны к localhost.

Файл .env содержит пароли и три ключа шифрования Active Record. Сохраняйте его вместе с базой: новый набор ключей при восстановлении не заменит прежний.

Ruby 3.4.4Rails v7.2.3.1Vue.jsPostgreSQL 16Redis 7Sidekiq
Замеры

Какой сервер брать

Для этой инструкции берем Ubuntu 24.04 и CPU4-RAM8-DISK100: четыре процессорных ядра, 8 ГБ памяти и диск 100 ГБ. Подробные требования вендора рекомендуют четыре CPU и 4 ГБ RAM.

Память процессов пяти контейнеров после работы989 МиБ без памяти ОС
Наблюдавшийся максимум при отправке файла 8 МиБ1058 МиБ
Четыре уникальных распакованных образа2,38 ГиБ
Занято на системном диске, включая ОС и swap7,79 ГиБ
Скачивание образов132 секунды
Повторный запуск до ответа приложения45 секунд
Ответ HTML страницы входа180 мс

Один диагностический файл размером 8 МиБ увеличил том вложений на 8 МиБ. Поэтому резервируйте место под присланные документы, а не только под сообщения в PostgreSQL.

От подготовки сервера до ответа посетителю прошло 18 минут, включая настройку и разбор ошибки сертификата. Отведите отдельное время на почтовый канал: его реквизиты не появляются вместе с Chatwoot.

Проверено на версии v4.19.1, 28 октября 2026. На новых версиях результаты могут отличаться.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и файл с доступами.

Рекомендуемая конфигурация:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe от 990 ₽/мес

В маркетплейс →
Установка

Развертывание на Fatmetal Cloud Server

Домен должен разрешаться в публичный адрес сервера. Выполняйте шаги в одной SSH-сессии: переменные и текущий каталог используются в следующих командах.

  1. Установите Docker

    Подключитесь к чистой Ubuntu 24.04 по SSH и выполните sudo -i. Все команды дальше запускаются от root; установим пакеты из репозитория Docker.

    apt-get update && apt-get install -y ca-certificates curl
    install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list
    apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
    echo '/swapfile none swap sw 0 0' >> /etc/fstab
  2. Закрепите CE v4.19.1

    Берем официальный Compose из тега релиза. Замена latest обязательна: иначе при следующем скачивании установится другая версия.

    mkdir -p /opt/chatwoot && cd /opt/chatwoot
    curl -fsSL https://raw.githubusercontent.com/chatwoot/chatwoot/v4.19.1/docker-compose.production.yaml -o docker-compose.yaml
    sed -i 's|chatwoot/chatwoot:latest|chatwoot/chatwoot:v4.19.1-ce|; s|redis:alpine|redis:7-alpine|' docker-compose.yaml
  3. Задайте домен и секреты

    Замените ваш-домен на адрес, чья A-запись указывает на сервер. Откройте входящие 80/443; сохраните все ключи. Саморегистрация отключена, первое создание администратора остается доступным.

    DOMAIN=ваш-домен
    REDIS_PASSWORD=$(openssl rand -hex 24)
    umask 077
    cat > .env <<EOF
    FRONTEND_URL=https://$DOMAIN
    SECRET_KEY_BASE=$(openssl rand -hex 64)
    POSTGRES_HOST=postgres
    POSTGRES_DATABASE=chatwoot_production
    POSTGRES_USERNAME=postgres
    POSTGRES_PASSWORD=$(openssl rand -hex 24)
    REDIS_PASSWORD=$REDIS_PASSWORD
    REDIS_URL=redis://:$REDIS_PASSWORD@redis:6379
    FORCE_SSL=false
    DEFAULT_LOCALE=ru
    ENABLE_ACCOUNT_SIGNUP=false
    ENABLE_PUSH_RELAY_SERVER=false
    ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=$(openssl rand -hex 16)
    ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=$(openssl rand -hex 16)
    ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=$(openssl rand -hex 16)
    EOF
    umask 022
  4. Добавьте HTTPS и пароль PostgreSQL

    Пустой пароль в upstream Compose перекрывает значение из .env. Исправим его отдельным файлом; проверка готовности базы нужна перед созданием таблиц.

    cat > docker-compose.override.yaml <<'EOF'
    services:
      postgres:
        environment:
          POSTGRES_DB: chatwoot_production
          POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres -d chatwoot_production"]
          interval: 5s
          retries: 30
      caddy:
        image: caddy:2-alpine
        restart: unless-stopped
        ports: ["80:80", "443:443"]
        volumes: ["./Caddyfile:/etc/caddy/Caddyfile:ro", "caddy_data:/data"]
    volumes:
      caddy_data:
    EOF
    printf '%s {
      reverse_proxy rails:3000
    }
    ' "$DOMAIN" > Caddyfile
  5. Поднимите сервисы

    Сначала готовим базу штатной задачей Chatwoot, затем запускаем приложение. Сервис base служит шаблоном: отдельный контейнер из него поднимать не нужно.

    docker compose pull
    docker compose up -d --wait postgres redis
    docker compose run --rm rails bundle exec rails db:chatwoot_prepare
    docker compose up -d rails sidekiq caddy
    docker compose ps

Откройте на своем HTTPS-домене страницу /installation/onboarding, задайте имя, организацию, email и пароль администратора. Завершите этот шаг сразу: до первого администратора форма установки доступна по публичному адресу.

После входа заполните профиль пространства, язык и часовой пояс. Адрес сайта редактируется кнопкой с карандашом рядом с полем.

Первый канал

Как принять сообщение и ответить

В настройках откройте «Источники» и добавьте виджет онлайн-чата. Укажите название сайта и его адрес, выберите оператора. Скопируйте предложенный JavaScript на страницы сайта перед закрывающим тегом body.

Откройте сайт как посетитель, начните разговор и отправьте вопрос. В Chatwoot выберите появившийся диалог, напишите ответ и проверьте его в виджете. Назначьте ответственного, чтобы коллега видел, кто ведет обращение.

Свернутый редактор освобождает место для истории диалога
Свернутый редактор освобождает место для истории диалога. CE v4.19.1, CPU4-RAM8-DISK100.

Для почты добавьте источник Email, выберите другого провайдера и откройте дополнительные параметры. В настройках канала включите IMAP: имя сервера, порт 993, SSL, полный адрес ящика и пароль.

Для отправки включите SMTP, укажите сервер, порт 587, STARTTLS и учетные данные почтового провайдера. Выберите проверку сертификата peer. Пригласительные письма самого приложения требуют отдельного системного SMTP.

Отправьте письмо с вложением с другого адреса, дождитесь его в очереди и ответьте из Chatwoot. Получение письма без успешной обратной доставки еще не означает, что канал настроен.

Работа команды

Макросы, поиск и Help Center

Создайте макрос в настройках: добавьте действие отправки сообщения с готовым ответом, затем действие закрытия диалога. Примените его из меню разговора, когда вопрос действительно решен.

Макрос отправляет ответ и закрывает диалог
Макрос отправляет ответ и закрывает диалог. CE v4.19.1, CPU4-RAM8-DISK100.

Help Center создается в разделе базы знаний. Добавьте портал, категорию и статью; переведите ее в опубликованное состояние. Публичная страница открывается посетителю без учетной записи оператора.

Редактор статьи Help Center
Редактор статьи Help Center. CE v4.19.1, CPU4-RAM8-DISK100.

Глобальный поиск переключается между типами результатов. После публикации статья находится по тексту; сообщение из переписки появляется в результатах диалогов. Это удобнее ручного просмотра всех обращений одного клиента.

Поиск по переписке
Поиск по переписке. CE v4.19.1, CPU4-RAM8-DISK100.

Администратор видит сводный отчет и может перейти от показателя к обращениям, из которых он составлен. Так проще разобрать конкретный долгий ответ, а не спорить о средней цифре.

Сводный отчет по обращениям
Сводный отчет по обращениям. CE v4.19.1, CPU4-RAM8-DISK100.
Диагностика

Где может сломаться

Database is uninitialized and superuser password is not specified

PostgreSQL получил пустой пароль из исходного Compose. Добавьте override из инструкции, затем повторите запуск базы. Непустой POSTGRES_PASSWORD в одном .env этого не исправляет.

cd /opt/chatwoot
docker compose up -d --wait postgres redis
docker compose logs --tail=50 postgres
Приложение открывается, а письма не уходят

Параметры исходящего канала задаются отдельно от IMAP. Проверьте SMTP в настройках источника, режим STARTTLS и сертификат peer; затем найдите ошибку фоновой задачи.

cd /opt/chatwoot
docker compose logs --since=10m sidekiq rails
Сертификат не выпущен, в журнале Caddy ответ 429

Центр сертификации ограничил выдачу для домена. Посмотрите Retry-After в журнале и дождитесь указанного срока. Повторная установка приложения не снимает ограничение.

docker compose logs --tail=100 caddy

После изменения Caddyfile через редактор с заменой файла пересоздайте контейнер: прежнее файловое подключение может продолжать читать старое содержимое.

docker compose up -d --force-recreate caddy
Резервная копия

Сохраните базу, вложения и ключи

Остановите прием обращений на время копирования. Эти команды сохраняют согласованную базу, файловый том и настройки, затем возвращают приложение в работу. Каталог backup содержит секреты: храните его закрытым.

cd /opt/chatwoot
umask 077
mkdir -p backup
docker compose stop rails sidekiq
docker compose exec -T postgres pg_dump -U postgres -Fc chatwoot_production > backup/db.dump
tar czf backup/config.tgz .env docker-compose.yaml docker-compose.override.yaml Caddyfile
docker run --rm --entrypoint tar -v chatwoot_storage_data:/data:ro -v "$PWD/backup":/backup redis:7-alpine czf /backup/storage.tgz -C /data .
docker compose start rails sidekiq

Скопируйте весь каталог backup на отдельное хранилище. Копия на том же диске не переживет потерю сервера. Ниже восстановление на установленном стеке: оно заменяет текущую базу.

cd /opt/chatwoot
docker compose stop rails sidekiq
tar xzf backup/config.tgz
docker compose exec -T postgres dropdb -U postgres chatwoot_production
docker compose exec -T postgres createdb -U postgres chatwoot_production
docker compose exec -T postgres pg_restore -U postgres -d chatwoot_production --no-owner --exit-on-error < backup/db.dump
docker run --rm --entrypoint tar -v chatwoot_storage_data:/data -v "$PWD/backup":/backup redis:7-alpine xzf /backup/storage.tgz -C /data
docker compose start rails sidekiq

После восстановления войдите оператором, откройте прежний разговор и скачайте вложение. Сохранение только PostgreSQL оставляет в переписке ссылки на файлы, которых уже нет.

Обновления

Как сменить версию без потери обращений

Сначала сделайте резервную копию предыдущими командами. В docker-compose.yaml замените тег v4.19.1-ce на выбранный выпущенный тег CE. Сохраните .env, включая старые ключи шифрования.

cd /opt/chatwoot
docker compose pull rails sidekiq
docker compose stop rails sidekiq
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
docker compose up -d rails sidekiq caddy

Задача db:chatwoot_prepare выполняет миграции перед запуском новой версии. После обновления проверьте вход оператора, ответ посетителю и доставку почты. Возврат старого образа не отменяет миграцию базы.

Для отката восстановите конфигурацию, базу и вложения из одной копии. Не применяйте db:schema:load к действующей установке: эта команда не заменяет последовательное обновление схемы.

Безопасность

Уязвимости прошлых версий

CE v4.19.1 из этой инструкции содержит исправления перечисленных ошибок. Если установлен затронутый выпуск, сделайте резервную копию и обновитесь по разделу выше. Здесь серьезность взята из бюллетеней.

БюллетеньУровеньЗатронутыИсправленоРиск
CVE-2025-21628Critical>2.16.1, <3.16.03.16.0SQL-инъекция через фильтры
CVE-2026-44706High≥2.2.0, <4.11.24.11.2Доступ к чужим данным через SQL-инъекцию
CVE-2026-44707Medium≥2.14.0, <4.13.04.13.0Сохранение доступа через заранее созданный email
CVE-2026-72719Medium<4.9.04.9.0Обращение к ресурсам другого аккаунта

В v4.19.1 усилили защиту: проверку уведомлений Twilio, очистку CSS и обработку сессионных cookies на публичных страницах. Отдельные CVE и уровни риска для этих изменений в заметках релиза не указаны.

Защита этой установки также зависит от закрытых портов базы, сохранности секретов и своевременного обновления образов.

Ограничения

Когда это НЕ ваш выбор

Вы рассчитываете получить весь Intercom бесплатно

Captain, SLA, SSO и другие возможности платных редакций не входят в бесплатную CE. Для очереди сайта и почты они не нужны; для автоматических ответов придется выбирать другой бюджет.

В документации Telegram заявлен как канал общей очереди; на этом стенде подтверждены сайт и почта, подключение Telegram не проверено.

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

Общая очередь помогает передавать обращения между людьми. Если передавать некому, обслуживание Rails, очередей и базы может стоить дороже простого почтового ящика.

Вы обещаете полностью изолированный контур

Собственный сервер не исключает внешние обращения: интерфейс запрашивает аватары Gravatar. Для закрытой сети потребуется отдельная проверка исходящих соединений и настроек подключенных каналов.

FAQ

Частые вопросы

Можно ли использовать CE в коммерческой поддержке?

Да. Community Edition распространяется по MIT; платные компоненты enterprise имеют отдельную лицензию.

Почему Redis есть даже без бота?

Он обслуживает фоновые задания Sidekiq, включая получение почты. Это часть основного стека поддержки.

Почему после перезагрузки сайта пропала переписка виджета?

Вставляйте JavaScript из настроек источника, а не отдельный iframe. SDK сохраняет идентификатор разговора на родительском сайте; после обновления страницы нажмите продолжение диалога.

Где лежат присланные документы?

В Docker-томе chatwoot_storage_data. База хранит сведения о вложениях; для переноса нужны оба хранилища.

Как понять, что сервер снова запустился?

Запрос curl http://127.0.0.1:3000/api возвращает 200. Затем проверьте вход через свой HTTPS-адрес и реальный ответ посетителю.

Итог

Chatwoot CE подходит для общей поддержки сайта и почты: ответственные, внутренние заметки, макросы и Help Center уже собраны вместе. Первый практический шаг - подключить канал и проверить ответ с обеих сторон.

Рекомендуемая конфигурация для установки:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe

Не хотите устанавливать вручную?

Запустите Chatwoot на этой конфигурации автоматически - от 990 ₽/мес.

Запустить Chatwoot →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU4-RAM8-DISK100. Нашли баг в гайде - напишите, поправим в течение дня.