Свой сервер для CRM — это способ платить за систему фиксированную сумму в месяц вместо «за каждого пользователя», а главное — держать базу клиентов у себя, а не у стороннего сервиса. Self-hosted CRM вроде EspoCRM или SuiteCRM ставится на обычный VPS за вечер, а дальше вопрос только в дисциплине: обновления и бэкапы. В этой статье разберём, когда самостоятельное развёртывание оправдано, какой сервер для CRM выбрать по ресурсам, как установить EspoCRM на Ubuntu 24.04 и как построить резервное копирование, при котором потеря базы сделок практически исключена.
Зачем вообще self-hosted CRM
Облачные CRM удобны ровно до тех пор, пока команда маленькая, а требования стандартные. Дальше начинаются знакомые проблемы: тариф растёт с каждым новым менеджером, нужные функции живут в дорогих планах, а экспорт данных при переезде превращается в квест. Self-hosted подход снимает эти ограничения:
- Контроль данных. База клиентов, переписка и история сделок лежат на вашем сервере. Никто не изменит условия хранения, не закроет сервис и не заблокирует аккаунт. Для компаний, работающих с персональными данными, это ещё и аргумент в пользу размещения на сервере в России.
- Предсказуемая цена. VPS стоит одинаково при 5 и при 50 пользователях. Облачная CRM на 20 менеджеров легко обходится в 20 000–40 000 ₽/мес — против 750 ₽/мес за сервер, на котором крутится EspoCRM без лицензионных платежей.
- Кастомизация. Полный доступ к коду и базе: свои поля, свои интеграции, прямые SQL-запросы для отчётов, вебхуки в любые внутренние системы.
- Нет привязки к вендору. Обе системы ниже — open source. Захотели переехать — забрали дамп базы и каталог файлов, развернули на другом сервере.
Честная цена этого всего — администрирование. Кто-то должен обновлять систему, следить за диском и проверять бэкапы. Если в компании нет ни одного человека, готового раз в неделю зайти на сервер по SSH, облако может оказаться безопаснее.
EspoCRM или SuiteCRM: что выбрать
Две самые зрелые open-source CRM, которые ставят на свой сервер чаще всего:
- EspoCRM — лёгкая и быстрая система на PHP. Современный интерфейс, гибкий конструктор сущностей, воронки продаж, e-mail-интеграция, API. Скромные требования: комфортно живёт на 2 ГБ RAM для небольшой команды. Хороший выбор для отделов продаж на 3–30 человек.
- SuiteCRM — форк SugarCRM, тяжёлая «корпоративная» система: сложные workflow, модуль отчётов, права доступа на уровне ролей и групп. Требует заметно больше ресурсов и терпения при настройке, зато покрывает процессы уровня среднего бизнеса.
Практическое правило: если вы не можете назвать функцию SuiteCRM, без которой не обойтись, — ставьте EspoCRM. Она проще в поддержке, быстрее работает и реже ломается при обновлениях.
Требования к серверу для CRM
CRM — это классическое PHP-приложение с базой MySQL/MariaDB. Узкие места: память (PHP-FPM + MySQL) и скорость диска (поиск и отчёты по растущей базе). Ориентиры по ресурсам:
| Команда | vCPU | RAM | Диск | Подходящий тариф Cheap-Host |
|---|---|---|---|---|
| 1–5 пользователей, тест | 2–4 | 4–8 ГБ | 20+ ГБ NVMe | Start — 450 ₽/мес (6 vCPU, 8 ГБ, 96 ГБ NVMe) |
| 5–30 пользователей, продакшен | 4–8 | 16 ГБ | 50+ ГБ NVMe | Pro — 750 ₽/мес (12 vCPU, 16 ГБ, 128 ГБ NVMe) |
| 30+ пользователей, SuiteCRM с отчётами | 8+ | 32 ГБ | 100+ ГБ NVMe | Ultra — 1500 ₽/мес (20 vCPU, 32 ГБ, 192 ГБ NVMe) |
Два момента, которые часто недооценивают. Первый — диск: CRM постоянно ищет по базе (контакты, дубли, фильтры в списках), и на NVMe эти операции выполняются в разы быстрее, чем на SATA SSD — подробнее в статье о NVMe-дисках в VPS. Второй — виртуализация: нужна честная KVM с выделенной памятью, потому что MySQL деградирует первым, когда сосед по узлу отъедает ресурсы. У Cheap-Host все тарифы на KVM и NVMe, а если команда вырастет — CPU, RAM и диск апгрейдятся без переустановки и потери данных.
Развёртывание EspoCRM на Ubuntu 24.04
Схема стандартная: Nginx + PHP-FPM + MariaDB. Предполагаем, что базовая настройка сервера сделана — если нет, начните с чек-листа первых шагов после покупки VPS.
1. Ставим стек
sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx mariadb-server \
php8.3-fpm php8.3-mysql php8.3-gd php8.3-mbstring \
php8.3-curl php8.3-xml php8.3-zip php8.3-intl php8.3-bcmath
sudo mysql_secure_installation
2. Создаём базу данных
sudo mysql -e "CREATE DATABASE espocrm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'espocrm'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';"
sudo mysql -e "GRANT ALL PRIVILEGES ON espocrm.* TO 'espocrm'@'localhost'; FLUSH PRIVILEGES;"
3. Скачиваем и распаковываем EspoCRM
cd /tmp
wget https://www.espocrm.com/downloads/EspoCRM-latest.zip
sudo apt install -y unzip
sudo unzip EspoCRM-latest.zip -d /var/www/
sudo mv /var/www/EspoCRM-* /var/www/espocrm
sudo chown -R www-data:www-data /var/www/espocrm
4. Конфиг Nginx
server {
listen 80;
server_name crm.example.com;
root /var/www/espocrm/public;
index index.php;
location /client { root /var/www/espocrm; }
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\. { deny all; }
client_max_body_size 50M;
}
Сохраните это в /etc/nginx/sites-available/espocrm, включите сайт и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/espocrm /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Дальше откройте http://crm.example.com — веб-установщик попросит данные базы и создаст администратора. Сразу после установки повесьте бесплатный SSL-сертификат — инструкция в статье про Let's Encrypt и certbot: CRM без HTTPS — это пароли и данные клиентов открытым текстом.
5. Планировщик (cron)
EspoCRM выполняет фоновые задачи (почта, workflow, уведомления) через cron. Добавьте задание для пользователя www-data:
sudo crontab -u www-data -e
# добавить строку:
* * * * * cd /var/www/espocrm; php cron.php > /dev/null 2>&1
SuiteCRM разворачивается по той же схеме (стек тот же, отличается дистрибутив и требования к версии PHP — сверьтесь с официальной документацией конкретного релиза).
Бэкапы CRM: стратегия, при которой данные не теряются
База сделок — самое дорогое, что есть на этом сервере. Правило простое: 3-2-1 — три копии данных, на двух разных носителях, одна вне площадки. Применительно к CRM это выглядит так.
Что бэкапить
- Базу данных — вся бизнес-информация: контакты, сделки, задачи, история.
- Каталог приложения — как минимум
data/,custom/и конфиг (загруженные файлы, кастомизации, настройки).
Скрипт ежедневного бэкапа
#!/bin/bash
set -e
TS=$(date +%F_%H-%M)
BACKUP_DIR=/var/backups/espocrm
mkdir -p "$BACKUP_DIR"
# дамп базы
mysqldump --single-transaction --routines espocrm | gzip > "$BACKUP_DIR/db_$TS.sql.gz"
# файлы приложения
tar -czf "$BACKUP_DIR/files_$TS.tar.gz" \
-C /var/www/espocrm data custom
# хранить локально 7 дней
find "$BACKUP_DIR" -type f -mtime +7 -delete
Ключевой флаг — --single-transaction: дамп InnoDB-таблиц снимается консистентно, без блокировки работающей CRM. Скрипт кладём в /usr/local/bin/backup-crm.sh и запускаем по расписанию:
sudo chmod +x /usr/local/bin/backup-crm.sh
sudo crontab -e
# каждый день в 03:15
15 3 * * * /usr/local/bin/backup-crm.sh
Копия вне сервера — обязательно
Локальный бэкап не спасёт при потере самого сервера. Выгружайте копии наружу: в S3-совместимое хранилище через restic или rclone (разбор в статье про бэкапы в S3) или хотя бы на второй дешёвый сервер по rsync. Для роли «удалённая полка под бэкапы» подойдёт NAT VPS у Cheap-Host — NAT Plus с 50 ГБ NVMe стоит 349 ₽/мес, и это отдельная площадка в Германии, физически независимая от основного сервера в Москве.
И главное правило, которое отличает бэкап от лотереи: раз в месяц восстанавливайте копию на тестовой машине. Непроверенный бэкап — это гипотеза, а не бэкап. Общая методика — в статье о резервном копировании VPS по схеме 3-2-1.
Безопасность: минимум, без которого нельзя
- HTTPS через Let's Encrypt — сразу после установки.
- Файрвол: открыты только 80, 443 и SSH-порт (
ufw allow 443/tcpи т.д.). - Вход по SSH-ключам, root-вход по паролю выключен.
- Fail2ban на SSH и на страницу логина CRM.
- Регулярные обновления системы и самой CRM (у EspoCRM обновление запускается одной командой
php command.php upgrade). - Двухфакторная аутентификация для администраторов — есть и в EspoCRM, и в SuiteCRM.
FAQ
Какой сервер нужен для CRM на 10–20 сотрудников?
2–4 активных vCPU, 8–16 ГБ RAM и NVMe-диск. Тариф Pro у Cheap-Host (12 vCPU, 16 ГБ RAM, 128 ГБ NVMe, 750 ₽/мес) закрывает такую команду с запасом на рост базы и почтовые интеграции.
Чем self-hosted CRM лучше облачной?
Данные у вас, цена не зависит от числа пользователей, код и интеграции дорабатываются без ограничений. Минус — администрирование на вашей стороне: обновления, безопасность, бэкапы.
Как часто делать бэкапы CRM?
Базу — минимум раз в сутки, при активных продажах — каждые 4–6 часов (дамп с --single-transaction не мешает работе). Файлы — раз в сутки. Одна копия — всегда вне сервера.
Можно ли перенести данные из облачной CRM?
Да: экспортируйте контакты, компании и сделки в CSV и импортируйте штатным инструментом EspoCRM/SuiteCRM с сопоставлением полей. Историю активности обычно догружают через API.
Потянет ли CRM самый дешёвый VPS?
Для пилота на 2–3 человека хватит тарифа Start за 450 ₽/мес. Для боевой команды берите 16 ГБ RAM — MySQL и PHP-FPM разменивают память на скорость, а апгрейд тарифа у Cheap-Host выполняется без потери данных.
Вывод
Свой сервер для CRM — это фиксированные 450–1500 ₽ в месяц вместо растущей подписки, полный контроль над базой клиентов и свобода кастомизации. EspoCRM разворачивается на Ubuntu 24.04 за вечер, а грамотный бэкап по схеме 3-2-1 с ежедневным дампом и копией вне площадки делает потерю данных маловероятным сценарием. Если для этой задачи вам нужен сервер — у Cheap-Host тариф Pro за 750 ₽/мес: 12 vCPU, 16 ГБ RAM, 128 ГБ NVMe, KVM, безлимитный трафик и выдача сервера за минуту. Подробности — на cheap-host.onl.