Автоматическая установка

Автоматический способ: один скрипт из личного кабинета подготавливает весь сервер (веб-стек Apache + PHP, база данных, инструменты безопасности, cron). Дальше — развернуть панель, выпустить SSL и ввести лицензию. Работает на Ubuntu/Debian: на свежем VPS настраивает всё с нуля, на уже настроенном сервере — только аддитивно (профиль «Настроенный сервер», шаг 01). Все команды ниже — по порядку, просто листайте сверху вниз.

Значения-заглушки в командах замените на свои: monitor.example.com — ваш домен; 203.0.113.10 — реальный IP сервера; /var/www/monitor — корень панели (где лежат public/, assets/, config.php); пароль БД придумайте свой.
Полный набор («Полная защита») рассчитан на свежий VPS. На чистой Ubuntu/Debian он настраивает систему безопасности с нуля — Fail2ban (jail.local), root-crontab, правила UFW, конфиг Apache. Если сервер уже настроен (рабочая панель, сайты, почта, свои jail'ы) — выбирайте профиль «Настроенный сервер»: он вносит только аддитивные изменения и не трогает ваш файрвол, Fail2ban, почту, SSH и sysctl. При обнаружении хостинг-панели скрипт переключается на этот режим сам. Перед первым запуском можно включить сухой прогон (галочка в кабинете) — он покажет, что будет сделано, ничего не меняя. На рабочем сервере на всякий случай сделайте снимок (snapshot).

01. Команда автонастройки из кабинета

Команду вы берёте в своём личном кабинете my.arciveo.com → раздел «Настройка сервера» (доступен после оформления Arcivéo Monitor). Она привязана к вашему аккаунту и содержит персональный токен.

Скрипт подготавливает весь сервер: веб-стек (Apache + PHP), базу данных, инструменты для SSL, полный набор средств защиты и cron-задания (Lynis, SMART, debsums, Logwatch, ежедневный отчёт, обновление ipsum).

1) Выберите уровень защиты (в кабинете, перед копированием команды):

  • Полная защита (рекомендуется) — UFW (фаервол), Fail2ban, CrowdSec + bouncer, ipsum (блок-лист IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (анти-DoS), AIDE (целостность файлов), debsums, ClamAV + maldet (антивирус), Auditd, AppArmor, Monit, Lynis (аудит), Logwatch, автообновления безопасности.
  • Облегчённая — для VPS с малым объёмом ОЗУ: базовый набор без тяжёлых компонентов.
  • Настроенный сервер (хостинг-панель) — для уже работающего сервера с панелью (HestiaCP и т.п.), сайтами и почтой: только аддитивные изменения (доустановка инструментов, cron, sudo-правила), а файрвол, Fail2ban, почта, SSH и sysctl остаются как есть. На сервере с панелью скрипт выбирает этот режим сам.
Сухой прогон. В кабинете можно поставить галочку «Сухой прогон» — тогда команда только покажет, что скрипт установит и изменит, и завершится, ничего не тронув. Полезно на уже настроенном сервере: сперва прогон, потом реальный запуск без галочки.

2) Выполните на сервере под root команду из кабинета — она выглядит так:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Команду держите в секрете — она привязана к вашему аккаунту. Ссылка имеет ограниченный срок действия; если она истекла, нажмите в кабинете «Получить новую ссылку».
После автонастройки веб-сервер — Apache + PHP-FPM, а инструменты безопасности и cron-задания уже установлены и работают «из коробки» — ничего дополнительно настраивать не нужно.

02. Домен и DNS

Чтобы открывать панель по адресу вроде monitor.example.com и получить бесплатный SSL, домен должен указывать на сервер. В панели управления DNS (у регистратора или хостера) создайте A-запись:

Тип: A Имя: monitor (поддомен → monitor.example.com) или @ (корень домена → example.com) Значение: 203.0.113.10 ← IP вашего сервера TTL: 3600

Через несколько минут (иногда до часа) проверьте, что домен указывает на сервер:

dig +short monitor.example.com # должен вернуть ваш IP # или, если dig нет: getent hosts monitor.example.com
SSL-сертификат (шаг 06) выдаётся только на домен — поэтому DNS должен указывать на сервер до выпуска сертификата.

03. Залить файлы панели

