Installation automatique

Méthode automatique : un seul script depuis l'espace client prépare tout le serveur (pile web Apache + PHP, base de données, outils de sécurité, cron). Ensuite — déployez le tableau de bord, émettez le SSL et saisissez la licence. Fonctionne sous Ubuntu/Debian : sur un VPS neuf il configure tout de zéro, sur un serveur déjà configuré — de façon uniquement additive (profil « Serveur configuré », étape 01). Toutes les commandes ci-dessous sont dans l'ordre, il suffit de faire défiler du haut vers le bas. Sur un VPS neuf, chaque étape s'applique telle quelle ; si le serveur est déjà configuré ou s'il porte un panneau d'hébergement, le script vous laisse volontairement une partie du travail — il indique laquelle à la fin de son exécution (analyse de la sortie à l'étape 01).

Les valeurs d'exemple dans les commandes à remplacer par les vôtres : monitor.example.com — votre domaine ; 203.0.113.10 — l'IP réelle du serveur ; /var/www/monitor — la racine du tableau de bord (où se trouvent public/, assets/, config.php) ; choisissez votre propre mot de passe BD.
La formule complète (« Protection complète ») est prévue pour un VPS neuf. Sur un Ubuntu/Debian vierge, elle configure le système de sécurité de zéro — Fail2ban (jail.local), crontab root, règles UFW, configuration Apache. Si le serveur est déjà configuré (tableau de bord opérationnel, sites, messagerie, vos propres jails) — choisissez le profil « Serveur configuré » : il n'apporte que des modifications additives et ne touche ni à votre pare-feu, ni à Fail2ban, ni à la messagerie, ni au SSH, ni à sysctl. Si une panneau d'hébergement est détecté, le script bascule tout seul dans ce mode. Avant le premier lancement, vous pouvez activer le test à blanc (case à cocher dans l'espace client) — il montre ce qui sera fait, sans rien modifier. Sur un serveur en production, faites un instantané (snapshot) par précaution.

01. Commande de configuration automatique depuis l'espace client

Vous récupérez la commande dans votre espace client my.arciveo.com → rubrique « Configuration du serveur » (accessible après souscription à Arcivéo Security Monitor). Elle est liée à votre compte et contient un jeton personnel.

Le script prépare l'intégralité du serveur : pile web (Apache + PHP), base de données, outils SSL, jeu complet de moyens de protection et tâches cron (Lynis, SMART, debsums, Logwatch, rapport quotidien, mise à jour d'ipsum).

1) Choisissez le niveau de protection (dans l'espace client, avant de copier la commande) :

  • Protection complète (recommandée) — UFW (pare-feu), Fail2ban, CrowdSec + bouncer, ipsum (liste d'IP bloquées), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (intégrité des fichiers), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (audit), Logwatch, mises à jour de sécurité automatiques.
  • Allégée — pour les VPS à faible RAM : jeu de base sans les composants lourds.
  • Serveur déjà configuré (panneau d'hébergement) — pour un serveur déjà en fonctionnement avec panneau (HestiaCP, etc.), sites et messagerie : uniquement des modifications additives (installation d'outils, cron, règles sudo), tandis que le pare-feu, Fail2ban, la messagerie, SSH et sysctl restent inchangés. Sur un serveur avec panneau, le script choisit ce mode automatiquement.
Simulation. Dans l'espace client, vous pouvez cocher « Simulation » — la commande se contentera alors d'afficher ce que le script installera et modifiera, puis se terminera sans rien toucher. Utile sur un serveur déjà configuré : d'abord la simulation, ensuite le lancement réel sans la case cochée.

2) Exécutez sur le serveur en tant que root la commande de l'espace client — elle se présente ainsi :

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Gardez la commande secrète — elle est liée à votre compte. Le lien a une durée de validité limitée ; s'il a expiré, cliquez dans l'espace client sur « Obtenir un nouveau lien ».
Après la configuration automatique, le serveur web est Apache + PHP-FPM, et les outils de sécurité et les tâches cron sont déjà installés et fonctionnels « prêts à l'emploi ».

3) Lisez la sortie affichée à la fin — elle indique ce qui reste à votre charge. Le script termine son exécution par un bloc de vérifications et la liste « Ensuite — installation du panneau ». Une partie des étapes, il ne les fait délibérément pas : lesquelles dépend du profil choisi et de ce qu'il a trouvé sur le serveur. Reportez-vous à la liste ci-dessous — vous ne devez exécuter que les points dont la ligne est apparue dans votre sortie.

  • Control panel detected (…) — le site se crée avec les moyens du panneau d'hébergement lui-même, le script ne crée pas de vhost. Étape 03, branche « Serveur avec panneau d'hébergement ».
  • No vhost created (no domain given) — profil « Serveur configuré » sans domaine : un vhost sans nom deviendrait le site par défaut et intercepterait vos propres sites, il n'a donc pas été créé. Étape 03, branche « Créer le vhost manuellement ».
  • sudo rules NOT written — le script n'a pas pu déterminer sous quel compte tourne le panneau. C'est une situation normale : les fichiers du panneau sont transférés après la configuration automatique, il n'y avait donc encore rien sur quoi se baser. Sans ces règles, les modules ne verront pas les données système. Étape 04, bloc « Le sudo pour le serveur web ».
  • ! Nginx does not read .htaccess — Nginx est placé devant Apache, et l'inscription de l'interdiction dans sa configuration n'a pas abouti automatiquement. Faites-le impérativement : sinon data/, keys/, database/ et config.php sont servis vers l'extérieur en contournant le .htaccess. Étape 03, bloc « Si Nginx est placé devant Apache ».
  • UFW installed but inactive — le pare-feu est installé mais désactivé : sur un serveur déjà configuré, le script ne l'active pas de lui-même, afin de ne pas vous couper l'accès. Activez-le vous-même, en autorisant impérativement votre port SSH :
    sudo ufw allow OpenSSH # port SSH non standard : sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp sudo ufw enable
  • Fail2ban installed but not running — lancez-le : sudo systemctl enable --now fail2ban.
  • Database server present … but not running — démarrez le SGBD avant l'étape 04 : sudo systemctl enable --now mariadb (ou mysql — selon ce qui est installé).
  • Certbot skipped — issue SSL in … — le certificat s'émet avec l'interrupteur Let's Encrypt du panneau d'hébergement ; l'étape 06 ne vous concerne pas.
