ChatCRM (Chatwoot) — Документация по развёртыванию
Версия: 1.0
Дата: 2026-02-13
Базовая версия Chatwoot: v4.10.1 (CE)
Лицензия: MIT
1. Обзор архитектуры
Что такое ChatCRM
ChatCRM — это кастомизированная версия Chatwoot (open-source, MIT лицензия), развёрнутая как CRM для EastPay. Приложение предоставляет:
- Омниканальный чат (Telegram, WhatsApp, Email, Live Chat и др.)
- Интеграция с NextBot для AI-агента «Александр»
- Панель операторов для ручного вмешательства в диалоги
- Help Center для базы знаний
- Отчёты и аналитика
Инфраструктура проекта
EastPay-v2-pro (GitHub: SMO-AI/EastPay-v2-pro)
│
├── main branch ──────────────── Netlify
│ ├── apps/admin-panel (React + Supabase)
│ └── apps/website (статический сайт)
│
└── chat-crm branch ─────────── Coolify → VPS Hostinger
└── [полный код Chatwoot] (Ruby on Rails + Vue.js)
Компоненты Chatwoot
| Компонент | Технология | Порт |
|---|---|---|
| Web Server | Ruby on Rails (Puma) | 3000 |
| Workers | Sidekiq (Ruby) | — |
| PostgreSQL | 16+ | 5432 |
| Redis | 7+ | 6379 |
| Frontend | Vue.js 3 + Tailwind | (собирается в Rails) |
2. Установка (Initial Setup)
2.1 Запуск скрипта установки
cd /Users/sergeimod/Documents/Dev/EastPay-v2-pro
./scripts/setup-chatcrm.sh
Скрипт автоматически:
- Клонирует Chatwoot v4.10.1
- Создаёт orphan-ветку
chat-crm - Копирует файлы и настраивает CE-edition
- Делает initial commit
- Возвращает на предыдущую ветку
2.2 Push ветки в GitHub
git push origin chat-crm
3. Настройка Coolify
3.1 Добавление приложения в Coolify
- Открыть Coolify Dashboard
Create New Resource→Application- Выбрать
GitHubкак Source - Настройки:
| Параметр | Значение |
|---|---|
| Repository | SMO-AI/EastPay-v2-pro |
| Branch | chat-crm |
| Build Pack | Docker Compose |
| Docker Compose файл | docker-compose.production.yaml |
| Base Directory | / |
3.2 Environment Variables
Добавить в Coolify → Application → Environment Variables:
# ===== ОБЯЗАТЕЛЬНЫЕ =====
# Rails
SECRET_KEY_BASE=<generate-with-rake-secret>
RAILS_ENV=production
RAILS_LOG_TO_STDOUT=true
# Брендинг
INSTALLATION_NAME=ChatCRM
CHATWOOT_EDITION=ce
# URL приложения
FRONTEND_URL=https://crm.eastpay.com
# PostgreSQL (Coolify может создать автоматически)
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DATABASE=chatwoot_production
POSTGRES_USERNAME=chatwoot
POSTGRES_PASSWORD=<secure-password>
# Redis (Coolify может создать автоматически)
REDIS_URL=redis://redis:6379/0
# ===== EMAIL (SMTP) =====
MAILER_SENDER_EMAIL=crm@eastpay.com
SMTP_ADDRESS=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=crm@eastpay.com
SMTP_PASSWORD=<smtp-password>
SMTP_AUTHENTICATION=plain
SMTP_ENABLE_STARTTLS_AUTO=true
# ===== ОПЦИОНАЛЬНЫЕ =====
# Object Storage (для файлов, аватаров)
ACTIVE_STORAGE_SERVICE=local
# Или S3:
# ACTIVE_STORAGE_SERVICE=amazon
# S3_BUCKET_NAME=chatcrm-storage
# AWS_ACCESS_KEY_ID=...
# AWS_SECRET_ACCESS_KEY=...
# AWS_REGION=us-east-1
# Push Notifications
# VAPID_PUBLIC_KEY=...
# VAPID_PRIVATE_KEY=...
# Sentry (мониторинг ошибок)
# SENTRY_DSN=...
# Telegram Bot Integration (через n8n, НЕ напрямую!)
# Не добавлять TELEGRAM_BOT_TOKEN сюда!
3.3 Генерация SECRET_KEY_BASE
После первого деплоя, зайти в контейнер:
docker exec -it chatcrm-rails-1 bundle exec rake secret
Скопировать результат в SECRET_KEY_BASE.
3.4 Первый запуск базы данных
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
4. Docker Compose (production)
Файл docker-compose.production.yaml уже включён в Chatwoot. Он содержит:
- rails — web server (порт 3000)
- sidekiq — фоновые воркеры
- postgres — база данных
- redis — кэш и очереди
[!NOTE]
Coolify автоматически настраивает reverse proxy (Traefik/Caddy) и SSL. Не нужно вручную настраивать Nginx, если используете Coolify.
5. Обновление ChatCRM
5.1 Обновление базы Chatwoot
Для получения обновлений от upstream Chatwoot:
# На ветке chat-crm
git checkout chat-crm
# Добавить upstream
git remote add chatwoot-upstream https://github.com/chatwoot/chatwoot.git
# Получить обновления
git fetch chatwoot-upstream --tags
# Мерж конкретной версии
git merge v4.11.0 --allow-unrelated-histories
# Решить конфликты, если есть
# ...
# Push
git push origin chat-crm
5.2 Миграции базы данных
После обновления всегда запускать:
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
6. Брендинг: Кастомизация ChatCRM
6.1 Быстрая настройка через ENV
| Переменная | Описание | Значение |
|---|---|---|
INSTALLATION_NAME |
Название в UI | ChatCRM |
BRAND_NAME |
Название бренда | EastPay |
BRAND_URL |
URL бренда | https://eastpay.com |
LOGO_THUMBNAIL |
URL логотипа | https://... |
6.2 Глубокая кастомизация (в коде)
Работа на ветке chat-crm:
git checkout chat-crm
| Что менять | Файлы |
|---|---|
| Логотип в sidebar | app/javascript/dashboard/assets/images/ |
| Логотип на лендинге | public/brand-assets/ |
| Цветовая палитра | tailwind.config.js, app/javascript/shared/assets/stylesheets/ |
| Favicon | public/favicon.ico, public/pwa/ |
| Email шаблоны | app/views/mailer/ |
| О приложении | config/installation_config.yml |
6.3 Отключение Enterprise-only фичей
Установка CHATWOOT_EDITION=ce автоматически отключает:
- Audit Logs
- Agent Customization (premium)
- Custom Roles
- SLA Management
- Priority-based routing
- Advanced automation rules
Эти разделы не будут отображаться в UI.
7. Добавление кастомных разделов
7.1 Dashboard Apps
Chatwoot поддерживает встраивание кастомных приложений:
Settings→Integrations→Dashboard Apps- Указать URL (может быть iframe к admin-panel или отдельный сервис)
7.2 Кастомные API endpoints
Добавить в app/controllers/api/:
# app/controllers/api/v1/custom/eastpay_controller.rb
class Api::V1::Custom::EastpayController < Api::BaseController
def rates
# Кастомная логика
end
end
И маршрут в config/routes.rb:
namespace :api, defaults: { format: 'json' } do
namespace :v1 do
namespace :custom do
resources :eastpay, only: [] do
get :rates, on: :collection
end
end
end
end
7.3 Кастомные разделы в sidebar
Файл: app/javascript/dashboard/routes/index.js
8. Интеграция с NextBot
Подробный план интеграции доступен в:
docs/ai-agent/chatwoot-integration-plan.md
Краткая суммари:
- Chatwoot получает данные через API Inbox (не прямое подключение к TG)
- n8n — оркестратор между NextBot и Chatwoot
- NextBot остаётся единственным подключением к Telegram Bot
9. Команды для разработки
# Переключиться на ChatCRM
git checkout chat-crm
# Локальный запуск (для разработки)
docker compose up
# Запуск Rails console
docker exec -it $(basename $(pwd))-rails-1 \
sh -c 'RAILS_ENV=production bundle exec rails c'
# Просмотр логов
docker compose logs -f rails
docker compose logs -f sidekiq
# Вернуться в основную ветку
git checkout main
10. Workflow разработки
1. git checkout chat-crm
2. Внести изменения
3. git add . && git commit -m "description"
4. git push origin chat-crm
5. Coolify автоматически деплоит
[!IMPORTANT]
Никогда не мержитьchat-crmвmainи наоборот — это orphan ветки с полностью разным кодом!