Установка Monica на Debian 10 — подробное руководство

Monica — это свободное PRM-приложение для учёта отношений с близкими. В этом руководстве показано пошаговое развёртывание Monica на Debian 10: подготовка системы, установка PHP, MariaDB, Nginx, Node.js, Composer, получение сертификатов Let’s Encrypt и финальная настройка приложения. Включены чеклисты для ролей, советы по безопасности и типичные ошибки с их решениями.
Важно: следуйте разделу Критерии приёмки перед вводом в эксплуатацию.
Что такое Monica
Monica — это веб‑приложение для личного управления отношениями (PRM). Проще говоря, это CRM для друзей и семьи: хранит контакты, заметки, встречи, подарки, напоминания о днях рождения и истории общения.
Ключевые возможности — кратко
- Управление контактами и связями между ними
- Напоминания и автонапоминания о днях рождения
- Отслеживание встреч, задач и подарков
- Множественные валюты и языки, API для интеграций
Примечание: термин “PRM” означает Personal Relationship Management — система для личного управления контактами.
H2: План установки (быстрая карта)
- Подготовить Debian 10, создать sudo‑пользователя
- Установить PHP и расширения
- Установить и настроить MariaDB, создать базу и пользователя
- Установить Nginx и конфигурацию сайта
- Установить Node.js, npm и Composer
- Клонировать Monica, настроить .env и прогнать миграции
- Настроить сервисы, права и SSL
- Тестирование и приёмка
Возможные варианты применения
- Личное использование на VPS
- Внутренний сервис для семьи/сообщества
- Самостоятельный хостинг в организации с контролем данных
Особенности и преимущества Monica
Monica хорошо подходит для тех, кто хочет централизовать информацию о знакомых без внешних сервисов. Приложение поддерживает метки, кастомные поля, экспорт в vCard, загрузку фото/документов и простую интеграцию через API.
Когда Monica может не подойти
- Нужна высокая масштабируемость на уровне корпоративной CRM
- Требуется сложная интеграция с корпоративными SSO/LDAP без доработок
Альтернативы
- Простые адресные книги в почтовых клиентах
- Коммерческие CRM с персональными плагинами (если требуется корпоративный функционал)
Требования к системе
- Debian 10 (Buster)
- Git
- NPM (Node Package Manager)
- PHP 7.1 или новее
- MariaDB/MySQL
- HTTP‑сервер с поддержкой PHP (Nginx/Apache/Caddy)
- Composer
- Опционально: Redis или Beanstalk для очередей
Совет: используйте минимальную виртуальную машину с 1–2 ГБ RAM для тестовой установки; для боевого окружения планируйте не менее 2–4 ГБ и отдельный диск для резервных копий.
Предварительные требования
- Debian 10 установлен
- Непользователь root с правами sudo
Начальные команды и настройка системы
Проверьте версию Debian:
lsb_release -ds
# Debian GNU/Linux 10 (buster)Установите часовой пояс:
sudo dpkg-reconfigure tzdataОбновите пакеты ОС:
sudo apt update && sudo apt upgrade -yУстановите базовые утилиты:
sudo apt install -y curl wget vim git unzip socat bash-completion apt-transport-https libpng-devСохраняйте регулярные обновления безопасности и включите автоматические обновления, если это допустимо в вашей политике безопасности.
Шаг 1 — Установка PHP и расширений
Установите PHP и необходимые расширения:
sudo apt install -y php php-cli php-fpm php-common php-mbstring php-xml php-mysql php-curl php-zip php-intl php-bcmath php-gd php-json php-gmpПроверьте установленные модули PHP:
php -m
ctype
curl
exif
fileinfo
. . .Проверьте версию PHP:
php --version
# PHP 7.3.11-1~deb10u1 (cli) (built: Oct 26 2019 14:14:18) ( NTS )Примечание: PHP‑FPM обычно запускается автоматически и включается при старте системы.
Шаг 2 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
Защитите сайт HTTPS‑сертификатом. В руководстве используется acme.sh — лёгкий клиент для получения сертификатов из Let’s Encrypt.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~Проверьте версию:
acme.sh --version
# v2.8.2Выдача сертификатов RSA и ECDSA:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging.
Установите сертификаты в каталог /etc/letsencrypt:
`mkdir -p /etc/letsecnrypt/example.com`
`sudo mkdir -p /etc/letsencrypt/example.com_ecc`
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"Все сертификаты будут автоматически обновляться клиентом acme.sh.
Важное: не используйте реальный production‑сертификат в тестовой среде; сначала проверьте с –staging.
Шаг 3 — Установка MariaDB и создание базы данных
Установите MariaDB:
sudo apt install -y mariadb-serverПроверка версии:
mysql --version
# mysql Ver 15.1 Distrib 10.3.17-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2Запустите скрипт безопасности:
sudo mysql_secure_installationОтветьте на вопросы и задайте надёжный пароль для root.
Подключитесь к MariaDB и создайте базу и пользователя для Monica:
sudo mysql -u root -p
# Enter password
mariadb> CREATE DATABASE dbname;
mariadb> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mariadb> FLUSH PRIVILEGES;
mariadb> exitЗамените dbname, username и password на ваши значения. Храните эти данные в безопасном менеджере паролей.
Шаг 4 — Установка и конфигурация Nginx
Monica совместима с большинством веб‑серверов; в этом руководстве — Nginx.
Установка Nginx:
sudo apt install -y nginxПример конфигурации /etc/nginx/sites-available/monica.conf:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
server_name example.com;
root /var/www/monica/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
}Активируйте конфигурацию:
sudo ln -s /etc/nginx/sites-available/monica.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx.serviceСовет: настройте HTTP->HTTPS редирект и HSTS для безопасной работы в продакшн.
Шаг 5 — Установка Node.js и npm
Установите Node.js (пример для 12.x):
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install -y nodejsПроверьте версии:
node -v && npm -v
# v12.13.0
# 6.12.0Node.js нужен для сборки ассетов фронтенда.
Шаг 6 — Установка Composer
Установка Composer (локальный инсталлятор):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composerПроверьте версию Composer:
composer --version
# Composer version 1.9.1 2019-11-01 17:20:17Шаг 7 — Установка и конфигурация Monica
Создайте корневую папку:
sudo mkdir -p /var/www/monica
cd /var/www/monica
sudo chown -R johndoe:johndoe /var/www/monicaКлонируйте репозиторий и перейдите на стабильный тег:
git clone https://github.com/monicahq/monica.git .
git checkout tags/v2.15.2Важно: используйте тег релиза. Проверьте страницу релизов на GitHub и обновите тег до актуального.
Создайте файл окружения и настройте переменные:
cp .env.example .envОтредактируйте .env: укажите DBUSERNAME, DB_PASSWORD, MAILданные и APP_URL. Для отправки писем настройте SMTP (или внешнюю службу), иначе регистрация и напоминания не будут работать.
Установите PHP‑зависимости и сгенерируйте ключ приложения:
composer install --no-interaction --no-suggest --no-dev
php artisan key:generate
php artisan setup:production -vНастройте права и владельца:
sudo chown -R www-data:www-data /var/www/monica
sudo chmod -R 775 /var/www/monica/storageШаг 8 — Завершение установки и тестирование
Откройте в браузере http://example.com и зарегистрируйте пользователя.