Si tout est en ordre dans le bloc de vérifications, la dernière ligne est All checks passed. Les points marqués d'un ! demandent votre attention ; les détails sont écrits dans le journal, dont le chemin est affiché tout à la fin (Log: …).

02. Domaine et DNS

Pour ouvrir le tableau de bord à une adresse comme monitor.example.com et obtenir un SSL gratuit, le domaine doit pointer vers le serveur. Dans le panneau de gestion DNS (chez votre registraire ou hébergeur), créez un enregistrement A :

Type : A Nom : monitor (sous-domaine → monitor.example.com) ou @ (racine du domaine → example.com) Valeur : 203.0.113.10 ← IP de votre serveur TTL : 3600

Au bout de quelques minutes (parfois jusqu'à une heure), vérifiez que le domaine pointe vers le serveur :

dig +short monitor.example.com # doit renvoyer votre IP # ou, si dig est absent : getent hosts monitor.example.com
Le certificat SSL (étape 06) n'est délivré que pour un domaine — le DNS doit donc pointer vers le serveur avant l'émission du certificat.

03. Transférer les fichiers du panneau

Cas ordinaire (VPS neuf). La configuration automatique a déjà créé le répertoire du panneau /var/www/monitor et configuré le site Apache (DocumentRoot vers la racine du panneau, PHP-FPM, AllowOverride pour .htaccess). Dans la sortie du script, c'est la ligne vhost … → DocumentRoot …. Pas besoin de créer séparément un répertoire ou un vhost — transférez simplement les fichiers et définissez les droits.
Deux cas où le vhost n'est PAS créé — le script le signale explicitement à la fin de son exécution. Exécutez alors d'abord la branche appropriée ci-dessous, et seulement ensuite transférez les fichiers.

Branche « Serveur avec panneau d'hébergement » (dans la sortie : Control panel detected (…)). Sur un tel serveur, ce sont les moyens du panneau qui gèrent les sites, et le script ne crée délibérément pas son propre vhost — il serait écrasé dès la première reconstruction des configurations par le panneau. Procédez ainsi :

  1. Créez un domaine web dans le panneau d'hébergement (HestiaCP, etc.) — son DocumentRoot reste tel quel.
  2. Transférez la distribution en entier dans le public_html de ce domaine : à côté d'index.php, api/, assets/ doivent également se trouver les dossiers de service config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Rien n'est à sortir au-dessus de la racine web : les dossiers de service sont protégés par le fichier .htaccess de la distribution, et sous Nginx — par l'interdiction que le script a inscrite dans la configuration du domaine.
  3. Le SSL s'émet avec l'interrupteur Let's Encrypt du panneau lui-même — sautez l'étape 06.
  4. Ensuite — les droits (plus bas dans cette étape), la base (étape 04) et config.php (étape 05). Dans les commandes, remplacez les chemins par /home/compte/web/domaine/public_html, et le propriétaire — par l'utilisateur de ce domaine au lieu de www-data.

Branche « Créer le vhost manuellement » (dans la sortie : No vhost created (no domain given)). Cela n'arrive que sur le profil « Serveur configuré », lorsque le domaine n'a pas été transmis. Le plus simple est de relancer la commande de l'espace client en indiquant le domaine :

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo bash -s -- monitor.example.com

Une nouvelle exécution est sans risque : ce qui est déjà fait n'est pas dupliqué. Et si le vhost doit être créé à la main — voici la configuration même qu'écrit l'installateur :

sudo mkdir -p /var/www/monitor # Le socket PHP-FPM est détecté automatiquement — la version de PHP varie selon les serveurs. PHPSOCK=$(ls -1 /run/php/php*-fpm.sock 2>/dev/null | head -1) sudo tee /etc/apache2/sites-available/arciveo-monitor.conf > /dev/null <<'EOF' <VirtualHost *:80> ServerName monitor.example.com DocumentRoot /var/www/monitor <Directory /var/www/monitor> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch "\.php$"> SetHandler "proxy:unix:__PHPSOCK__|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/arciveo-monitor_error.log CustomLog ${APACHE_LOG_DIR}/arciveo-monitor_requests.log combined </VirtualHost> EOF sudo sed -i "s#__PHPSOCK__#${PHPSOCK}#" /etc/apache2/sites-available/arciveo-monitor.conf sudo a2ensite arciveo-monitor.conf sudo apache2ctl configtest sudo systemctl reload apache2
ServerName est ici obligatoire. Un vhost sans nom devient le site Apache par défaut et se met à répondre pour les autres domaines du même serveur. Pour la même raison, ne désactivez pas 000-default.conf sur un serveur déjà configuré : ce site a pu être transformé en site de production pour quelqu'un — sur un VPS neuf, l'installateur le retire lui-même, ici ce n'est pas à faire.
Si Nginx est placé devant Apache (dans la sortie : ! Nginx does not read .htaccess). Nginx sert les fichiers statiques directement depuis le disque et ne lit pas le .htaccess — les dossiers de service se retrouvent ouverts vers l'extérieur, alors même qu'Apache les protège correctement. Le script a préparé à l'avance un fichier d'interdictions ; il faut l'inclure dans le bloc server{} de votre site et recharger Nginx :
include /etc/nginx/snippets/arciveo-deny.conf;
sudo nginx -t && sudo systemctl reload nginx # Vérification : doit renvoyer 403, et non le contenu du fichier curl -sI https://monitor.example.com/config.php | head -1
Les fichiers du panneau (archive de distribution) se téléchargent après achat dans l'espace client my.arciveo.com → « Téléchargements ». Décompressez l'archive avant de l'envoyer sur le serveur.

Transférez le contenu de la distribution dans /var/www/monitor (pour y retrouver public/, assets/, config.php, etc.) — par SFTP/SCP (FileZilla / WinSCP) ou avec la commande scp depuis votre ordinateur local :

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Pour que votre domaine soit directement inscrit dans le vhost (ServerName), on le passe à la commande de configuration automatique dès l'étape 01 : … | sudo bash -s -- monitor.example.com (ou on indique le domaine dans le champ « Domaine du panneau » de l'espace client). Si le domaine n'a pas été fourni, le panneau répond à n'importe quel hôte et par IP, et ServerName sera inscrit par certbot lors de l'émission du SSL (étape 06) ; rien n'est à réinstaller.
Définissez les droits sur les fichiers — c'est une étape obligatoire. Si vous avez transféré sous root ou par SFTP, les fichiers appartiennent à root, et le serveur web (www-data) ne pourra pas les lire — le panneau s'ouvrira vide ou avec une erreur 403 (dans le journal : .htaccess unreadable / directory not executable). La commande ci-dessous corrige cela :
# On normalise les droits de tout le webroot : un répertoire créé par root est inaccessible # au serveur web (www-data) — sans cela le panneau renvoie une page vide ou une 403. cd /var/www/monitor # On crée les dossiers de travail AVANT le chown — sinon les nouveaux répertoires restent root:root # et avec chmod 750 le serveur web (www-data) ne pourra pas y écrire. 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

Ouvrez-vous l'accès au transfert par SFTP. Après la commande ci-dessus, tous les fichiers appartiennent à www-data, alors que FileZilla / WinSCP se connectent sous votre propre utilisateur — le transfert échouera alors avec SSH_FX_PERMISSION_DENIED (Permission denied). Choisissez l'une des deux variantes.

Variante A — une ACL pour votre utilisateur uniquement (recommandé). Vous seul obtenez le droit d'écriture ; le serveur web ne peut toujours pas réécrire le code du panneau :

sudo apt install -y acl # Droit d'écriture pour votre utilisateur sur tout le répertoire du panneau : sudo setfacl -R -m u:deploy:rwX /var/www/monitor # La même règle par défaut — pour les fichiers et dossiers créés plus tard : sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Variante B — via le groupe www-data. Plus simple, mais le serveur web obtient lui aussi le droit d'écriture sur les fichiers du panneau : en cas de faille dans PHP, le code pourrait être remplacé. L'ordre des commandes compte — config.php et les dossiers de travail sont verrouillés en dernier :

sudo usermod -aG www-data deploy # Droit d'écriture au groupe + setgid (le bit 2) : les fichiers transférés par SFTP # restent dans le groupe www-data — sinon le panneau ne pourra pas les réécrire. 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
Après la variante B, reconnectez-vous dans FileZilla (Serveur → Déconnexion, puis reconnectez-vous) — le nouveau groupe ne prend effet qu'à une nouvelle connexion, avant cela vous n'aurez toujours aucun droit. Vérification : id deploy — www-data doit apparaître dans la liste des groupes ; ls -ld /var/www/monitor — droits drwxrwsr-x, la lettre s à la place de x signifie que setgid est activé.

04. Base de données

Créez la base et l'utilisateur, puis importez le schéma. Le bloc BDD se colle en entier dans le terminal (sudo mysql connecte root via socket unix — pas besoin du mot de passe root). monitor_db et monitor_user sont des noms d'exemple, vous pouvez choisir les vôtres ; retenez le nom de la base, l'utilisateur et le mot de passe — vous les saisirez dans config.php à l'étape suivante :

# 1. Base de données. Le nom de la base, l'utilisateur et le mot de passe sont définis UNE seule fois ci-dessous et repris dans toutes les lignes. # Le bloc se colle EN ENTIER dans le terminal ; sudo mysql connecte root via socket unix # (pas besoin du mot de passe root). N'utilisez PAS `sudo mysql -u root -p` interactif # avec copier-coller — au collage, les lignes SQL partiront dans l'invite du mot de passe et seront perdues. DBNAME='monitor_db' # ← nom de la base, peut rester tel quel DBUSER='monitor_user' # ← utilisateur de la base, peut rester tel quel DBPASS='CHOOSE_A_PASSWORD' # ← mot de passe, choisissez le vôtre sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS $DBNAME CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON $DBNAME.* TO '$DBUSER'@'localhost'; FLUSH PRIVILEGES; SQL # Vérification (doit afficher $DBNAME) : mysql -u "$DBUSER" -p"$DBPASS" -e "SHOW DATABASES;" # Saisissez ces trois mêmes valeurs dans config.php → DB_NAME, DB_USER, DB_PASS.
En principe, il n'est pas nécessaire d'importer le schéma — le tableau de bord crée lui-même les tables et le compte admin lors du premier accès dans le navigateur (depuis database/db.sql), si la base est vide.

Si les tables n'ont pas été créées (le tableau de bord affiche une erreur de connexion à la BD ou un écran vide au lieu du formulaire de connexion) — importez le schéma manuellement. La commande s'exécute à la racine du panneau, les valeurs sont reprises du bloc ci-dessus :

# Import du schéma : cd /var/www/monitor && mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" < database/db.sql # Vérification — la liste des tables doit apparaître : mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" -e "SHOW TABLES;"
Si les variables $DBNAME / $DBUSER / $DBPASS sont déjà « oubliées » (nouvelle session du terminal) — indiquez les valeurs à la main dans la commande ou redéfinissez-les avec les trois mêmes lignes du bloc ci-dessus.
Le sudo pour le serveur web. Habituellement, les règles sont déjà écrites par la configuration automatique, et les modules voient immédiatement les données système. Mais si la ligne sudo rules NOT written figurait dans la sortie du script — il n'y avait rien sur quoi se baser pour déterminer le compte du panneau (les fichiers n'étaient pas encore transférés), et les règles n'ont pas été créées. Sans elles, les sections comme le pare-feu, Fail2ban et CrowdSec resteront vides. Maintenant que les fichiers sont en place, relancez la commande de l'espace client en nommant le compte explicitement :
curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo ARCIVEO_USER=www-data bash -s -- monitor.example.com
Remplacez www-data par l'utilisateur sous lequel tourne le PHP de votre site (sur un panneau d'hébergement, c'est généralement le propriétaire du domaine). Vous pouvez le voir ainsi :
ps -o user= -C php-fpm8.3 | sort -u # indiquez votre propre version # ou : ps aux | grep -m3 '[p]hp-fpm'
Vérification après la nouvelle exécution : le fichier /etc/sudoers.d/monitor existe et contient des lignes avec votre utilisateur.

05. Configuration de config.php

config.php à la racine du tableau de bord (/var/www/monitor/config.php) est le seul fichier à modifier manuellement. Tous les paramètres du tableau de bord y sont définis par des constantes define(). Ouvrez-le dans un éditeur :

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

Remplacez par vos valeurs aux endroits surlignés ; laissez le reste tel quel :

// --- Base de données (de l'étape 04) --- define('DB_HOST', 'localhost'); // laisser define('DB_NAME', 'db_name'); // créé à l'étape 04 define('DB_USER', 'user'); // créé à l'étape 04 define('DB_PASS', 'db_password'); // défini à l'étape 04 define('DB_CHARSET', 'utf8mb4'); // laisser // --- Application --- define('APP_URL', 'https://monitor.example.com'); // adresse du tableau de bord, sans slash final define('TIMEZONE', 'Europe/Paris'); // votre fuseau horaire // --- Durée de session --- define('SESSION_LIFETIME', 28800); // inactivité avant reconnexion, sec (28800 = 8 h)

À modifier :

  • DB_NAME, DB_USER, DB_PASS — exactement les mêmes nom de base, utilisateur et mot de passe que ceux définis à la création de la BD à l'étape 04 (si vous avez gardé les exemples — monitor_db / monitor_user). Ne touchez pas à DB_HOST ni DB_CHARSET.
  • APP_URL — adresse complète du tableau de bord avec https://, sans slash final ni www. Elle doit correspondre au domaine sur lequel vous activez la licence (étape 07), sinon la clé sera rejetée.
  • TIMEZONE — votre fuseau horaire (liste : timedatectl list-timezones). N'affecte que l'affichage des dates par le tableau de bord ; n'affecte pas l'heure de lancement des tâches cron (c'est le fuseau du système qui s'applique).
  • SESSION_LIFETIME — après combien de secondes d'inactivité le tableau de bord demande une reconnexion (8 heures par défaut). Par ex. 3600 = 1 heure, 86400 = un jour.
  • Le bloc de journalisation des erreurs (display_errors, log_errors, error_log) — laissez-le par défaut.

Enregistrez le fichier (Ctrl+O, Enter, puis Ctrl+X) et redémarrez PHP-FPM — sinon, à cause d'OPcache, les modifications ne s'appliqueront pas :

sudo systemctl restart php*-fpm
config.php est un fichier secret (il contient le mot de passe de la BD). Il se trouve à la racine du tableau de bord, qui est aussi la racine web, mais il est protégé : droits 640 (définis à l'étape 03) et interdiction explicite dans le .htaccess racine. Ne le publiez pas sur des dépôts publics et ne le transmettez pas au support avec le vrai mot de passe.
Explication détaillée de tous les paramètres dans la FAQ : « Fichier config.php — tous les paramètres du tableau de bord ».

06. Émettre un certificat SSL (HTTPS)

Le tableau de bord fonctionne uniquement en HTTPS. La session de connexion utilise un cookie sécurisé, et WebAuthn (2FA) ne fonctionne, par norme, qu'en HTTPS. En http://, la connexion est impossible.
Sur un serveur avec panneau d'hébergement, cette étape est inutile (dans la sortie du script : Certbot skipped — issue SSL in …). Le certificat s'émet avec l'interrupteur Let's Encrypt sur le domaine web du panneau lui-même — c'est donc aussi le panneau qui s'occupe de son renouvellement.

certbot et le plugin pour Apache sont déjà installés par la configuration automatique. Le DNS du domaine doit déjà pointer vers le serveur (étape 02). Émission en une seule commande :

sudo certbot --apache -d monitor.example.com

Si le tableau de bord doit aussi s'ouvrir avec www. — énumérez les deux noms dans une seule commande, sinon le navigateur affichera un avertissement de certificat sur la seconde adresse :

sudo certbot --apache -d monitor.example.com -d www.monitor.example.com
N'ajoutez le second nom que s'il possède lui aussi un enregistrement A pointant vers ce serveur (étape 02). Sinon, Let's Encrypt ne pourra pas le vérifier et n'émettra pas le certificat du tout — domaine principal compris.
Ce que certbot demandera :
  1. Enter email address — votre e-mail (les notifications d'expiration du certificat y seront envoyées).
  2. Terms of Service … (Y)es/(N)o — Y.
  3. Share email with the EFF … (Y)es/(N)o — à votre convenance.
Ensuite, certbot émettra le certificat, ajoutera <VirtualHost *:443>, configurera la redirection http→https et le renouvellement automatique. À la fin — Successfully enabled HTTPS.
Si l'émission échoue — vérifiez que dig +short monitor.example.com renvoie l'IP du serveur et que les ports 80/443 sont ouverts (sudo ufw allow 80,443/tcp).

Après l'émission : https://monitor.example.com s'ouvre avec un cadenas, http:// redirige vers https://.

07. Connexion et configuration initiale

Ouvrez https://monitor.example.com, connectez-vous avec admin / useradmin et suivez la liste :

  1. Changer le mot de passe admin — section « Utilisateurs » dans le menu.
  2. Activer WebAuthn (2FA) — « Clés WebAuthn » → enregistrer une clé/passkey (nécessite HTTPS). Enregistrez-en deux d'emblée : en cas de perte de l'unique clé, la connexion avec celle-ci sera impossible. En savoir plus.
  3. Restreindre l'accès par IP — « Paramètres » → « Restriction d'accès par IP » (saisissez votre IP avant d'activer, sinon vous vous couperez l'accès).
  4. Saisir la licence — activez le code d'activation ARCIVEO-… depuis l'espace client sur votre domaine et collez la clé dans « Paramètres » → « Licence ». En savoir plus.
  5. Configurer les notifications — Telegram et/ou Email dans « Paramètres ». En savoir plus.
  6. Supprimer l'installateur public/start_db.php s'il subsiste : il permet de recréer la base sans authentification. Tant que le fichier reste à la racine du panneau ou dans public/, le panneau affiche un bandeau rouge d'avertissement.
  7. Lancer les premières vérifications manuellement — sinon une partie des sections restera vide jusqu'à la nuit (voir le bloc ci-dessous).
Pourquoi « Audit Lynis » et « Logwatch » sont vides au départ. La configuration automatique a installé les outils et créé les tâches cron, mais n'a pas lancé les vérifications elles-mêmes — elles se dérouleront selon le calendrier : Lynis à 03:00, Logwatch à 06:00, debsums à 04:30, ClamAV à 01:30. Jusque-là, les sections indiquent honnêtement qu'il n'y a pas encore de rapports. Pour ne pas attendre 24 heures, exécutez-les une fois à la main :
# Audit Lynis — premier rapport (quelques minutes) : sudo /usr/local/bin/lynis-scan.sh # Rapport Logwatch sur 24 heures : sudo /usr/local/bin/logwatch_daily.sh # Intégrité des paquets (debsums) — long sur un gros serveur : sudo /usr/local/bin/debsums-scan.sh
Lynis peut aussi se lancer directement depuis le tableau de bord — le bouton « Lancer l'audit » sur la page « Audit Lynis » : il exécute le même script en arrière-plan et met lui-même le rapport à jour. Ensuite, tout se déroule selon le calendrier, plus besoin de lancement manuel.
Le premier scan antivirus (sudo /usr/local/bin/clamav-scan.sh) sollicite fortement le disque et le processeur et peut durer une heure ou davantage — sur un serveur en production, mieux vaut attendre le lancement nocturne de 01:30. Les sections « Disques (SMART) », « Performances » et « Mises à jour de sécurité » se remplissent d'elles-mêmes : toutes les 30 minutes, toutes les 5 minutes et une fois par heure respectivement.
Terminé. La référence de chaque outil se trouve dans la FAQ.
Vous devez héberger sur ce serveur un site de plus avec son propre domaine — voir la FAQ : « Un deuxième site sur ce serveur (un domaine supplémentaire) ».