🐳 DevOps и развертывание

Установка EspoCRM в Docker Compose: архитектура, безопасность и онлайн-конструктор

Развертывание CRM-системы на собственном сервере - это фундамент цифровой независимости бизнеса. Но попытка установить приложение прямо на хост-систему через «голый» Apache и локальный MySQL превращает поддержку в бесконечный кошмар с конфликтами версий PHP, утечками памяти и отсутствием бэкапов.

Стандартом промышленного внедрения является Docker Compose - изолированное окружение, где база данных, веб-сервер, фоновый Cron и WebSocket-демон работают как слаженный механизм в отдельных защищенных контейнерах.

1. Четыре главные ошибки ручной установки без Docker

Когда системный администратор ставит CRM классическим способом (apt install php apache2 mysql-server), бизнес моментально накапливает скрытые технологические риски:

⚠️ Конфликт версий PHP и зависимостей Риск простоя

Если на том же сервере крутится сайт на WordPress или скрипты n8n, обновление системного PHP для одного проекта ломает остальные. В Docker каждый сервис изолирован со своими модулями и библиотеками.

⏰ Пропущенный Cron и зависшие автодействия Сбои регламентов

В ручной установке системный crontab часто настраивают неправильно (не тот пользователь, другие права). В итоге менеджеры не получают уведомления, письма клиентам не уходят, а SLA по сделкам срывается.

💥 Падение базы данных по нехватке памяти (OOM) Утечка RAM

Ненастроенная MariaDB способна занять 100% оперативной памяти сервера при сложном отчете. Ядро Linux в панике убивает процесс СУБД (Out Of Memory Killer), и CRM перестает открываться в разгар рабочего дня.

📦 Иллюзия бэкапов: архивы не проверяются Потеря данных

Многие думают, что хостинг делает снимки диска. Но при повреждении базы данных снимок диска не гарантирует целостность таблиц. Нужен согласованный дамп mysqldump вместе со сжатием пользовательских файлов data/ и ротацией архивов.

2. Анатомия правильного Docker-стека EspoCRM

В промышленной архитектуре стек разделяется на специализированные контейнеры, объединенные в изолированную виртуальную сеть:

🌐
espocrm (Web)

Основное веб-приложение: Apache и PHP 8.2+ с официальным образом. Обрабатывает пользовательские запросы через REST API и отдает интерфейс SPA.

⚙️
espocrm-daemon (Cron)

Фоновый планировщик, который непрерывно проверяет очередь задач: авто-триггеры, отправку Email, расчет формул и напоминания.

🗄️
mariadb / mysql (DB)

Быстрая реляционная база данных в изолированном томе с оптимизированным буфером InnoDB и жестким лимитом выделенной памяти.

⚡
espocrm-websocket

Демон мгновенных push-уведомлений в браузере. Когда коллега передает сделку, карточка обновляется на экране без перезагрузки страницы.

3. Четыре схемы веб-маршрутизации к домену

Контейнеры CRM не должны висеть прямо на 80 порту без SSL-сертификата. Наш конструктор поддерживает все 4 типовых сценария интеграции веб-сервера:

Схема 1: Панель управления aaPanel / ISPmanager (Рекомендуемая) aaPanel / Nginx

Контейнер публикуется на внутреннем порту (например, 8080). В панели управления создается сайт crm.yourdomain.com, выпускается бесплатный сертификат Let's Encrypt и настраивается обратный прокси на http://127.0.0.1:8080.

Схема 2: Хостовый Nginx с ручной настройкой Stand-alone VPS

На «чистом» сервере Linux без панелей управления Nginx конфигурируется вручную: конструктор генерирует готовый файл nginx-vhost.conf с правильной передачей заголовков X-Forwarded-Proto и WebSocket-upgrade.

Схема 3: Изолированный Docker Proxy (Traefik / Nginx Proxy) Docker Network

Порты вообще не выставляются на хост! Контейнер подключается к общей виртуальной сети (например, web-proxy), а маршрутизатор сам направляет трафик на имя сервиса.

Схема 4: Локальный порт для тестов Localhost / Dev

CRM запускается локально на ноутбуке разработчика через http://localhost:8080 без необходимости настраивать доменные имена и SSL.

4. Безопасность и отказоустойчивость: стандарты Production Ready

Конструктор автоматически внедряет лучшие практики DevOps, чтобы сервер работал стабильно годами:

  • Изоляция секретов в .env: Никаких паролей от базы в открытом виде в docker-compose.yml. Все пароли, домен и порты вынесены в переменные окружения с правами доступа chmod 600.
  • Генератор случайных паролей: Конструктор в один клик формирует надежные пароли для Root и пользователя базы данных, защищая от перебора.
  • Жесткие лимиты памяти (RAM): Директивы deploy.resources.limits защищают сервер от падений - СУБД физически не сможет занять память соседних сервисов.
  • Ротация логов (Log Rotation): Все контейнеры ограничены лимитом max-size: 20m и max-file: 3, предотвращая переполнение системного SSD диска.
  • Автономный скрипт бэкапов (backup.sh): Единый Bash-скрипт создает горячий дамп базы данных, архивирует пользовательские файлы и автоматически удаляет архивы старше 7 дней.

5. Системные требования VPS под нагрузку

Благодаря легкой архитектуре на базе SPA EspoCRM потребляет в 3-4 раза меньше ресурсов, чем тяжелые коробочные аналоги:

Масштаб команды Процессор (vCPU) Память (RAM) Накопитель Стек сервисов
До 5 пользователей (Старт) 1-2 ядра 2 ГБ 20 ГБ SSD EspoCRM + MariaDB + Cron
До 25 пользователей (Оптимум) 2-4 ядра 4-6 ГБ 50 ГБ SSD/NVMe + WebSocket демон + бэкапы
50+ пользователей (Корпорация) 4-8 ядер 8-16 ГБ 100+ ГБ NVMe + Redis Cache + шина n8n
🐳

Онлайн-конструктор Docker-стека EspoCRM

Сгенерируйте готовый Production-комплект под ваш сервер за пару кликов: выберите СУБД (MariaDB / MySQL), порты, лимиты памяти, WebSocket-демон, безопасный файл .env и автоматический Bash-скрипт бэкапов с выгрузкой в ZIP.

Не хотите разбираться с Linux и Docker?

В рамках тарифа «Базовая установка EspoCRM» я проведу полное развертывание под ключ на вашем VPS: подберу сервер, настрою безопасный Docker-стек, SSL-сертификаты, почту, автобэкапы и передам вам готовую к работе систему с 30 днями гарантии.

Заказать установку под ключ

Другие инструменты проектирования CRM:

🏗️ Проектирование архитектуры CRM Сущности, связи базы данных, ролевая модель и онлайн-конструктор схемы.
Читать статью →
📊 Карта регламентов и процессов Чек-листы менеджеров, автодействия роботов и защита от ошибок.
Читать статью →
📋 Техническое задание на CRM Инженерный паспорт проекта: источники лидов, регламенты SLA и экспорт в PDF.
Читать статью →
← Вернуться к списку статей Практикума