Установка Monica на CentOS 8
Важно: перед началом сделайте резервную копию данных на сервере и убедитесь, что у вас есть не-root пользователь с правами sudo.

Monica — это open-source веб-приложение для управления личными отношениями (PRM). Представьте CRM, но для друзей и семьи: записи о встречах, звонках, подарках, детях и привычках. Оно помогает не забывать важные детали и напоминать о контактах. Этот гид адаптирован для CentOS 8 и рассчитан на развёртывание в production-окружении.
Ключевое: Monica хранит персональные данные. Планируйте бэкапы, шифрование и политику доступа.
Основные возможности
- Управление контактами и их связями
- Напоминания и автопоздравления с днём рождения
- Отслеживание действий, долгов, подарков, адресов и заметок
- Импорт/экспорт данных, экспорт контакта как vCard
- Многоязычность, мультивалютность, API
- Мультипользовательский режим и метки для организации
Требования
- CentOS 8
- Git
- NPM / Node.js
- PHP 7.1+ (рекомендуется 7.2–7.4 для совместимости)
- MariaDB или MySQL
- Веб-сервер с поддержкой PHP (Nginx/Apache/Caddy)
- Composer
- Опционально: Redis или Beanstalk (для очередей и кэширования)
Кому полезна эта инструкция
- Системным администраторам, разворачивающим Monica для себя или небольшой команды
- Разработчикам, тестирующим Monica на сервере CentOS 8
- Тем, кто просит инструкции «с нуля» до рабочего интерфейса
Короткая методология развертывания
- Подготовьте систему и пользователя с sudo-привилегиями.
- Установите и настройте PHP, базу данных и веб-сервер.
- Получите TLS-сертификат (опционально, но рекомендовано).
- Установите зависимости проекта, выполните миграции и настройте права.
- Проверьте сайт и настройте мониторинг/бэкапы.
Полезные определения
- PRM: Personal Relationship Management — инструмент для хранения информации о личных контактах.
- PHP-FPM: FastCGI Process Manager для PHP.
- Composer: менеджер пакетов PHP.
Шаг 0 — Предварительные условия
- CentOS 8 установлен и обновлён.
- У вас есть не-root пользователь с sudo.
Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)Установите часовой пояс (пример):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты:
sudo yum update -yУстановите базовый набор утилит:
sudo yum install -y curl wget vim git unzip socat bash-completion epel-release gcc-c++ make libpng-develПримечание: epel-release добавит репозитории, полезные для некоторых пакетов.
Шаг 1 — Установка PHP и расширений
Установите PHP и необходимые расширения:
sudo yum install -y php php-cli php-fpm php-common php-mbstring php-xml php-mysqlnd php-curl php-zip php-intl php-bcmath php-gd php-json php-gmpПроверьте активные модули PHP:
php -mПроверьте версию PHP:
php --version
# пример вывода: PHP 7.2.x (cli)Запустите и включите службу PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceВажно: в CentOS 8 пользователь и группа в /etc/php-fpm.d/www.conf по умолчанию могут быть настроены на apache. Мы настроим их на nginx далее.
Шаг 2 — Получение TLS-сертификата (опционально)
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 you@example.com
source ~/.bashrc
cd ~Проверка версии:
acme.sh --version
# пример: v2.x.xПолучение сертификатов (пример для домена example.com):
# 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 (создайте каталог):
sudo mkdir -p /etc/letsencrypt/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
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 автоматически обновляет сертификаты.
Завершите работу root-пользователя:
exitШаг 3 — Установка MariaDB и создание базы данных
Установите MariaDB:
sudo yum install -y mariadb-serverЗапустите и включите сервис:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceЗапустите сценарий безопасности и следуйте подсказкам:
sudo mysql_secure_installationПример ответов (рекомендуется):
Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_password
Remove anonymous users? Y
Disallow root login remotely? Y
Remove test database and access to it? Y
Reload privilege tables now? YСоздайте базу и пользователя для Monica:
sudo mysql -u root -p
# введите пароль
CREATE DATABASE monica_db;
GRANT ALL ON monica_db.* TO 'monica_user' IDENTIFIED BY 'secure_password';
FLUSH PRIVILEGES;
exitЗамените имена базы, пользователя и пароль на свои значения.
Шаг 4 — Установка и настройка NGINX
Monica совместима с большинством веб-серверов, здесь мы используем Nginx.
Установите Nginx:
sudo yum install -y nginxПроверьте версию:
sudo nginx -vСоздайте конфигурацию сайта /etc/nginx/conf.d/monica.conf (пример):
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/monica/public/;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECC
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
index index.php;
charset utf-8;
location ^~ /storage {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}Тест конфигурации и перезагрузка:
sudo nginx -t
sudo systemctl reload nginx.serviceПримечание: при использовании сокета PHP-FPM (unix:/run/php-fpm/www.sock) замените fastcgi_pass на сокет.
Шаг 5 — Node.js и npm
Установите Node.js (пример для ветки 12.x):
curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejsПроверка версий:
node -v && npm -vNode.js нужен для сборки frontend-ассетов Monica.
Шаг 6 — Установка Composer
Установите Composer (локально) и переместите бинарник в /usr/local/bin:
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 --versionШаг 7 — Установка Monica
Создайте папку для сайта и задайте владельца:
sudo mkdir -p /var/www/monica
cd /var/www/monica
sudo chown -R youruser:youruser /var/www/monicaКлонируйте репозиторий Monica и переключитесь на стабильную версию (рекомендуется использовать тег):
git clone https://github.com/monicahq/monica.git .
git checkout tags/v2.15.2Примечание: проверьте страницу Releases на GitHub и замените тег на актуальную стабильную версию.
Скопируйте пример переменных окружения и отредактируйте .env:
cp .env.example .envЗадайте DB_USERNAME, DB_PASSWORD, APP_URL и почтовые настройки. Почтовая конфигурация обязательна для регистрации и напоминаний.
Установите зависимости и подготовьте приложение:
composer install --no-interaction --no-suggest --no-dev
php artisan key:generate
php artisan setup:production -vЭта последовательность выполнит миграции, посеет базовые данные и создаст символьные ссылки.
Установите права и владельца для production:
sudo chown -R nginx:nginx /var/www/monica
sudo chmod -R 775 /var/www/monica/storageОтредактируйте /etc/php-fpm.d/www.conf и установите user/group в nginx (если применимо), затем перезапустите PHP-FPM:
sudo vim /etc/php-fpm.d/www.conf
sudo systemctl restart php-fpm.serviceШаг 8 — Проверка и завершение установки
Откройте в браузере http://example.com (или https://example.com при наличии cert). Вы увидите страницу регистрации.

