Автоматичен начин: един скрипт от личния профил подготвя целия сървър (уеб стек 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 минути и веднъж на час.