ChatCRM (Chatwoot) — Документация по развёртыванию

Версия: 1.0
Дата: 2026-02-13
Базовая версия Chatwoot: v4.10.1 (CE)
Лицензия: MIT


1. Обзор архитектуры

Что такое ChatCRM

ChatCRM — это кастомизированная версия Chatwoot (open-source, MIT лицензия), развёрнутая как CRM для EastPay. Приложение предоставляет:

Инфраструктура проекта

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

Скрипт автоматически:

  1. Клонирует Chatwoot v4.10.1
  2. Создаёт orphan-ветку chat-crm
  3. Копирует файлы и настраивает CE-edition
  4. Делает initial commit
  5. Возвращает на предыдущую ветку

2.2 Push ветки в GitHub

git push origin chat-crm

3. Настройка Coolify

3.1 Добавление приложения в Coolify

  1. Открыть Coolify Dashboard
  2. Create New ResourceApplication
  3. Выбрать GitHub как Source
  4. Настройки:
Параметр Значение
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. Он содержит:

[!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 автоматически отключает:

Эти разделы не будут отображаться в UI.


7. Добавление кастомных разделов

7.1 Dashboard Apps

Chatwoot поддерживает встраивание кастомных приложений:

  1. SettingsIntegrationsDashboard Apps
  2. Указать 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

Краткая суммари:


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 ветки с полностью разным кодом!