⚙️ Архитектура и установка

Эталонная установка EspoCRM в Docker Compose

Установка CRM прямо на хост (без контейнеров) - это плохая практика, которая усложняет обновления и приводит к конфликтам версий PHP. Мы разберем эталонную архитектуру на базе Docker, при которой CRM работает в полной изоляции.

Архитектура решения

Наша связка docker-compose.yml будет состоять из трех сервисов:

  • espocrm: Основной контейнер с веб-сервером Apache и PHP 8.2 (официальный образ).
  • espocrm-daemon: Служебный контейнер (Cron), который выполняет фоновые задачи (отправка писем, расчет формул).
  • mariadb: База данных, оптимизированная для высоких нагрузок.

Пример docker-compose.yml

version: '3.8'

services:
  mariadb:
    image: mariadb:10.11
    environment:
      MARIADB_ROOT_PASSWORD: secure_root_password
      MARIADB_DATABASE: espocrm
      MARIADB_USER: espo_user
      MARIADB_PASSWORD: secure_db_password
    volumes:
      - mariadb_data:/var/lib/mysql
    restart: always

  espocrm:
    image: espocrm/espocrm:latest
    environment:
      ESPOCRM_DATABASE_HOST: mariadb
      ESPOCRM_DATABASE_NAME: espocrm
      ESPOCRM_DATABASE_USER: espo_user
      ESPOCRM_DATABASE_PASSWORD: secure_db_password
      ESPOCRM_SITE_URL: https://crm.yourdomain.com
    ports:
      - "8080:80"
    volumes:
      - espo_data:/var/www/html
    restart: always
    depends_on:
      - mariadb

  espocrm-daemon:
    image: espocrm/espocrm:latest
    environment:
      ESPOCRM_DATABASE_HOST: mariadb
      ESPOCRM_DATABASE_NAME: espocrm
      ESPOCRM_DATABASE_USER: espo_user
      ESPOCRM_DATABASE_PASSWORD: secure_db_password
    volumes:
      - espo_data:/var/www/html
    entrypoint: docker-daemon.sh
    restart: always
    depends_on:
      - mariadb

volumes:
  mariadb_data:
  espo_data:

Важные нюансы настройки

  • Cron-демон: Контейнер espocrm-daemon использует тот же образ и общую папку espo_data, но запускает скрипт docker-daemon.sh. Без него CRM не сможет отправлять запланированные Email и выполнять автопроцессы.
  • Обратный прокси: Контейнер публикует порт 8080. Вам нужно настроить Nginx на хост-машине (или использовать Traefik), чтобы он принимал запросы по порту 443 (HTTPS) и проксировал их на `localhost:8080`.
  • Права на файлы: Папка /var/www/html внутри контейнера должна принадлежать пользователю `www-data`. Официальный образ сам корректирует права при старте, но при переносе данных вручную об этом важно помнить.

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

Для комфортной работы без зависаний MariaDB:

  • CPU: От 2 ядер (vCPU)
  • RAM: Строго от 2 ГБ оперативной памяти (иначе СУБД будет падать от нехватки памяти OOM)
  • Диск: SSD или NVMe от 20 ГБ

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

Я проведу полную установку EspoCRM с базой MariaDB, настрою SSL-сертификаты, почту и автоматическое резервное копирование на вашем сервере.

Заказать настройку под ключ
← Вернуться к списку статей Практикума