Зарегистрируйте пользователя, затем вы попадёте на дашборд:

Рекомендации по безопасности и эксплуатации
- Шифруйте бэкапы с персональными данными.
- Ограничьте доступ к /var/www/monica через SELinux/ACL по необходимости.
- Используйте Redis для очередей и кэширования — это улучшит производительность.
- Планируйте регулярные обновления и тестирование миграций в staging.
GDPR и приватность
Если вы храните персональные данные граждан ЕС, установите политику хранения и удаления данных. Обеспечьте возможность удаления аккаунта и данных по запросу.
Тесты и критерии приёмки
Критерии приёмки:
- Сайт доступен по HTTP/HTTPS по заданному домену.
- Регистрация нового пользователя проходит, и он попадает на дашборд.
- База данных содержит таблицы Monica после миграций.
- Загрузка файлов в /storage работает, и доступ к /storage по прямой ссылке запрещён.
Примеры тест-кейсов:
- Зарегистрироваться и добавить контакт, затем проверить, что запись сохранена.
- Настроить напоминание на контакт и убедиться в появлении записи в очереди (если используется Redis/Beanstalk).
- Экспортировать контакт в vCard и проверить формат файла.
Роль‑ориентированные контрольные списки
Администратор:
- Подготовить сервер и пользователя с sudo.
- Настроить брандмауэр и SELinux.
- Настроить бэкапы БД и файлов.
Разработчик:
- Проверить версии PHP/Composer/Node.
- Убедиться, что .env содержит корректные ключи и почту.
- Запустить миграции и seed-скрипты.
Оператор (DevOps):
- Настроить мониторинг и автообновление сертификатов.
- Настроить ротацию логов и оповещения о падении сервисов.
Решение проблем (troubleshooting)
- 502 Bad Gateway: проверьте, запущен ли php-fpm и совпадает ли fastcgi_pass с сокетом/портом.
- Права на файлы: если загрузка файлов не работает, проверьте владельца и права для /var/www/monica/storage.
- Ошибки миграций: запустите php artisan migrate –force и изучите лог laravel в storage/logs.
Альтернативные подходы
- Вместо Nginx можно использовать Apache с модулем php-fpm.
- Для небольшого персонального деплоя допускается SQLite, но для мультипользовательских инсталляций лучше MariaDB.
- Для тестов используйте –staging в acme.sh.
Мини‑гайд по обновлению Monica
- Сделайте бэкап БД и каталога storage.
- В каталоге /var/www/monica выполните git fetch && git checkout tags/<новый_тег>.
- composer install –no-dev && php artisan migrate –force && php artisan cache:clear.
- Проверить функциональность на staging перед production.
Decision flow (упрощённый)
flowchart TD
A[Начать установку] --> B{Есть домен и TLS?}
B -- Да --> C[Получить cert через acme.sh]
B -- Нет --> D[Продолжить без TLS 'рекомендуется тестовый режим']
C --> E[Установить PHP, MariaDB, Nginx]
D --> E
E --> F[Клонировать Monica и выполнить setup:production]
F --> G{Ошибки при миграции?}
G -- Да --> H[Проверить логи и права]
G -- Нет --> I[Проверить сайт и завершить]Частые ошибки и решения
- “Connection refused” к MariaDB: проверьте, запущен ли сервис и слушает ли на правильном сокете/порту.
- Неправильный APP_URL в .env — ссылки на ассеты и редиректы могут ломаться.
- Почта не отправляет — проверьте SMTP-настройки в .env и подключение к почтовому серверу.
Совместимость и советы по миграции
- Проверьте совместимость версии PHP с релизом Monica, который используете.
- Для миграции с другой ОС учитывайте пути к SSL и права пользователей (www-data vs nginx).
Быстрый чеклист перед открытием доступа пользователям
- Сайт доступен по HTTPS и сертификат валиден.
- Права на файлы и каталоги настроены корректно.
- Выполнены миграции и сиды.
- Настроен почтовый сервер и отправка писем работает.
- Настроены бэкапы БД и storage.
Сводка/Итог
Monica — зрелое open-source решение для ведения личных контактов. Установка на CentOS 8 предполагает последовательную настройку PHP-FPM, MariaDB, Nginx и сертификатов. После клонирования репозитория важно корректно заполнить .env, выполнить composer install и php artisan setup:production. Обратите внимание на безопасность, права файлов и настройку почты.
Ссылки:
Примечание: проверяйте официальную документацию Monica и релизы на GitHub перед обновлениями.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента