Автоматический способ: один скрипт из личного кабинета подготавливает весь сервер (веб-стек Apache + PHP, база данных, инструменты безопасности, cron). Дальше — развернуть панель, выпустить SSL и ввести лицензию. Работает на Ubuntu/Debian: на свежем VPS настраивает всё с нуля, на уже настроенном сервере — только аддитивно (профиль «Настроенный сервер», шаг 01). Все команды ниже — по порядку, просто листайте сверху вниз. На свежем VPS подходит каждый шаг подряд; если сервер уже настроен или на нём стоит хостинг-панель, часть работы скрипт намеренно оставляет вам — что именно, он пишет в конце своей работы (разбор вывода — в шаге 01).
monitor.example.com — ваш домен; 203.0.113.10 — реальный IP сервера; /var/www/monitor — корень панели (где лежат public/, assets/, config.php); пароль БД придумайте свой.
jail.local), root-crontab, правила UFW, конфиг Apache. Если сервер уже настроен (рабочая панель, сайты, почта, свои jail'ы) — выбирайте профиль «Настроенный сервер»: он вносит только аддитивные изменения и не трогает ваш файрвол, Fail2ban, почту, SSH и sysctl. При обнаружении хостинг-панели скрипт переключается на этот режим сам. Перед первым запуском можно включить сухой прогон (галочка в кабинете) — он покажет, что будет сделано, ничего не меняя. На рабочем сервере на всякий случай сделайте снимок (snapshot).
my.arciveo.com → раздел «Настройка сервера» (доступен после оформления Arcivéo Security Monitor). Она привязана к вашему аккаунту и содержит персональный токен.
Скрипт подготавливает весь сервер: веб-стек (Apache + PHP), базу данных, инструменты для SSL, полный набор средств защиты и cron-задания (Lynis, SMART, debsums, Logwatch, ежедневный отчёт, обновление ipsum).
1) Выберите уровень защиты (в кабинете, перед копированием команды):
2) Выполните на сервере под root команду из кабинета — она выглядит так:
3) Прочитайте вывод в конце — там сказано, что осталось на вас. Скрипт заканчивает работу блоком проверок и списком «Дальше — установка панели». Часть шагов он намеренно не делает: что именно, зависит от выбранного профиля и от того, что он нашёл на сервере. Сверьтесь со списком ниже — выполнять нужно только те пункты, строки которых появились в вашем выводе.
Control panel detected (…) — сайт создаётся средствами самой хостинг-панели, vhost скрипт не делает. Шаг 03, ветка «Сервер с хостинг-панелью».No vhost created (no domain given) — профиль «Настроенный сервер» без домена: vhost без имени стал бы сайтом по умолчанию и перехватывал бы ваши же сайты, поэтому он не создан. Шаг 03, ветка «Создать vhost вручную».sudo rules NOT written — скрипт не смог определить, под каким аккаунтом работает панель. Это обычная ситуация: файлы панели заливаются уже после автонастройки, и определять было ещё не по чему. Без этих правил модули не увидят системные данные. Шаг 04, блок «sudo для веб-сервера».! Nginx does not read .htaccess — перед Apache стоит Nginx, и вписать запрет в его конфиг автоматически не вышло. Сделайте это обязательно: иначе data/, keys/, database/ и config.php отдаются наружу в обход .htaccess. Шаг 03, блок «Если перед Apache стоит Nginx».UFW installed but inactive — файрвол установлен, но выключен: на настроенном сервере скрипт не включает его сам, чтобы не отрезать вам доступ. Включите его сами, обязательно разрешив свой SSH-порт:
Fail2ban installed but not running — запустите: sudo systemctl enable --now fail2ban.Database server present … but not running — запустите СУБД до шага 04: sudo systemctl enable --now mariadb (или mysql — смотря что стоит).Certbot skipped — issue SSL in … — сертификат выдаётся выключателем Let's Encrypt в хостинг-панели; шаг 06 вам не нужен.All checks passed. Пункты с ! требуют внимания; подробности пишутся в лог, его путь скрипт печатает в самом конце (Log: …).
Чтобы открывать панель по адресу вроде monitor.example.com и получить бесплатный SSL, домен должен указывать на сервер. В панели управления DNS (у регистратора или хостера) создайте A-запись:
Через несколько минут (иногда до часа) проверьте, что домен указывает на сервер:
/var/www/monitor и настроила сайт Apache (DocumentRoot на корень панели, PHP-FPM, AllowOverride для .htaccess). В выводе скрипта это строка vhost … → DocumentRoot …. Отдельно создавать каталог и vhost не нужно — просто залейте файлы и выставьте права.
Ветка «Сервер с хостинг-панелью» (в выводе: Control panel detected (…)). Сайтами на таком сервере распоряжается панель, и свой vhost скрипт не создаёт намеренно — он был бы затёрт при первой же пересборке конфигов панелью. Порядок такой:
public_html этого домена: рядом с index.php, api/, assets/ должны лежать и служебные config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Ничего выше веб-корня выносить не нужно: служебные папки закрыты файлом .htaccess из дистрибутива, а под Nginx — запретом, который скрипт вписал в конфиг домена.config.php (шаг 05). Пути в командах замените на /home/аккаунт/web/домен/public_html, а владельца — на пользователя этого домена вместо www-data.Ветка «Создать vhost вручную» (в выводе: No vhost created (no domain given)). Такое бывает только на профиле «Настроенный сервер», когда домен не был передан. Проще всего — просто перезапустить команду из кабинета, указав домен:
Повторный запуск безопасен: уже сделанное не дублируется. Если же vhost нужно создать руками — вот тот же конфиг, что пишет установщик:
ServerName здесь обязателен. Vhost без имени становится сайтом Apache по умолчанию и начинает отвечать за чужие домены на этом же сервере. По той же причине не отключайте 000-default.conf на настроенном сервере: этот сайт мог быть переделан под чей-то рабочий — на свежем VPS установщик его убирает сам, здесь этого делать не нужно.
! Nginx does not read .htaccess). Nginx отдаёт статические файлы прямо с диска и .htaccess не читает — служебные папки окажутся открыты наружу, хотя Apache их корректно закрывает. Скрипт заранее подготовил файл с запретами; его нужно подключить в блоке server{} вашего сайта и перезагрузить Nginx:
my.arciveo.com → «Загрузки». Распакуйте архив перед загрузкой на сервер.
Залейте содержимое дистрибутива в /var/www/monitor (чтобы внутри оказались public/, assets/, config.php и т.д.) — по SFTP/SCP (FileZilla / WinSCP) или командой scp с локального компьютера:
ServerName), его передают в команду автонастройки ещё на шаге 01: … | sudo bash -s -- monitor.example.com (или указывают домен в поле «Домен панели» в кабинете). Если домен не передали — панель отвечает на любой хост и по IP, а ServerName пропишет certbot при выпуске SSL (шаг 06); переустанавливать ничего не нужно.
root или по SFTP, файлы принадлежат root, и веб-сервер (www-data) не сможет их прочитать — панель откроется пустой или с ошибкой 403 (в логе: .htaccess unreadable / directory not executable). Команда ниже это чинит:
Откройте себе заливку файлов по SFTP. После команды выше все файлы принадлежат www-data, а FileZilla / WinSCP подключаются под вашим пользователем — при загрузке появится ошибка SSH_FX_PERMISSION_DENIED (Permission denied). Выберите один из двух вариантов.
Вариант A — ACL только для вашего пользователя (рекомендуется). Право записи получаете только вы; веб-сервер по-прежнему не может переписать код панели:
Вариант B — через группу www-data. Проще, но право записи в файлы панели получает и веб-сервер: при уязвимости в PHP код можно будет подменить. Порядок команд важен — config.php и рабочие папки закрываются последними:
id deploy — в списке групп должна появиться www-data; ls -ld /var/www/monitor — права drwxrwsr-x, буква s вместо x означает, что setgid установлен.
Создайте базу и пользователя, затем импортируйте схему. Блок с БД вставляется в терминал целиком (sudo mysql входит root по unix-сокету — пароль root не нужен). monitor_db и monitor_user — имена для примера, можете задать любые свои; запомните имя базы, пользователя и пароль — впишете их в config.php на следующем шаге:
admin при первом заходе в браузер (из database/db.sql), если БД пустая.
Если таблицы не создались (панель показывает ошибку подключения к БД или пустой экран вместо формы входа) — импортируйте схему вручную. Команда выполняется в корне панели, значения берутся из блока выше:
$DBNAME / $DBUSER / $DBPASS уже «забылись» (новая сессия терминала) — подставьте значения в команду руками или задайте их заново теми же тремя строками из блока выше.
sudo rules NOT written — определить аккаунт панели было не по чему (файлы ещё не залиты), и правила не созданы. Без них разделы вроде фаервола, Fail2ban и CrowdSec останутся пустыми. Теперь, когда файлы на месте, запустите команду из кабинета ещё раз, назвав аккаунт явно:
www-data замените на пользователя, под которым работает PHP вашего сайта (на хостинг-панели это обычно владелец домена). Посмотреть его можно так:
/etc/sudoers.d/monitor существует и в нём есть строки с вашим пользователем.
config.php в корне панели (/var/www/monitor/config.php) — единственный файл, который нужно отредактировать руками. Все настройки панели заданы в нём константами define(). Откройте его в редакторе:
Подставьте свои значения в подсвеченные места; остальное оставьте как есть:
Что менять:
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 изменения не применятся:
640 (выставлены в шаге 03) и явный запрет в корневом .htaccess. Не выкладывайте его в публичные репозитории и не передавайте в поддержку с реальным паролем.
http:// вы не сможете войти.
Certbot skipped — issue SSL in …). Сертификат выдаётся выключателем Let's Encrypt на веб-домене в самой панели — так его продлением тоже занимается панель.
certbot и плагин для Apache уже установлены автонастройкой. DNS домена уже должен указывать на сервер (шаг 02). Выпуск в одну команду:
Если панель должна открываться ещё и с www. — перечислите оба имени в одной команде, иначе на втором адресе браузер покажет предупреждение о сертификате:
Y.<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://.
Откройте https://monitor.example.com, войдите admin / useradmin и пройдите чеклист:
ARCIVEO-… из кабинета активируйте на свой домен и вставьте ключ в «Настройки» → «Лицензия». Подробнее.public/start_db.php, если он остался: он позволяет без авторизации пересоздать базу. Пока файл лежит в корне панели или в public/, панель предупреждает о нём красным баннером.sudo /usr/local/bin/clamav-scan.sh) сильно нагружает диск и процессор и может идти час и больше — на рабочем сервере лучше дождаться ночного запуска в 01:30. Разделы «Диски (SMART)», «Производительность» и «Обновления безопасности» наполняются сами: каждые 30 минут, 5 минут и раз в час соответственно.