Автонастройка уже создала каталог панели /var/www/monitor и настроила сайт Apache (DocumentRoot на корень панели, PHP-FPM, AllowOverride для .htaccess). Отдельно создавать каталог и vhost не нужно — просто залейте файлы и выставьте права.
Файлы панели (архив дистрибутива) скачиваются после покупки в кабинете my.arciveo.com«Загрузки». Распакуйте архив перед загрузкой на сервер.

Залейте содержимое дистрибутива в /var/www/monitor (чтобы внутри оказались public/, assets/, config.php и т.д.) — по SFTP/SCP (FileZilla / WinSCP) или командой scp с локального компьютера:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Чтобы в vhost сразу прописался ваш домен (ServerName), его передают в команду автонастройки ещё на шаге 01: … | sudo bash -s -- monitor.example.com (или указывают домен в поле «Домен панели» в кабинете). Если домен не передали — панель отвечает на любой хост и по IP, а ServerName пропишет certbot при выпуске SSL (шаг 06); переустанавливать ничего не нужно.
Выставьте права на файлы — это обязательный шаг. Если заливали под root или по SFTP, файлы принадлежат root, и веб-сервер (www-data) не сможет их прочитать — панель откроется пустой или с ошибкой 403 (в логе: .htaccess unreadable / directory not executable). Команда ниже это чинит:
# Нормализуем права всего вебрута: каталог, созданный root, недоступен # веб-серверу (www-data) — без этого панель отдаёт пустую страницу или 403. cd /var/www/monitor # Рабочие папки создаём ДО chown — иначе новые каталоги останутся root:root # и при chmod 750 веб-сервер (www-data) не сможет в них писать. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

Откройте себе заливку файлов по SFTP. После команды выше все файлы принадлежат www-data, а FileZilla / WinSCP подключаются под вашим пользователем — при загрузке появится ошибка SSH_FX_PERMISSION_DENIED (Permission denied). Выберите один из двух вариантов.

Вариант A — ACL только для вашего пользователя (рекомендуется). Право записи получаете только вы; веб-сервер по-прежнему не может переписать код панели:

sudo apt install -y acl # Право записи вашему пользователю на весь каталог панели: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # То же правило по умолчанию — для файлов и папок, созданных позже: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Вариант B — через группу www-data. Проще, но право записи в файлы панели получает и веб-сервер: при уязвимости в PHP код можно будет подменить. Порядок команд важен — config.php и рабочие папки закрываются последними:

sudo usermod -aG www-data deploy # Запись группе + setgid (бит 2): файлы, залитые по SFTP, остаются # в группе www-data — иначе панель не сможет их перезаписать. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
После варианта B переподключитесь в FileZilla (Сервер → Отключиться, затем войти заново) — новая группа применяется только при новом входе, до этого прав всё равно не будет. Проверка: id deploy — в списке групп должна появиться www-data; ls -ld /var/www/monitor — права drwxrwsr-x, буква s вместо x означает, что setgid установлен.

04. База данных

Создайте базу и пользователя, затем импортируйте схему. Блок с БД вставляется в терминал целиком (sudo mysql входит root по unix-сокету — пароль root не нужен). monitor_db и monitor_user — имена для примера, можете задать любые свои; запомните имя базы, пользователя и пароль — впишете их в config.php на следующем шаге:

# 1. База данных. Пароль задаётся ОДИН раз в DBPASS и подставляется во все строки. # Блок вставляется в терминал ЦЕЛИКОМ; sudo mysql входит root по unix-сокету # (пароль root не нужен). НЕ используйте интерактивный `sudo mysql -u root -p` # с копипастом — при вставке SQL-строки уйдут в запрос пароля и пропадут. DBPASS='CHOOSE_A_PASSWORD' # ← измените только эту строку sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # Проверка (должна показать monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Этот же пароль впишите в config.php → DB_PASS.
Схему импортировать не нужно — панель сама создаёт таблицы и учётку admin при первом заходе в браузер (из database/db.sql), если БД пустая.
sudo для веб-сервера автонастройка уже задала — модули видят системные данные сразу. Отдельно настраивать sudo нужно, только если PHP работает под нестандартным пользователем (не www-data).

05. Настройка config.php

config.php в корне панели (/var/www/monitor/config.php) — единственный файл, который нужно отредактировать руками. Все настройки панели заданы в нём константами define(). Откройте его в редакторе:

sudo nano /var/www/monitor/config.php

Подставьте свои значения в подсвеченные места; остальное оставьте как есть:

// --- База данных (из шага 04) --- define('DB_HOST', 'localhost'); // оставить define('DB_NAME', 'db_name'); // что создали в шаге 04 define('DB_USER', 'user'); // что создали в шаге 04 define('DB_PASS', 'db_password'); // что задали в шаге 04 define('DB_CHARSET', 'utf8mb4'); // оставить // --- Приложение --- define('APP_URL', 'https://monitor.example.com'); // адрес панели, без слэша в конце define('TIMEZONE', 'Europe/Kyiv'); // ваш часовой пояс // --- Время сессии --- define('SESSION_LIFETIME', 28800); // простой до повторного входа, сек (28800 = 8 ч)

Что менять:

  • DB_NAME, DB_USER, DB_PASS — ровно те же имя базы, пользователь и пароль, что вы задали при создании БД в шаге 04 (если оставили примеры — monitor_db / monitor_user). DB_HOST и DB_CHARSET не трогайте.
  • APP_URL — полный адрес панели с https://, без слэша в конце и без www. Должен совпадать с доменом, на который активируете лицензию (шаг 07), иначе ключ будет отклонён.
  • TIMEZONE — ваш часовой пояс (список — timedatectl list-timezones). Влияет только на то, как панель показывает даты; на время запуска cron-заданий не влияет (там действует пояс системы).
  • SESSION_LIFETIME — через сколько секунд бездействия панель попросит войти заново (по умолчанию 8 часов). Напр. 3600 = 1 час, 86400 = сутки.
  • Блок логирования ошибок (display_errors, log_errors, error_log) — оставьте по умолчанию.

Сохраните файл (Ctrl+O, Enter, затем Ctrl+X) и перезапустите PHP-FPM — иначе из-за OPcache изменения не применятся:

sudo systemctl restart php*-fpm
config.php — секретный файл (в нём пароль БД). Он лежит в корне панели, который и есть веб-корень, но закрыт: права 640 (выставлены в шаге 03) и явный запрет в корневом .htaccess. Не выкладывайте его в публичные репозитории и не передавайте в поддержку с реальным паролем.
Подробный разбор всех параметров — в FAQ: «Файл config.php — все настройки панели».

06. Выпустить SSL (HTTPS)

Панель работает только по HTTPS. Сессия входа использует защищённую cookie, а WebAuthn (2FA) по стандарту работает лишь на HTTPS. По http:// вы не сможете войти.

certbot и плагин для Apache уже установлены автонастройкой. DNS домена уже должен указывать на сервер (шаг 02). Выпуск в одну команду:

sudo certbot --apache -d monitor.example.com
Что certbot спросит:
  1. Enter email address — ваш e-mail (туда придут уведомления об истечении сертификата).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — на ваше усмотрение.
Дальше certbot сам выпустит сертификат, пропишет <VirtualHost *:443>, настроит редирект http→https и автопродление. В конце — Successfully enabled HTTPS.
Если выпуск падает — проверьте, что dig +short monitor.example.com возвращает IP сервера и открыты порты 80/443 (sudo ufw allow 80,443/tcp).

После выпуска: https://monitor.example.com открывается с замком, http:// редиректит на https://.

07. Вход и первичная настройка

Откройте https://monitor.example.com, войдите admin / useradmin и пройдите чеклист:

  1. Сменить пароль admin — раздел «Пользователи» в меню.
  2. Включить WebAuthn (2FA) — «Ключи WebAuthn» → зарегистрировать ключ/passkey (требует HTTPS). Зарегистрируйте сразу два: при потере единственного ключа вход по нему будет невозможен. Подробнее.
  3. Ограничить доступ по IP — «Настройки» → «Ограничение доступа по IP» (впишите свой IP перед включением, иначе закроете себе доступ).
  4. Ввести лицензию — код активации ARCIVEO-… из кабинета активируйте на свой домен и вставьте ключ в «Настройки» → «Лицензия». Подробнее.
  5. Настроить уведомления — Telegram и/или Email в «Настройки». Подробнее.
  6. Удалить установщик public/start_db.php, если он остался: он позволяет без авторизации пересоздать базу. Пока файл лежит в корне панели или в public/, панель предупреждает о нём красным баннером.
Готово. Инструменты безопасности уже работают — дашборд сразу покажет их статус и Оценку безопасности. Справочник по каждому инструменту — в FAQ.
Arcivéo - Security Monitor © 2026