Metodo automatico: un unico script dall'area personale prepara l'intero server (stack web Apache + PHP, database, strumenti di sicurezza, cron). Poi non resta che distribuire il pannello, emettere l'SSL e inserire la licenza. Funziona su Ubuntu/Debian: su un VPS nuovo configura tutto da zero, su un server già configurato agisce solo in modo additivo (profilo «Server configurato», passo 01). Tutti i comandi seguenti sono in ordine: basta scorrere dall'alto verso il basso. Su un VPS nuovo ogni passo è applicabile in sequenza; se il server è già configurato oppure vi è installato un pannello di hosting, una parte del lavoro lo script la lascia deliberatamente a Lei — che cosa esattamente, lo indica al termine della propria esecuzione (l'analisi dell'output è nel passo 01).
monitor.example.com è il suo dominio; 203.0.113.10 è l'IP reale del server; /var/www/monitor è la radice del pannello (dove si trovano public/, assets/, config.php); scelga una propria password per il database.
jail.local), root-crontab, regole UFW, configurazione di Apache. Se il server è già configurato (pannello funzionante, siti, posta, jail propri) scelga il profilo «Server configurato»: apporta solo modifiche additive e non tocca il suo firewall, Fail2ban, la posta, SSH e sysctl. Se rileva un pannello di hosting, lo script passa da solo a questa modalità. Prima del primo avvio può attivare l'esecuzione a vuoto (casella nell'area personale): mostra cosa verrà fatto senza modificare nulla. Su un server in produzione, per sicurezza, esegua uno snapshot.
my.arciveo.com → sezione «Configurazione del server» (disponibile dopo l'attivazione di Arcivéo Security Monitor). È associato al Suo account e contiene un token personale.
Lo script prepara l'intero server: stack web (Apache + PHP), database, strumenti per SSL, l'insieme completo di soluzioni di protezione e attività cron (Lynis, SMART, debsums, Logwatch, report giornaliero, aggiornamento ipsum).
1) Scelga il livello di protezione (nell'area personale, prima di copiare il comando):
2) Esegua sul server come root il comando dall'area personale — ha questo aspetto:
3) Legga l'output finale: lì è indicato che cosa resta a Lei. Lo script termina con un blocco di verifiche e con l'elenco «Passi successivi — installazione del pannello». Una parte dei passi non viene eseguita di proposito: quali, dipende dal profilo scelto e da ciò che lo script ha trovato sul server. Si confronti con l'elenco qui sotto — vanno eseguiti solo i punti le cui righe sono comparse nel Suo output.
Control panel detected (…) — il sito si crea con gli strumenti del pannello di hosting stesso, il vhost lo script non lo fa. Passo 03, ramo «Server con pannello di hosting».No vhost created (no domain given) — profilo «Server configurato» senza dominio: un vhost senza nome diventerebbe il sito predefinito e intercetterebbe i Suoi stessi siti, perciò non è stato creato. Passo 03, ramo «Creare il vhost manualmente».sudo rules NOT written — lo script non è riuscito a determinare con quale account lavora il pannello. È una situazione normale: i file del pannello vengono caricati dopo la configurazione automatica, quindi non c'era ancora nulla su cui basarsi. Senza queste regole i moduli non vedranno i dati di sistema. Passo 04, blocco «sudo per il server web».! Nginx does not read .htaccess — davanti ad Apache c'è Nginx e non è stato possibile inserire automaticamente il divieto nella sua configurazione. Lo faccia assolutamente: altrimenti data/, keys/, database/ e config.php vengono serviti all'esterno aggirando .htaccess. Passo 03, blocco «Se davanti ad Apache c'è Nginx».UFW installed but inactive — il firewall è installato ma disattivato: su un server già configurato lo script non lo attiva da solo per non tagliarle l'accesso. Lo attivi Lei, autorizzando obbligatoriamente la propria porta SSH:
Fail2ban installed but not running — lo avvii: sudo systemctl enable --now fail2ban.Database server present … but not running — avvii il DBMS prima del passo 04: sudo systemctl enable --now mariadb (oppure mysql, a seconda di quello installato).Certbot skipped — issue SSL in … — il certificato si emette con l'interruttore Let's Encrypt nel pannello di hosting; il passo 06 non Le serve.All checks passed. I punti con ! richiedono attenzione; i dettagli vengono scritti nel log, il cui percorso lo script stampa proprio alla fine (Log: …).
Per aprire il pannello a un indirizzo come monitor.example.com e ottenere un SSL gratuito, il dominio deve puntare al server. Nel pannello di gestione DNS (presso il registrar o l'hoster) crei un record A:
Dopo qualche minuto (a volte fino a un'ora) verifichi che il dominio punti al server:
/var/www/monitor e configurato il sito Apache (DocumentRoot sulla radice del pannello, PHP-FPM, AllowOverride per .htaccess). Nell'output dello script è la riga vhost … → DocumentRoot …. Non serve creare separatamente la cartella e il vhost: basta caricare i file e impostare i permessi.
Ramo «Server con pannello di hosting» (nell'output: Control panel detected (…)). Su un server simile i siti sono gestiti dal pannello e lo script non crea di proposito un proprio vhost: verrebbe sovrascritto alla prima ricostruzione delle configurazioni da parte del pannello. L'ordine è questo:
public_html di questo dominio: accanto a index.php, api/, assets/ devono trovarsi anche gli elementi di servizio config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Non serve spostare nulla sopra la radice web: le cartelle di servizio sono chiuse dal file .htaccess della distribuzione e, sotto Nginx, dal divieto che lo script ha inserito nella configurazione del dominio.config.php (passo 05). Nei comandi sostituisca i percorsi con /home/account/web/dominio/public_html e il proprietario con l'utente di questo dominio al posto di www-data.Ramo «Creare il vhost manualmente» (nell'output: No vhost created (no domain given)). Succede solo con il profilo «Server configurato», quando il dominio non è stato passato. La via più semplice è rilanciare il comando dall'area personale indicando il dominio:
Un nuovo avvio è sicuro: ciò che è già stato fatto non viene duplicato. Se invece il vhost va creato a mano, ecco la stessa configurazione che scrive l'installer:
ServerName qui è obbligatorio. Un vhost senza nome diventa il sito predefinito di Apache e inizia a rispondere per i domini altrui sullo stesso server. Per lo stesso motivo non disattivi 000-default.conf su un server già configurato: quel sito potrebbe essere stato riadattato per qualcosa in produzione — su un VPS nuovo l'installer lo rimuove da solo, qui non serve farlo.
! Nginx does not read .htaccess). Nginx serve i file statici direttamente dal disco e non legge .htaccess: le cartelle di servizio risulterebbero aperte all'esterno, anche se Apache le chiude correttamente. Lo script ha già preparato un file con i divieti; va incluso nel blocco server{} del Suo sito, dopodiché occorre ricaricare Nginx:
my.arciveo.com → «Download». Estragga l'archivio prima di caricarlo sul server.
Carichi il contenuto della distribuzione in /var/www/monitor (in modo che all'interno ci siano public/, assets/, config.php ecc.) tramite SFTP/SCP (FileZilla / WinSCP) o con il comando scp dal computer locale:
ServerName), lo si passa al comando di configurazione automatica già al passo 01: … | sudo bash -s -- monitor.example.com (oppure lo si indica nel campo «Dominio del pannello» nell'area personale). Se il dominio non è stato passato, il pannello risponde su qualsiasi host e per IP, e ServerName lo scriverà certbot all'emissione del SSL (passo 06); non serve reinstallare nulla.
root o via SFTP, i file appartengono a root e il web server (www-data) non potrà leggerli: il pannello si aprirà vuoto o con errore 403 (nel log: .htaccess unreadable / directory not executable). Il comando qui sotto risolve il problema:
Si abra il caricamento dei file via SFTP. Dopo il comando qui sopra tutti i file appartengono a www-data, mentre FileZilla / WinSCP si collegano con il suo utente: il caricamento fallirà con SSH_FX_PERMISSION_DENIED (Permission denied). Scelga una delle due varianti.
Variante A: una ACL solo per il suo utente (consigliata). Il permesso di scrittura lo riceve soltanto lei; il web server continua a non poter sovrascrivere il codice del pannello:
Variante B: tramite il gruppo www-data. Più semplice, ma il permesso di scrittura sui file del pannello lo ottiene anche il web server: con una vulnerabilità in PHP il codice potrebbe essere sostituito. L'ordine dei comandi è importante: config.php e le cartelle di lavoro vengono chiuse per ultime:
id deploy, nell'elenco dei gruppi deve comparire www-data; ls -ld /var/www/monitor, permessi drwxrwsr-x, la lettera s al posto di x indica che setgid è attivo.
Crei il database e l'utente, quindi importi lo schema. Il blocco con il DB va incollato nel terminale per intero (sudo mysql accede come root tramite socket unix — la password di root non serve). monitor_db e monitor_user sono nomi di esempio, può impostare quelli che preferisce; memorizzi il nome del database, l'utente e la password — li inserirà in config.php al passo successivo:
admin (da database/db.sql), se il DB è vuoto.
Se le tabelle non vengono create (il pannello mostra un errore di connessione al DB oppure una schermata vuota al posto del modulo di accesso), importi lo schema manualmente. Il comando si esegue nella radice del pannello, i valori sono quelli del blocco qui sopra:
$DBNAME / $DBUSER / $DBPASS sono ormai «dimenticate» (nuova sessione del terminale), inserisca i valori nel comando a mano oppure li imposti di nuovo con le stesse tre righe del blocco qui sopra.
sudo rules NOT written, non c'era modo di determinare l'account del pannello (i file non erano ancora caricati) e le regole non sono state create. Senza di esse le sezioni come firewall, Fail2ban e CrowdSec resteranno vuote. Ora che i file sono al loro posto, lanci di nuovo il comando dall'area personale indicando esplicitamente l'account:
www-data con l'utente con cui gira il PHP del Suo sito (su un pannello di hosting di solito è il proprietario del dominio). Lo può individuare così:
/etc/sudoers.d/monitor esiste e contiene righe con il Suo utente.
config.php nella radice del pannello (/var/www/monitor/config.php) è l'unico file da modificare manualmente. Tutte le impostazioni del pannello vi sono definite come costanti define(). Aprirlo in un editor:
Inserisca i propri valori nei punti evidenziati; lasci il resto invariato:
Cosa modificare:
DB_NAME, DB_USER, DB_PASS — esattamente lo stesso nome del database, utente e password impostati alla creazione del DB nel passo 04 (se ha mantenuto gli esempi — monitor_db / monitor_user). Non tocchi DB_HOST e DB_CHARSET.APP_URL — indirizzo completo del pannello con https://, senza slash finale e senza www. Deve coincidere con il dominio su cui attiva la licenza (passo 07), altrimenti la chiave verrà rifiutata.TIMEZONE — il suo fuso orario (elenco — timedatectl list-timezones). Influisce solo su come il pannello mostra le date; sull'orario di avvio delle attività cron non influisce (lì vale il fuso del sistema).SESSION_LIFETIME — dopo quanti secondi di inattività il pannello richiede un nuovo accesso (predefinito 8 ore). Es. 3600 = 1 ora, 86400 = un giorno.display_errors, log_errors, error_log) — lo lasci ai valori predefiniti.Salvi il file (Ctrl+O, Enter, poi Ctrl+X) e riavvii PHP-FPM — altrimenti, a causa di OPcache, le modifiche non verranno applicate:
640 (impostati nel passo 03) e divieto esplicito nel .htaccess radice. Non lo pubblichi in repository pubblici e non lo invii al supporto con la password reale.
http:// non sarà possibile accedere.
Certbot skipped — issue SSL in …). Il certificato si emette con l'interruttore Let's Encrypt sul dominio web nel pannello stesso — così anche del suo rinnovo si occupa il pannello.
certbot e il plugin per Apache sono già installati dalla configurazione automatica. Il DNS del dominio deve già puntare al server (passo 02). Emissione con un solo comando:
Se il pannello deve aprirsi anche con www., elenchi entrambi i nomi in un solo comando, altrimenti sul secondo indirizzo il browser mostrerà un avviso sul certificato:
Y.<VirtualHost *:443>, configurerà il redirect http→https e il rinnovo automatico. Alla fine — Successfully enabled HTTPS.
dig +short monitor.example.com restituisca l'IP del server e che le porte 80/443 siano aperte (sudo ufw allow 80,443/tcp).
Dopo l'emissione: https://monitor.example.com si apre con il lucchetto, http:// reindirizza a https://.
Apra https://monitor.example.com, acceda con admin / useradmin e completi la checklist:
ARCIVEO-… dall'area personale sul proprio dominio e incolli la chiave in «Impostazioni» → «Licenza». Maggiori dettagli.public/start_db.php, se è rimasto: consente di ricreare il database senza autenticazione. Finché il file resta nella radice del pannello o in public/, il pannello lo segnala con un banner rosso.sudo /usr/local/bin/clamav-scan.sh) carica pesantemente disco e processore e può durare un'ora e più — su un server in produzione è meglio attendere l'avvio notturno dell'01:30. Le sezioni «Dischi (SMART)», «Prestazioni» e «Aggiornamenti di sicurezza» si popolano da sole: rispettivamente ogni 30 minuti, ogni 5 minuti e una volta all'ora.