Metoda automată: un singur script din contul personal pregătește întregul server (stiva web Apache + PHP, baza de date, instrumentele de securitate, cron). Apoi — desfășurați panoul, emiteți SSL și introduceți licența. Funcționează pe Ubuntu/Debian: pe un VPS nou configurează totul de la zero, pe un server deja configurat — doar aditiv (profilul „Server configurat”, pasul 01). Toate comenzile de mai jos sunt în ordine, doar derulați de sus în jos. Pe un VPS nou se potrivește fiecare pas la rând; dacă serverul este deja configurat sau are instalat un panou de hosting, o parte din muncă scriptul v-o lasă intenționat dumneavoastră — ce anume, scrie la finalul rulării sale (analiza rezultatului — la pasul 01).
monitor.example.com — domeniul dumneavoastră; 203.0.113.10 — IP-ul real al serverului; /var/www/monitor — rădăcina panoului (unde se află public/, assets/, config.php); parola pentru baza de date alegeți-o dumneavoastră.
jail.local), root-crontab, reguli UFW, configurația Apache. Dacă serverul este deja configurat (panou funcțional, site-uri, poștă, jail-uri proprii) — alegeți profilul „Server configurat”: acesta aduce doar modificări aditive și nu vă atinge firewallul, Fail2ban, poșta, SSH și sysctl. La detectarea unui panou de hosting, scriptul comută singur pe acest mod. Înainte de prima rulare puteți activa rularea în gol (bifă în cont) — vă va arăta ce se va face, fără a modifica nimic. Pe un server de producție faceți, pentru orice eventualitate, un instantaneu (snapshot).
my.arciveo.com → secțiunea „Configurare server” (disponibilă după activarea Arcivéo Security Monitor). Ea este legată de contul dumneavoastră și conține un token personal.
Scriptul pregătește întregul server: stiva web (Apache + PHP), baza de date, instrumentele pentru SSL, setul complet de mijloace de protecție și sarcinile cron (Lynis, SMART, debsums, Logwatch, raport zilnic, actualizare ipsum).
1) Alegeți nivelul de protecție (în cont, înainte de a copia comanda):
2) Executați pe server ca root comanda din cont — ea arată astfel:
3) Citiți rezultatul afișat la final — acolo scrie ce a rămas în sarcina dumneavoastră. Scriptul își încheie rularea cu un bloc de verificări și cu lista „Mai departe — instalarea panoului”. O parte dintre pași nu îi execută intenționat: care anume, depinde de profilul ales și de ceea ce a găsit pe server. Comparați cu lista de mai jos — trebuie să executați doar acele puncte ale căror linii au apărut în rezultatul dumneavoastră.
Control panel detected (…) — site-ul se creează cu mijloacele panoului de hosting, scriptul nu face vhost. Pasul 03, ramura „Server cu panou de hosting”.No vhost created (no domain given) — profilul „Server configurat” fără domeniu: un vhost fără nume ar deveni site-ul implicit și v-ar intercepta propriile site-uri, de aceea nu a fost creat. Pasul 03, ramura „Creați vhost-ul manual”.sudo rules NOT written — scriptul nu a putut determina sub ce cont funcționează panoul. Este o situație obișnuită: fișierele panoului se încarcă abia după configurarea automată, așa că nu avea încă după ce să se orienteze. Fără aceste reguli modulele nu vor vedea datele de sistem. Pasul 04, blocul „sudo pentru serverul web”.! Nginx does not read .htaccess — în fața Apache se află Nginx, iar înscrierea automată a interdicției în configurația lui nu a reușit. Faceți acest lucru obligatoriu: altfel data/, keys/, database/ și config.php sunt servite în exterior, ocolind .htaccess. Pasul 03, blocul „Dacă în fața Apache se află Nginx”.UFW installed but inactive — firewallul este instalat, dar dezactivat: pe un server deja configurat scriptul nu îl pornește singur, ca să nu vă taie accesul. Porniți-l dumneavoastră, permițând obligatoriu portul dumneavoastră SSH:
Fail2ban installed but not running — porniți-l: sudo systemctl enable --now fail2ban.Database server present … but not running — porniți SGBD-ul înainte de pasul 04: sudo systemctl enable --now mariadb (sau mysql — în funcție de ce este instalat).Certbot skipped — issue SSL in … — certificatul se emite prin comutatorul Let's Encrypt din panoul de hosting; pasul 06 nu vă este necesar.All checks passed. Punctele cu ! necesită atenție; detaliile se scriu în jurnal, a cărui cale scriptul o afișează chiar la final (Log: …).
Pentru a deschide panoul la o adresă de tipul monitor.example.com și pentru a obține un SSL gratuit, domeniul trebuie să indice către server. În panoul de gestiune DNS (la registrator sau la găzduire) creați o înregistrare A:
După câteva minute (uneori până la o oră), verificați că domeniul indică către server:
/var/www/monitor și a configurat site-ul Apache (DocumentRoot spre rădăcina panoului, PHP-FPM, AllowOverride pentru .htaccess). În rezultatul scriptului aceasta este linia vhost … → DocumentRoot …. Nu trebuie să creați separat directorul și vhost-ul — pur și simplu încărcați fișierele și setați permisiunile.
Ramura „Server cu panou de hosting” (în rezultat: Control panel detected (…)). Pe un astfel de server de site-uri se ocupă panoul, iar scriptul nu creează intenționat vhost propriu — acesta ar fi șters la prima reconstruire a configurațiilor de către panou. Ordinea este următoarea:
public_html al acestui domeniu: alături de index.php, api/, assets/ trebuie să se afle și fișierele de serviciu config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Nu trebuie scos nimic deasupra rădăcinii web: folderele de serviciu sunt închise de fișierul .htaccess din distribuție, iar sub Nginx — de interdicția pe care scriptul a înscris-o în configurația domeniului.config.php (pasul 05). Căile din comenzi înlocuiți-le cu /home/cont/web/domeniu/public_html, iar proprietarul — cu utilizatorul acestui domeniu în locul lui www-data.Ramura „Creați vhost-ul manual” (în rezultat: No vhost created (no domain given)). Asta se întâmplă doar pe profilul „Server configurat”, când domeniul nu a fost transmis. Cel mai simplu este să relansați comanda din cont, indicând domeniul:
Rularea repetată este sigură: ceea ce s-a făcut deja nu se dublează. Iar dacă vhost-ul trebuie creat manual — iată aceeași configurație pe care o scrie programul de instalare:
ServerName este aici obligatoriu. Un vhost fără nume devine site-ul implicit al Apache și începe să răspundă pentru domenii străine de pe același server. Din același motiv nu dezactivați 000-default.conf pe un server deja configurat: acest site putea fi transformat în site-ul de producție al cuiva — pe un VPS nou programul de instalare îl elimină singur, aici nu este nevoie să faceți asta.
! Nginx does not read .htaccess). Nginx servește fișierele statice direct de pe disc și nu citește .htaccess — folderele de serviciu vor rămâne deschise în exterior, deși Apache le închide corect. Scriptul a pregătit din timp un fișier cu interdicții; el trebuie inclus în blocul server{} al site-ului dumneavoastră, apoi reîncărcat Nginx:
my.arciveo.com → „Descărcări”. Dezarhivați arhiva înainte de a o încărca pe server.
Încărcați conținutul distribuției în /var/www/monitor (astfel încât înăuntru să ajungă public/, assets/, config.php etc.) — prin SFTP/SCP (FileZilla / WinSCP) sau cu comanda scp de pe computerul local:
ServerName), acesta este transmis comenzii de configurare automată încă de la pasul 01: … | sudo bash -s -- monitor.example.com (sau indicați domeniul în câmpul „Domeniul panoului” din cont). Dacă domeniul nu a fost transmis — panoul răspunde la orice host și după IP, iar ServerName îl va înscrie certbot la emiterea SSL (pasul 06); nu trebuie să reinstalați nimic.
root sau prin SFTP, fișierele aparțin lui root, iar serverul web (www-data) nu le va putea citi — panoul se va deschide gol sau cu eroarea 403 (în jurnal: .htaccess unreadable / directory not executable). Comanda de mai jos rezolvă asta:
Deschideți-vă încărcarea fișierelor prin SFTP. După comanda de mai sus toate fișierele aparțin lui www-data, în timp ce FileZilla / WinSCP se conectează cu utilizatorul dumneavoastră — încărcarea va eșua atunci cu SSH_FX_PERMISSION_DENIED (Permission denied). Alegeți una dintre cele două variante.
Varianta A — o ACL doar pentru utilizatorul dumneavoastră (recomandat). Dreptul de scriere îl primiți numai dumneavoastră; serverul web tot nu poate rescrie codul panoului:
Varianta B — prin grupul www-data. Mai simplă, dar dreptul de scriere asupra fișierelor panoului îl primește și serverul web: la o vulnerabilitate în PHP codul ar putea fi înlocuit. Ordinea comenzilor contează — config.php și folderele de lucru se închid la final:
id deploy — în lista de grupuri trebuie să apară www-data; ls -ld /var/www/monitor — drepturi drwxrwsr-x, litera s în locul lui x înseamnă că setgid este activat.
Creați baza și utilizatorul, apoi importați schema. Blocul cu baza de date se inserează în terminal integral (sudo mysql intră ca root prin socket unix — parola root nu este necesară). monitor_db și monitor_user sunt nume de exemplu, puteți alege oricare doriți; rețineți numele bazei, utilizatorul și parola — le veți introduce în config.php la pasul următor:
admin la prima accesare din browser (din database/db.sql), dacă baza de date este goală.
Dacă tabelele nu au fost create (panoul afișează o eroare de conectare la baza de date sau un ecran gol în locul formularului de autentificare) — importați schema manual. Comanda se execută în rădăcina panoului, iar valorile se iau din blocul de mai sus:
$DBNAME / $DBUSER / $DBPASS s-au „pierdut” deja (o sesiune nouă de terminal) — introduceți valorile în comandă manual sau setați-le din nou cu aceleași trei linii din blocul de mai sus.
sudo rules NOT written — nu avea după ce să determine contul panoului (fișierele nu erau încă încărcate), iar regulile nu au fost create. Fără ele secțiunile precum firewallul, Fail2ban și CrowdSec vor rămâne goale. Acum, când fișierele sunt la locul lor, rulați încă o dată comanda din cont, numind contul explicit:
www-data înlocuiți-l cu utilizatorul sub care rulează PHP-ul site-ului dumneavoastră (pe un panou de hosting acesta este de obicei proprietarul domeniului). Îl puteți vedea astfel:
/etc/sudoers.d/monitor există și conține linii cu utilizatorul dumneavoastră.
config.php din rădăcina panoului (/var/www/monitor/config.php) este singurul fișier care trebuie editat manual. Toate setările panoului sunt definite în el prin constante define(). Deschideți-l în editor:
Introduceți valorile dumneavoastră în locurile evidențiate; restul lăsați-l așa cum este:
Ce trebuie modificat:
DB_NAME, DB_USER, DB_PASS — exact aceleași nume de bază, utilizator și parolă pe care le-ați setat la crearea BD în pasul 04 (dacă ați păstrat exemplele — monitor_db / monitor_user). DB_HOST și DB_CHARSET nu le atingeți.APP_URL — adresa completă a panoului cu https://, fără slash la final și fără www. Trebuie să coincidă cu domeniul pe care activați licența (pasul 07), altfel cheia va fi respinsă.TIMEZONE — fusul dumneavoastră orar (lista — timedatectl list-timezones). Afectează doar modul în care panoul afișează datele; asupra momentului de rulare a sarcinilor cron nu influențează (acolo se aplică fusul sistemului).SESSION_LIFETIME — după câte secunde de inactivitate panoul va cere reautentificarea (implicit 8 ore). De ex. 3600 = 1 oră, 86400 = o zi.display_errors, log_errors, error_log) — lăsați-l implicit.Salvați fișierul (Ctrl+O, Enter, apoi Ctrl+X) și reporniți PHP-FPM — altfel, din cauza OPcache, modificările nu se vor aplica:
640 (setate la pasul 03) și interdicție explicită în .htaccess-ul din rădăcină. Nu-l publicați în depozite publice și nu-l trimiteți la suport cu parola reală.
http:// nu vă veți putea autentifica.
Certbot skipped — issue SSL in …). Certificatul se emite prin comutatorul Let's Encrypt de pe domeniul web din panoul însuși — astfel, de reînnoirea lui se ocupă tot panoul.
certbot și pluginul pentru Apache sunt deja instalate prin autoconfigurare. DNS-ul domeniului trebuie deja să indice către server (pasul 02). Emitere printr-o singură comandă:
Dacă panoul trebuie să se deschidă și cu www. — enumerați ambele nume într-o singură comandă, altfel la a doua adresă browserul va afișa un avertisment despre certificat:
Y.<VirtualHost *:443>, va configura redirecționarea http→https și reînnoirea automată. La final — Successfully enabled HTTPS.
dig +short monitor.example.com returnează IP-ul serverului și că porturile 80/443 sunt deschise (sudo ufw allow 80,443/tcp).
După emitere: https://monitor.example.com se deschide cu lacăt, iar http:// redirecționează către https://.
Deschideți https://monitor.example.com, autentificați-vă cu admin / useradmin și parcurgeți lista de verificare:
ARCIVEO-… din cont pe domeniul dumneavoastră și inserați cheia în „Setări” → „Licență”. Detalii.public/start_db.php, dacă a rămas: permite recrearea bazei fără autentificare. Cât timp fișierul se află în rădăcina panoului sau în public/, panoul avertizează despre el printr-un banner roșu.sudo /usr/local/bin/clamav-scan.sh) încarcă puternic discul și procesorul și poate dura o oră sau mai mult — pe un server de producție este mai bine să așteptați rularea de noapte de la 01:30. Secțiunile „Discuri (SMART)”, „Performanță” și „Actualizări de securitate” se completează singure: la fiecare 30 de minute, 5 minute și, respectiv, o dată pe oră.