Установка SalesMan CRM на Ubuntu 22.04/24.04 - Пошаговая инструкция | AdminWiki

Установка SalesMan CRM на Ubuntu: Полное руководство для DevOps и разработчиков

18 декабря 2025 9 мин. чтения #devops #docker #linux #nginx #postgresql #salesman crm #ubuntu #развертывание #установка crm

Введение: Зачем нужна локальная установка CRM?

Представь, что ты хочешь контролировать все данные клиентов, не завися от сторонних SaaS-сервисов. SalesMan CRM — это современное open-source решение для управления взаимоотношениями с клиентами, которое можно развернуть на собственном сервере. В этой статье я, как Senior DevOps, покажу тебе профессиональный подход к установке SalesMan CRM на Ubuntu.

Мы пройдем путь от чистого сервера до полностью рабочей системы с резервным копированием, SSL-сертификатами и оптимизацией производительности.

Подготовка сервера Ubuntu

Давай начнем с базовой настройки нашего Ubuntu-сервера. Я рекомендую использовать Ubuntu 22.04 LTS или новее для стабильности и длительной поддержки.

1. Обновление системы и установка базовых пакетов

Первым делом обновим пакеты и установим необходимые инструменты:

bash
# Обновляем список пакетов и систему
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
Важно: SalesMan CRM требует Node.js версии 16 или выше. Если у тебя старая версия Ubuntu, можешь использовать nvm для управления версиями Node.js.

2. Установка и настройка PostgreSQL

SalesMan CRM использует PostgreSQL в качестве основной базы данных. Установим и настроим её:

bash
# Устанавливаем 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. Клонирование репозитория и настройка

bash
# Создаем директорию для приложения
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 нужно настроить следующие параметры:

.env configuration
# База данных
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. Сборка и миграции базы данных

bash
# Генерируем ключ приложения
npm run key:generate

# Устанавливаем зависимости для продакшена
npm run prod

# Запускаем миграции базы данных
npm run migrate

# (Опционально) Заполняем базу тестовыми данными
# npm run db:seed

Настройка веб-сервера Nginx

Для продакшен-окружения мы будем использовать Nginx как reverse proxy.

5. Установка и конфигурация Nginx

bash
# Устанавливаем Nginx
sudo apt install -y nginx

# Создаем конфигурационный файл для SalesMan
sudo nano /etc/nginx/sites-available/salesman

Добавь следующую конфигурацию:

nginx configuration
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";
    }
}
bash
# Активируем конфигурацию
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:

bash
# Устанавливаем 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:

bash
# Устанавливаем Supervisor
sudo apt install -y supervisor

# Создаем конфигурацию для SalesMan
sudo nano /etc/supervisor/conf.d/salesman.conf
supervisor configuration
[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"
bash
# Перечитываем конфигурацию Supervisor
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start salesman

# Проверяем статус
sudo supervisorctl status salesman

Настройка бэкапов базы данных

Регулярное резервное копирование — must-have для любой CRM системы:

bash
# Создаем скрипт для бэкапа
sudo nano /usr/local/bin/backup-salesman.sh
backup script
#!/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
bash
# Делаем скрипт исполняемым
sudo chmod +x /usr/local/bin/backup-salesman.sh

# Настраиваем ежедневный бэкап через cron
sudo crontab -e
# Добавляем строку:
# 0 2 * * * /usr/local/bin/backup-salesman.sh

Мониторинг и оптимизация

Для поддержания стабильной работы системы настроим базовый мониторинг:

Установка и настройка PM2 (альтернатива Supervisor)

bash
# Устанавливаем 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

bash
# Включаем 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 после установки?

Для обновления выполни следующие команды:

bash
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:

bash
# Установка 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 — гибкая система, которую можно адаптировать под любые бизнес-процессы.

Совет от DevOps: Регулярно обновляй систему, мониторь логи и настраивай алерты. Используй инструменты вроде Fail2ban для защиты от брутфорса и регулярно тестируй восстановление из бэкапов.
Поделиться:
Сохранить гайд? В закладки браузера