Введение: Зачем нужна локальная установка CRM?
Представь, что ты хочешь контролировать все данные клиентов, не завися от сторонних SaaS-сервисов. SalesMan CRM — это современное open-source решение для управления взаимоотношениями с клиентами, которое можно развернуть на собственном сервере. В этой статье я, как Senior DevOps, покажу тебе профессиональный подход к установке SalesMan CRM на Ubuntu.
Мы пройдем путь от чистого сервера до полностью рабочей системы с резервным копированием, SSL-сертификатами и оптимизацией производительности.
Подготовка сервера Ubuntu
Давай начнем с базовой настройки нашего Ubuntu-сервера. Я рекомендую использовать Ubuntu 22.04 LTS или новее для стабильности и длительной поддержки.
1. Обновление системы и установка базовых пакетов
Первым делом обновим пакеты и установим необходимые инструменты:
# Обновляем список пакетов и систему
sudo apt update && sudo apt upgrade -y
# Устанавливаем базовые утилиты
sudo apt install -y curl wget git nano htop ufw software-properties-common
# Добавляем репозиторий для последней версии Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Проверяем версии
node --version
npm --version
2. Установка и настройка PostgreSQL
SalesMan CRM использует PostgreSQL в качестве основной базы данных. Установим и настроим её:
# Устанавливаем PostgreSQL
sudo apt install -y postgresql postgresql-contrib
# Запускаем и добавляем в автозагрузку
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Переключаемся на пользователя postgres
sudo -i -u postgres
# Создаем базу данных и пользователя для SalesMan
createdb salesman_crm
createuser salesman_user --pwprompt
# Придумай надежный пароль и запомни его!
# Даем пользователю права на базу данных
psql -c "GRANT ALL PRIVILEGES ON DATABASE salesman_crm TO salesman_user;"
# Выходим из пользователя postgres
exit
Установка SalesMan CRM
Теперь перейдем к основной части — установке самого SalesMan CRM.
3. Клонирование репозитория и настройка
# Создаем директорию для приложения
sudo mkdir -p /var/www/salesman
sudo chown -R $USER:$USER /var/www/salesman
cd /var/www/salesman
# Клонируем репозиторий SalesMan CRM
git clone https://github.com/ManuelGil/SalesMan.git .
# Устанавливаем зависимости
npm install
# Создаем файл конфигурации
cp .env.example .env
# Редактируем конфигурацию
nano .env
В файле .env нужно настроить следующие параметры:
# База данных
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=salesman_crm
DB_USERNAME=salesman_user
DB_PASSWORD=твой_надежный_пароль
# Настройки приложения
APP_NAME="SalesMan CRM"
APP_ENV=production
APP_KEY=сгенерируй_через_php_artisan_key:generate
APP_DEBUG=false
APP_URL=https://твой-домен.com
# Почта для уведомлений
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=твоя-почта@gmail.com
MAIL_PASSWORD=пароль-приложения
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=твоя-почта@gmail.com
MAIL_FROM_NAME="SalesMan CRM"
APP_DEBUG=false и используй SSL (HTTPS). Не храни пароли в открытом виде в системе контроля версий!
4. Сборка и миграции базы данных
# Генерируем ключ приложения
npm run key:generate
# Устанавливаем зависимости для продакшена
npm run prod
# Запускаем миграции базы данных
npm run migrate
# (Опционально) Заполняем базу тестовыми данными
# npm run db:seed
Настройка веб-сервера Nginx
Для продакшен-окружения мы будем использовать Nginx как reverse proxy.
5. Установка и конфигурация Nginx
# Устанавливаем Nginx
sudo apt install -y nginx
# Создаем конфигурационный файл для SalesMan
sudo nano /etc/nginx/sites-available/salesman
Добавь следующую конфигурацию:
server {
listen 80;
listen [::]:80;
server_name твой-домен.com www.твой-домен.com;
root /var/www/salesman/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
index index.php index.html index.htm;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
# Оптимизация для статических файлов
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
# Активируем конфигурацию
sudo ln -s /etc/nginx/sites-available/salesman /etc/nginx/sites-enabled/
# Проверяем конфигурацию Nginx
sudo nginx -t
# Перезапускаем Nginx
sudo systemctl restart nginx
Настройка SSL с Let's Encrypt
Для безопасности необходимо настроить HTTPS. Используем бесплатные сертификаты Let's Encrypt:
# Устанавливаем Certbot
sudo apt install -y certbot python3-certbot-nginx
# Получаем SSL сертификат
sudo certbot --nginx -d твой-домен.com -d www.твой-домен.com
# Настраиваем автоматическое обновление сертификатов
sudo certbot renew --dry-run
Настройка Supervisor для управления процессами
Для надежной работы в продакшене настроим Supervisor для управления процессами Node.js:
# Устанавливаем Supervisor
sudo apt install -y supervisor
# Создаем конфигурацию для SalesMan
sudo nano /etc/supervisor/conf.d/salesman.conf
[program:salesman]
command=npm run start
directory=/var/www/salesman
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/salesman.log
stderr_logfile=/var/log/supervisor/salesman-error.log
environment=NODE_ENV="production"
# Перечитываем конфигурацию Supervisor
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start salesman
# Проверяем статус
sudo supervisorctl status salesman
Настройка бэкапов базы данных
Регулярное резервное копирование — must-have для любой CRM системы:
# Создаем скрипт для бэкапа
sudo nano /usr/local/bin/backup-salesman.sh
#!/bin/bash
# Конфигурация
BACKUP_DIR="/var/backups/salesman"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
DB_NAME="salesman_crm"
DB_USER="salesman_user"
RETENTION_DAYS=7
# Создаем директорию для бэкапов
mkdir -p "$BACKUP_DIR"
# Создаем бэкап базы данных
PGPASSWORD="твой_пароль" pg_dump -U "$DB_USER" -h localhost "$DB_NAME" \
| gzip > "$BACKUP_DIR/salesman_db_$DATE.sql.gz"
# Бэкап файлов приложения
tar -czf "$BACKUP_DIR/salesman_files_$DATE.tar.gz" /var/www/salesman --exclude="node_modules"
# Удаляем старые бэкапы
find "$BACKUP_DIR" -name "*.gz" -mtime +$RETENTION_DAYS -delete
# Логируем
echo "Backup completed: $DATE" >> /var/log/salesman_backup.log
# Делаем скрипт исполняемым
sudo chmod +x /usr/local/bin/backup-salesman.sh
# Настраиваем ежедневный бэкап через cron
sudo crontab -e
# Добавляем строку:
# 0 2 * * * /usr/local/bin/backup-salesman.sh
Мониторинг и оптимизация
Для поддержания стабильной работы системы настроим базовый мониторинг:
Установка и настройка PM2 (альтернатива Supervisor)
# Устанавливаем PM2 глобально
sudo npm install -g pm2
# Запускаем SalesMan через PM2
cd /var/www/salesman
pm2 start npm --name "salesman-crm" -- start
# Сохраняем конфигурацию PM2
pm2 save
pm2 startup
# Мониторинг
pm2 monit
pm2 logs salesman-crm
Настройка файрвола UFW
# Включаем UFW
sudo ufw enable
# Разрешаем SSH
sudo ufw allow ssh
# Разрешаем HTTP и HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Запрещаем все остальное
sudo ufw default deny incoming
# Проверяем статус
sudo ufw status verbose
Таблица сравнения методов развертывания
| Метод | Плюсы | Минусы | Рекомендация |
|---|---|---|---|
| Ручная установка (этот гайд) | Полный контроль, понимание архитектуры, гибкость | Требует времени, нужны знания Linux | Для продакшена и разработчиков |
| Docker Compose | Быстрое развертывание, изоляция, переносимость | Требует Docker, больше ресурсов | Для тестирования и staging |
| Готовый VPS образ | Самый быстрый старт | Меньше контроля, возможны устаревшие версии | Для быстрого тестирования |
Часто задаваемые вопросы (FAQ)
Как обновить SalesMan CRM после установки?
Для обновления выполни следующие команды:
cd /var/www/salesman
git pull origin main
npm install
npm run build
npm run migrate
sudo systemctl restart supervisor # или pm2 restart salesman-crm
SalesMan CRM не запускается, что делать?
Проверь следующие моменты:
- Логи ошибок:
sudo tail -f /var/log/supervisor/salesman-error.log - Порты: убедись, что порты 80 и 443 свободны
- Права доступа:
sudo chown -R www-data:www-data /var/www/salesman - База данных: проверь подключение к PostgreSQL
Как настроить отправку email в SalesMan CRM?
Используй SMTP сервер (Gmail, Mailgun, SendGrid) или локальный mail server. В файле .env настрой параметры MAIL_*. Для тестирования можешь использовать Mailhog:
# Установка Mailhog для тестирования
sudo apt install -y golang-go
go install github.com/mailhog/MailHog@latest
sudo mv ~/go/bin/MailHog /usr/local/bin/
# Запуск: MailHog
Какой минимальный размер сервера нужен для SalesMan CRM?
Минимальные требования для небольшой компании (до 50 пользователей):
- CPU: 2 ядра
- RAM: 4 GB
- Диск: 20 GB SSD
- Пропускная способность: 100 Mbps
Для больших команд увеличь ресурсы пропорционально.
Заключение
Мы прошли полный путь установки SalesMan CRM на Ubuntu — от настройки сервера до конфигурации продакшен-окружения. Теперь у тебя есть:
- Полностью рабочая CRM система на собственном сервере
- Защищенное HTTPS-соединение с Let's Encrypt
- Автоматические бэкапы базы данных
- Мониторинг и управление процессами через Supervisor/PM2
- Оптимизированный веб-сервер Nginx
Помни, что это только начало. Дальше можно настроить репликацию базы данных, кластеризацию, CDN для статических файлов и расширенный мониторинг. SalesMan CRM — гибкая система, которую можно адаптировать под любые бизнес-процессы.