После регистрации вы попадёте на панель управления:

Проверьте отправку почты, создание контактов, загрузку фотографий и работу напоминаний.
Критерии приёмки
- Сайт доступен по HTTPS и перенаправляет HTTP на HTTPS
- Регистрация и вход работают; подтверждение по почте (если включено) отправляется
- Создание контакта сохраняется и доступно в списке
- Миграции выполнены без ошибок (php artisan migrate завершилось успешно)
- Планировщик задач (cron) настроен для отправки напоминаний и автообновлений
Проверка cron для Laravel Scheduler:
- В crontab у пользователя www-data должна быть запись запуска php artisan schedule:run каждую минуту:
* * * * * cd /var/www/monica && php artisan schedule:run >> /dev/null 2>&1Роль‑базированные чеклисты перед запуском
Администратор сервера
- Обновить ОС и установить бэкап‑решение
- Настроить мониторинг диска и памяти
- Настроить брандмауэр (UFW) и открыть порты 80/443
- Настроить автоматическое обновление пакетов безопасности по соглашению команды
Разработчик / интегратор
- Проверить версию Monica и зависимости
- Настроить окружение .env и тестовый SMTP
- Прогнать миграции и сиды
- Настроить резервное копирование базы данных и файлов
Оператор / контент‑менеджер
- Проверить шаблоны писем
- Создать тестовые контакты и сценарии напоминаний
- Проверить экспорт vCard и импорт данных
Безопасность и рекомендации по хостингу
- Используйте TLS 1.2+ и строгие шифры в конфигурации Nginx
- Включите HSTS и автоматическое редиректирование на HTTPS
- Ограничьте доступ к панели администрирования IP‑фильтрами, если требуется
- Храните секреты (.env) вне репозитория и в зашифрованном виде
- Регулярно применяйте обновления для PHP, Nginx и MariaDB
- Для очередей и кеша используйте Redis, чтобы избежать потерь данных при высокой нагрузке
Конфиденциальность и соответствие GDPR
- Monica хранит личные данные. Перед развёртыванием в ЕС проверьте соответствие GDPR:
- Реализуйте возможность удаления профиля и всех данных по запросу
- Документируйте юридические основания для хранения данных
- Ограничьте доступ сотрудников к персональным данным
Юридическая заметка: это только общие рекомендации, проконсультируйтесь с юристом по защите данных для соответствия требованиям вашей юрисдикции.
Тестирование и распространённые проблемы
Проблема: 502 Bad Gateway с Nginx
- Проверьте статус php-fpm: sudo systemctl status php7.3-fpm
- Убедитесь, что fastcgi_pass в конфиге указывает на правильный сокет/порт
Проблема: Ошибки миграций
- Проверьте .env на правильные DB_* параметры
- Просмотрите логи php и laravel (storage/logs/)
Проблема: Почта не уходит
- Убедитесь, что SMTP креды верны и порт/шифрование соответствуют провайдеру
- Используйте внешнюю службу (Mailgun, SendGrid) для упрощения доставки
Миграция и обновление версии Monica
Мини‑методология обновления:
- Создайте бэкап базы данных и каталога storage/public
- Переключитесь в maintenance mode (php artisan down)
- Обновите код (git fetch && git checkout
) - composer install, npm run production при необходимости
- php artisan migrate –force
- php artisan up
Совет: тестируйте обновление в staging перед production.
Критерии приёмки релиза
- Все unit/e2e тесты (если есть) проходят в staging
- Ручная проверка критичных сценариев: регистрация, отправка mail, создание контакта, экспорт данных
- Мониторинг не показывает рост ошибок после релиза
Однострочные определения (глоссарий)
- PRM: Personal Relationship Management — система для учёта связей и контактов
- vCard: формат обмена контактными данными
- acme.sh: клиент для получения TLS сертификатов из Let’s Encrypt
Краткое резюме
- Monica — удобный приватный PRM для личного использования и небольших команд
- Стандартный стек: Debian 10 + PHP 7.3+ + MariaDB + Nginx + Composer + Node.js
- Обязательные шаги: настройка .env, миграции, права на storage, настройка SSL и cron
Ключевые ссылки
Краткое объявление для команды (100–200 слов)
Monica развёрнута для приватного использования: она хранит контакты, напоминания и события. В ближайшее время команда администраторов настроит автоматические бэкапы и мониторинг. Пожалуйста, протестируйте регистрацию, создание контактов и отправку почты. Все замеченные ошибки отправляйте в баг‑трекер. Перед публичным релизом проведём проверку безопасности и соответствие требованиям обработки персональных данных.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone