Установка Monica Personal CRM на Debian 12: пошаговое руководство
Кратко: подготовьте сервер Debian 12 (рекомендуется минимум 1,5 ГБ ОЗУ), установите Git, Node.js (LTS 18.x), Yarn, Nginx, PHP 8.2 + расширения, Composer и MariaDB; клонируйте репозиторий Monica, настройте .env, соберите фронтенд через Yarn, выполните миграции и настройте SSL через Certbot. В статье также есть контрольные списки, инструкции по безопасности, резервному копированию и обновлению.
Важно: используйте FQDN (например, monica.example.com) и заводские SMTP-учётные данные или сервис (Amazon SES, Mailgun) для отправки почты.
Введение
Обычное CRM‑ПО ориентировано на компании. Monica Personal CRM — это CRM для личных отношений: она помогает организовать данные о семье и друзьях, хранить заметки, даты и истории взаимодействий. Monica — проект с открытым исходным кодом, бесплатный для использования, реализован на фреймворке Laravel (PHP).
В этом руководстве подробно описано, как установить Monica Personal CRM на сервер с Debian 12 и обеспечить её работоспособность, безопасность и обновляемость.
Основная цель и варианты использования
Цель: развернуть локальную или публичную инстанцию Monica CRM для личного использования или в небольшой организации без зависимости от облачных сервисов.
Возможные варианты:
- Личная инстанция для управления контактами и напоминаниями.
- Инстанция внутри небольшой команды, где нужна приватность данных.
- Тестовая среда для разработки и внесения изменений в Monica.
Предварительные требования
- Сервер с Debian 12 и минимум 1,5 ГБ ОЗУ (рекомендуется 2–4 ГБ для уверенной работы сборки фронтенда и PHP). Если ваш сервер имеет меньше 1,5 ГБ ОЗУ, задачи установки Yarn/сборки могут завершаться с ошибкой.
- Некорневой пользователь с правами sudo.
- Uncomplicated Firewall (UFW) включён и запущен.
- Полностью определённый домен (FQDN), например monica.example.com, направленный на ваш сервер.
- SMTP‑аккаунт (Amazon SES, Mailgun или другой) для отправки почты.
- Система обновлена:
$ sudo apt update && sudo apt upgrade- Установлены базовые утилиты (некоторые могут уже быть установлены):
$ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -yБыстрый контрольный список перед началом
- DNS A/AAAA для monica.example.com указывает на IP сервера.
- Пользователь с sudo есть и доступен по SSH.
- UFW открыт для SSH и по возможности для HTTPS/HTTP (будем настраивать).
- Резервная копия важной информации сервера (если сервер уже используется).
Шаг 1 — Настройка брандмауэра
Откройте HTTP и HTTPS в UFW перед установкой веб‑серверов.
Проверить статус:
$ sudo ufw statusЕсли UFW активен, разрешите HTTP и HTTPS:
$ sudo ufw allow http
$ sudo ufw allow httpsПроверьте статус снова:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)Примечание: по соображениям безопасности рекомендуется ограничить доступ по SSH (например, по IP или использовать ключи SSH).
Шаг 2 — Установка Git
Git обычно уже установлен. Если нет:
$ sudo apt install git -yПроверить версию:
$ git --versionНастройте глобальные имя и email:
$ git config --global user.name "Ваше Имя"
$ git config --global user.email "[email protected]"Шаг 3 — Установка Node.js
Monica использует Node.js для сборки фронтенда. Мы используем Node 18.x, чтобы избежать несовместимости с Yarn.
Импорт GPG ключа Nodesource:
$ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpgДобавьте репозиторий Node.js 18.x:
$ NODE_MAJOR=18
$ echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.listОбновите список пакетов и установите Node.js:
$ sudo apt update
$ sudo apt install nodejs -yПроверка:
$ node --version
v18.x.xОбновите npm:
$ sudo npm install -g npm@latest
$ npm --versionСовет: если у вас мало памяти и сборка падает, можно использовать swap‑файл временно (см. раздел производительности).
Шаг 4 — Установка Yarn
Yarn используется для установки фронтенд‑зависимостей и сборки ассетов.
$ sudo npm install --global yarn
$ yarn --versionРекомендуется фиксировать версию Yarn в проекте (например, с помощью .yarnrc) для воспроизводимости.
Шаг 5 — Установка Nginx
Debian 12 может содержать устаревшую версию. Для актуальной версии добавим официальный репозиторий Nginx.
Импорт ключа подписи Nginx:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullДобавьте стабильный репозиторий Nginx:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listУстановите Nginx:
$ sudo apt update
$ sudo apt install nginxПроверка и запуск:
$ sudo nginx -v
$ sudo systemctl start nginx
$ sudo systemctl status nginxОткройте IP сервера в браузере — должна быть страница Nginx по умолчанию.

ALT: Страница по умолчанию Nginx на новом сервере
Шаг 6 — Установка PHP и расширений
Debian 12 поставляется с PHP 8.2. Установим PHP и все требуемые расширения для Monica:
$ sudo apt install php php-bcmath php-cli php-curl php-common \
php-fpm php-gd php-gmp php-intl php-json php-mbstring \
php-mysql php-opcache php-redis php-xml php-zipЕсли вы хотите несколько версий PHP или всегда иметь актуальную версию, добавьте репозиторий Ondřej Sury.
Импорт GPG ключа Sury:
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpgДобавьте репозиторий и обновите:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$ sudo apt update
$ sudo apt install php8.2 php8.2-bcmath php8.2-cli php8.2-curl php8.2-common \
php8.2-fpm php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring \
php8.2-mysql php8.2-opcache php8.2-redis php8.2-xml php8.2-zipПроверьте версию:
$ php --versionШаг 7 — Настройка PHP-FPM
Откройте конфигурацию php.ini и настройте параметры загрузки файлов и память:
$ sudo nano /etc/php/8.2/fpm/php.iniУстановите ограничения загрузки файлов (Monica по умолчанию 10M):
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php/8.2/fpm/php.iniУвеличьте memory_limit при необходимости:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.iniОткройте пул www.conf и смените пользователя и группу на nginx, чтобы соответствовать веб‑серверу:
$ sudo nano /etc/php/8.2/fpm/pool.d/www.confНайдите и измените:
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginxПерезапустите PHP‑FPM:
$ sudo systemctl restart php8.2-fpmВажно: убедитесь, что Nginx установлен и группа nginx существует, иначе изменения вызовут ошибки.
Шаг 8 — Установка Composer
Composer — менеджер зависимостей PHP и Laravel.
Скачайте установщик Composer:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"Проверьте хеш загрузчика (пример из исходного руководства содержит конкретный хеш; в реальной установке сравните с официальным сайтом):
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"Установите Composer и переместите в /usr/local/bin:
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --versionШаг 9 — Установка MariaDB
MariaDB — drop‑in замена MySQL. Рекомендуется использовать официальный репозиторий для получения актуальной версии.
Импорт ключа MariaDB и добавление репозитория:
$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
$ echo "deb [signed-by=/usr/share/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/10.11/debian `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/mariadb-server.list
$ sudo apt update
$ sudo apt install mariadb-server -yПроверьте версию:
$ mysql --versionЗапустите безопасную настройку MariaDB:
$ sudo mariadb-secure-installationДля Debian 12 часто рекомендуется не менять unix_socket и не изменять root‑аутентификацию, отвечая “n” на соответствующие вопросы, если вы сомневаетесь.
Шаг 10 — Конфигурирование базы данных MariaDB
Создайте базу данных и пользователя для Monica:
$ sudo mysql
MariaDB> CREATE DATABASE monica CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB> CREATE USER 'monicauser'@'localhost' IDENTIFIED BY 'yourpassword';
MariaDB> GRANT ALL PRIVILEGES ON monica.* TO 'monicauser'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exitРекомендуется выбирать сложный пароль и хранить его в менеджере паролей. Также можно создать административного пользователя с полными правами, но это повышает риск.
Шаг 11 — Скачивание Monica
Создайте корневую директорию для веба, перейдите в неё и клонируйте репозиторий:
$ sudo mkdir -p /var/www/html
$ sudo chown -R $USER:$USER /var/www/html
$ cd /var/www/html
$ git clone https://github.com/monicahq/monica.git
$ cd monica
$ git fetchВыберите тег релиза, заменив v4.0.0 на актуальную версию:
$ git checkout tags/v4.0.0Примечание: использование стабильного релиза предпочтительнее бета‑версий на продуктиве.
Шаг 12 — Установка Monica
Перейдите в корень проекта и создайте .env из образца:
$ cd /var/www/html/monica
$ cp .env.example .envОтредактируйте .env и укажите:
- APP_ENV=production — включает строгую обработку HTTPS.
- APP_URL=https://monica.example.com — ваш домен с https.
- DB_DATABASE, DB_USERNAME, DB_PASSWORD — данные, созданные ранее.
- MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION — настройки SMTP.
- MAIL_FROM_ADDRESS и MAIL_FROM_NAME — identity отправителя.
Пример (вставьте ваши значения):
APP_ENV=production
APP_URL=https://monica.example.com
DB_DATABASE=monicadb
DB_USERNAME=monicauser
DB_PASSWORD=YourPassword23!
MAIL_MAILER=smtp
MAIL_HOST=email-smtp.us-west-2.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=SESID
MAIL_PASSWORD=SESKey
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[email protected]
MAIL_FROM_NAME="Monica CRM"Установите зависимости Composer без dev‑пакетов:
$ composer install --no-interaction --no-devУстановите фронтенд‑пакеты и соберите ассеты:
$ yarn install
$ yarn run productionСгенерируйте APP_KEY:
$ php artisan key:generateЗапустите установочный скрипт для миграций и создания аккаунта администратора:
$ php artisan setup:production [email protected] --password=yourpassword -vПри успешной установке вы увидите приветственное сообщение с URL и учётными данными.
Шаг 13 — Установка SSL (Certbot)
Для безопасного HTTPS используем Certbot из Snapd.
Установка Snapd и Certbot:
$ sudo apt install snapd
$ sudo snap install core && sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ certbot --versionЗапрос сертификата для Nginx:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d monica.example.comСертификаты будут в /etc/letsencrypt/live/monica.example.com.
Сгенерируйте Diffie‑Hellman параметр:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Проверьте автоматическое обновление сертификатов:
$ sudo certbot renew --dry-runШаг 14 — Конфигурация Nginx
Дайте Nginx права на директорию приложения и настройте конфигурацию.
$ sudo chown -R nginx:nginx /var/www/html/monica
$ sudo chmod -R 775 /var/www/html/monica/storageВ /etc/nginx/nginx.conf добавьте:
server_names_hash_bucket_size 64;Создайте файл /etc/nginx/conf.d/monica.conf и вставьте конфигурацию (замените monica.example.com):
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name monica.example.com;
root /var/www/html/monica/public;
index index.php;
client_max_body_size 10M;
access_log /var/log/nginx/monica.access.log;
error_log /var/log/nginx/monica.error.log;
ssl_certificate /etc/letsencrypt/live/monica.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monica.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/monica.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_keep_conn on;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name monica.example.com;
return 301 https://$host$request_uri;
}Проверьте конфигурацию и перезапустите Nginx:
$ sudo nginx -t
$ sudo systemctl restart nginxШаг 15 — Доступ к Monica
Откройте https://monica.example.com в браузере. Войдите, используя учётные данные администратора, созданные при установке.

ALT: Экран входа Monica CRM с полями email и пароля

ALT: Главная страница Monica CRM после входа — приветственный экран
Шаг 16 — Настройка Cron
Monica использует планировщик Laravel. Настройте cron, который выполняет команды каждую минуту под пользователем nginx:
$ sudo crontab -u nginx -eВ crontab добавьте:
* * * * * php /var/www/html/monica/artisan schedule:run >> /dev/null 2>&1Сохраните. Это обеспечит регулярный запуск фоновых задач (уведомления, задания по очередям и т. д.).
Шаг 17 — Обновление Monica
Перед обновлением сделайте резервную копию базы и экспорт данных через интерфейс Monica (Settings → Export data).
Пример списка экспортов в директории экспорта:
$ ls /var/www/html/monica/storage/app/public/exports -al
-rw-r--r-- 1 nginx nginx 53712 Nov 22 09:47 cvlK5RAl7VVLdYLplnSZ8SFGHHwDZy9cjRhtoOWB.json
-rw-r--r-- 1 nginx nginx 17050 Nov 22 09:47 dgZf5T0SnXeAuZ67HfaFLu2JosyUsByJcp2C8nlv.sqlПроцесс обновления:
$ cd /var/www/html/monica
$ sudo chown -R $USER:$USER /var/www/html/monica
$ git fetch
$ git checkout tags/v5.0.0-beta.3 # пример — не используйте бета на проду
$ composer install --no-interaction --no-dev
$ yarn install
$ yarn run production
$ php artisan monica:update --force
$ sudo chown -R nginx:nginx /var/www/html/monicaЕсли нужно восстановить SQL на пустой инстанции:
$ php artisan migrate
$ sudo mysqlimport -u monicauser -p monica /var/www/html/monica/storage/app/public/exports/dgZf5T0SnXeAuZ67HfaFLu2JosyUsByJcp2C8nlv.sqlРезервное копирование и восстановление — SOP
Минимальный набор шагов для резервного копирования:
- Экспортировать SQL из интерфейса Monica или через mysqldump:
$ sudo mysqldump -u monicauser -p monica > /root/monica_$(date +%F).sql- Сохранить важные директории приложения:
- /var/www/html/monica/.env
- /var/www/html/monica/storage
- /etc/nginx/conf.d/monica.conf
- /etc/letsencrypt/live/monica.example.com (следует экспортировать сертификаты с осторожностью)
- Периодически проверять целостность бэкапов и тестировать восстановление в тестовой среде.
Восстановление (вкратце):
- Восстановить файлы и .env.
- Восстановить SQL через mysql < dump.sql или mysqlimport.
- Проверить права и перезапустить сервисы.
Безопасность и жесткая настройка
Рекомендации по защите инстанции Monica:
- Отключите root‑вход по SSH, используйте ключи SSH.
- Ограничьте доступ по SSH с помощью UFW (по IP) или use Fail2Ban.
- Регулярно обновляйте систему (apt update/upgrade) и PHP‑пакеты.
- Ограничьте доступ к /admin и конфиденциальным URL с помощью дополнительных правил Nginx, если необходимо.
- Храните .env с чувствительными данными вне репозитория и с правами 640, владельцем nginx.
Пример прав:
$ sudo chown nginx:nginx /var/www/html/monica/.env
$ sudo chmod 640 /var/www/html/monica/.env- Защитите доступ к базе данных (локальный сокет/localhost), избегайте открытого доступа по сети.
- Используйте автоматическое обновление Certbot и мониторинг истечения сертификатов.
Когда установка может не сработать — типичные причины
- Недостаточно оперативной памяти для сборки frontend (yarn). Решение: добавить swap или больше ОЗУ.
- Неправильные права на файловую систему: убедитесь, что nginx владеет папками storage и bootstrap/cache.
- Неверные переменные в .env (DB*, MAIL*): проверьте и перезапустите сервисы.
- Неправильно скомпилированные ассеты: повторите yarn install и yarn run production.
- Некорректный сертификат или домен: проверьте DNS и Certbot логи.
- Конфликты версий PHP/расширений: проверьте установленные модули и версию PHP.
Альтернативные подходы
- Docker: развернуть Monica в контейнерах (official docker images или community‑obraz) чтобы изолировать зависимости и облегчить переносимость.
- Использовать MySQL вместо MariaDB, если у вас уже есть готовая инфраструктура.
- Развернуть инстанцию на VPS провайдерах с готовым образом (поддержка One‑click apps).
Примечание: Docker часто упрощает управление версиями и обновлениями, но требует знаний Docker и сетевого конфигурирования (Volumes, nginx проксирование либо Traefik).
Рекомендации по производительности
- Для небольшой личной инстанции 1‑2 ГБ ОЗУ достаточно, но для сборки фронтенда предпочтительны 2+ ГБ или временный swap.
- В прод окружении используйте 2–4 Корректные CPU, 4+ ГБ ОЗУ и SSD‑диск.
- Включите OPcache и настройте его параметры в php.ini для ускорения выполнения PHP.
- Используйте Redis как драйвер очередей и кеша при повышенной нагрузке.
Восстановление и откат при проблемах (инцидентный план)
- Остановите Nginx (если проблемы критичны) и включите maintenance‑страницу.
- Верните .env из последней рабочей резервной копии.
- Восстановите SQL‑дамп.
- Откатите git‑тег до предыдущей стабильной версии:
$ git checkout tags/vX.Y.Z
$ composer install --no-interaction --no-dev
$ yarn install && yarn run production
$ php artisan migrate --force (если требуется)- Перезапустите сервисы и проверьте логи: /var/log/nginx/ и /var/log/syslog.
Совместимость и миграция — советы
- Перед обновлением убедитесь, что целевая версия Monica совместима с текущей версией PHP, Node и Composer.
- Всегда тестируйте миграции в копии базы данных.
- Читайте CHANGELOG Monica и релизные заметки перед обновлением.
Малый глоссарий (одна строка на термин)
- FQDN: Полностью квалифицированное доменное имя, например monica.example.com.
- UFW: Uncomplicated Firewall — простой инструмент управления iptables.
- Certbot: клиент для автоматизации получения сертификатов Let’s Encrypt.
- Composer: менеджер зависимостей PHP.
- Yarn: менеджер пакетов JavaScript.
Контрольные списки ролей
Администратор сервера:
- Настроить DNS и открыть порты в брандмауэре.
- Установить системные пакеты и зависимости.
- Настроить SSL и автоматическое обновление сертификатов.
- Настроить резервное копирование и план восстановления.
Разработчик / DevOps:
- Проверить сборку фронтенда и версии Node/Yarn.
- Тестировать миграции на стенде.
- Контролировать логи и мониторинг ресурсов.
Пользователь (владелец данных):
- Настроить почту отправителя (MAIL_FROM_ADDRESS).
- Экспортировать данные перед обновлением.
- Проверять права доступа и аккаунты администратора.
Критерии приёмки
Инсталляция считается успешной, если:
- https://monica.example.com открывается и показывает страницу входа.
- Функции регистрации/входа под тестовым аккаунтом работают.
- Планировщик заданий выполняется (cron запускает artisan schedule:run).
- Отправка почты работает (тестовые оповещения из приложения отправляются).
- Бэкапы создаются и могут быть восстановлены в тестовой среде.
Заключение
Вы прошли полный путь от подготовки сервера до доступной и защищённой инстанции Monica Personal CRM на Debian 12. Следуйте рекомендациям по безопасности, делайте регулярные бэкапы и тестируйте обновления в тестовой среде перед деплоем в продуктив. Если вы хотите более автоматизированный подход — рассмотрите контейнеризацию (Docker) или использование управления конфигурацией (Ansible, Terraform) для повторяемости развёртываний.
Если остались вопросы — опишите проблему (логи, шаг установки, версия) и обратитесь в сообщество Monica или сюда.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента