Гид по технологиям

Установка Monica на CentOS 8

• 7 min read • Инструкции • Обновлено 26 Nov 2025
Установка Monica на CentOS 8
Установка Monica на CentOS 8

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

Скриншот Monica: интерфейс PRM

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
  • Тем, кто просит инструкции «с нуля» до рабочего интерфейса

Короткая методология развертывания

  1. Подготовьте систему и пользователя с sudo-привилегиями.
  2. Установите и настройте PHP, базу данных и веб-сервер.
  3. Получите TLS-сертификат (опционально, но рекомендовано).
  4. Установите зависимости проекта, выполните миграции и настройте права.
  5. Проверьте сайт и настройте мониторинг/бэкапы.

Полезные определения

  • 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 -v

Node.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). Вы увидите страницу регистрации.

Создание аккаунта Monica

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

Вход и дашборд Monica

Рекомендации по безопасности и эксплуатации

  • Шифруйте бэкапы с персональными данными.
  • Ограничьте доступ к /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

  1. Сделайте бэкап БД и каталога storage.
  2. В каталоге /var/www/monica выполните git fetch && git checkout tags/<новый_тег>.
  3. composer install –no-dev && php artisan migrate –force && php artisan cache:clear.
  4. Проверить функциональность на 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 перед обновлениями.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро