Automatische installatie

Automatische methode: één script uit uw account maakt de hele server gereed (webstack Apache + PHP, database, beveiligingstools, cron). Daarna nog even het dashboard uitrollen, SSL uitgeven en de licentie invoeren. Werkt op Ubuntu/Debian: op een verse VPS wordt alles vanaf nul ingesteld, op een reeds ingerichte server alleen aanvullend (profiel “Ingerichte server”, stap 01). Alle onderstaande commando's staan op volgorde; scrol gewoon van boven naar beneden. Op een verse VPS is elke stap na elkaar van toepassing; is de server al ingericht of staat er een hostingpaneel op, dan laat het script een deel van het werk bewust aan u over — wat precies, schrijft het aan het eind van zijn werk (de uitvoer wordt toegelicht in stap 01).

Vervang de tijdelijke waarden in de commando's door uw eigen: monitor.example.com — uw domein; 203.0.113.10 — het echte IP van de server; /var/www/monitor — de root van het dashboard (waar public/, assets/, config.php staan); verzin zelf een DB-wachtwoord.
De volledige set (“Volledige bescherming”) is bedoeld voor een verse VPS. Op een schone Ubuntu/Debian stelt hij het beveiligingssysteem vanaf nul in — Fail2ban (jail.local), root-crontab, UFW-regels, Apache-config. Als de server al is ingericht (werkend dashboard, sites, mail, eigen jails) — kies dan het profiel “Ingerichte server”: dat brengt alleen aanvullende wijzigingen aan en raakt uw firewall, Fail2ban, mail, SSH en sysctl niet aan. Bij detectie van een hostingpaneel schakelt het script zelf naar deze modus. Vóór de eerste run kunt u een proefrun inschakelen (vinkje in het account) — die toont wat er gedaan wordt zonder iets te wijzigen. Maak op een productieserver voor de zekerheid een snapshot.

01. Autoconfiguratieopdracht vanuit uw account

U haalt de opdracht op in uw account my.arciveo.com → onderdeel “Serverconfiguratie” (beschikbaar na aanschaf van Arcivéo Security Monitor). De opdracht is gekoppeld aan uw account en bevat een persoonlijk token.

Het script bereidt de hele server voor: webstack (Apache + PHP), database, SSL-tools, een volledige set beveiligingsmiddelen en cron-taken (Lynis, SMART, debsums, Logwatch, dagelijks rapport, ipsum-update).

1) Kies het beveiligingsniveau (in uw account, vóór het kopiëren van de opdracht):

  • Volledige bescherming (aanbevolen) — UFW (firewall), Fail2ban, CrowdSec + bouncer, ipsum (IP-blocklist), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (bestandsintegriteit), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (audit), Logwatch, automatische beveiligingsupdates.
  • Lichtgewicht — voor VPS met weinig RAM: basisset zonder zware componenten.
  • Geconfigureerde server (hostingpaneel) — voor een reeds draaiende server met paneel (HestiaCP e.d.), websites en e-mail: alleen aanvullende wijzigingen (extra tools installeren, cron, sudo-regels), terwijl firewall, Fail2ban, e-mail, SSH en sysctl blijven zoals ze zijn. Op een server met paneel kiest het script deze modus zelf.
Proefrun. In uw account kunt u het vinkje “Proefrun” aanzetten — dan toont de opdracht alleen wat het script zal installeren en wijzigen, en stopt zonder iets aan te raken. Handig op een reeds geconfigureerde server: eerst een proefrun, daarna de echte uitvoering zonder vinkje.

2) Voer op de server als root de opdracht uit uw account uit — die ziet er zo uit:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Houd de opdracht geheim — ze is gekoppeld aan uw account. De link heeft een beperkte geldigheidsduur; als die verlopen is, klik in uw account op “Nieuwe link ophalen”.
Na de autoconfiguratie is de webserver Apache + PHP-FPM, en de beveiligingstools en cron-taken zijn al geïnstalleerd en werken meteen.

3) Lees de uitvoer aan het eind — daar staat wat er voor u overblijft. Het script sluit af met een blok controles en een lijst “Vervolg — installatie van het paneel”. Een deel van de stappen doet het bewust niet: wat precies, hangt af van het gekozen profiel en van wat het op de server heeft aangetroffen. Loop de onderstaande lijst na — u hoeft alleen die punten uit te voeren waarvan de regels in uw uitvoer zijn verschenen.

  • Control panel detected (…) — de site wordt met de middelen van het hostingpaneel zelf aangemaakt, het script maakt geen vhost. Stap 03, tak “Server met hostingpaneel”.
  • No vhost created (no domain given) — profiel “Ingerichte server” zonder domein: een vhost zonder naam zou de standaardsite worden en uw eigen sites onderscheppen, daarom is hij niet aangemaakt. Stap 03, tak “Vhost handmatig aanmaken”.
  • sudo rules NOT written — het script kon niet bepalen onder welk account het paneel draait. Dat is een normale situatie: de paneelbestanden worden pas na de autoconfiguratie geüpload, er viel toen nog niets af te leiden. Zonder deze regels zien de modules geen systeemgegevens. Stap 04, blok “sudo voor de webserver”.
  • ! Nginx does not read .htaccess — vóór Apache staat Nginx en het is niet gelukt het verbod automatisch in zijn config te zetten. Doe dit beslist: anders worden data/, keys/, database/ en config.php naar buiten uitgeleverd, langs .htaccess heen. Stap 03, blok “Als er vóór Apache Nginx staat”.
  • UFW installed but inactive — de firewall is geïnstalleerd maar uitgeschakeld: op een ingerichte server zet het script hem niet zelf aan, om u de toegang niet af te snijden. Zet hem zelf aan en sta daarbij beslist uw eigen SSH-poort toe:
    sudo ufw allow OpenSSH # niet-standaard SSH-poort: sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp sudo ufw enable
  • Fail2ban installed but not running — start hem: sudo systemctl enable --now fail2ban.
  • Database server present … but not running — start de database vóór stap 04: sudo systemctl enable --now mariadb (of mysql — afhankelijk van wat er staat).
  • Certbot skipped — issue SSL in … — het certificaat wordt uitgegeven met de Let's Encrypt-schakelaar in het hostingpaneel; stap 06 heeft u niet nodig.
Is in het controleblok alles in orde, dan is de laatste regel All checks passed. Punten met ! vragen om aandacht; details worden naar de log geschreven, het pad daarvan drukt het script helemaal aan het eind af (Log: …).

02. Domein en DNS

Om het dashboard te openen via een adres als monitor.example.com en gratis SSL te krijgen, moet het domein naar de server verwijzen. Maak in het DNS-configuratiescherm (bij uw registrar of hoster) een A-record aan:

Type: A Naam: monitor (subdomein → monitor.example.com) of @ (hoofddomein → example.com) Waarde: 203.0.113.10 ← IP van uw server TTL: 3600

Controleer na enkele minuten (soms tot een uur) of het domein naar de server verwijst:

dig +short monitor.example.com # moet uw IP teruggeven # of, als dig ontbreekt: getent hosts monitor.example.com
Het SSL-certificaat (stap 06) wordt alleen op een domein uitgegeven — daarom moet DNS vóór het uitgeven van het certificaat naar de server verwijzen.

03. Paneelbestanden uploaden

Het gewone geval (verse VPS). De automatische configuratie heeft al de paneelmap /var/www/monitor aangemaakt en de Apache-site geconfigureerd (DocumentRoot naar de root van het paneel, PHP-FPM, AllowOverride voor .htaccess). In de uitvoer van het script is dat de regel vhost … → DocumentRoot …. U hoeft niet apart een map en vhost aan te maken — upload gewoon de bestanden en stel de rechten in.
Twee gevallen waarin er GEEN vhost is aangemaakt — het script meldt dat expliciet aan het eind van zijn werk. Werk dan eerst de betreffende tak hieronder af en upload pas daarna de bestanden.

Tak “Server met hostingpaneel” (in de uitvoer: Control panel detected (…)). Over de sites op zo'n server gaat het paneel, en een eigen vhost maakt het script bewust niet aan — die zou bij de eerste de beste hercompilatie van de configs door het paneel worden overschreven. De volgorde is als volgt:

  1. Maak een webdomein aan in het hostingpaneel (HestiaCP e.d.) — de DocumentRoot daarvan blijft zoals hij is.
  2. Upload de distributie volledig naar de public_html van dat domein: naast index.php, api/, assets/ moeten ook de service-onderdelen config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/ daarin staan. U hoeft niets boven de webroot te plaatsen: de servicemappen zijn afgeschermd door het bestand .htaccess uit de distributie, en onder Nginx door het verbod dat het script in de config van het domein heeft gezet.
  3. SSL wordt uitgegeven met de Let's Encrypt-schakelaar in het paneel zelf — sla stap 06 over.
  4. Daarna volgen de rechten (verderop in deze stap), de database (stap 04) en config.php (stap 05). Vervang de paden in de commando's door /home/account/web/domein/public_html, en de eigenaar door de gebruiker van dat domein in plaats van www-data.

Tak “Vhost handmatig aanmaken” (in de uitvoer: No vhost created (no domain given)). Dat komt alleen voor bij het profiel “Ingerichte server”, wanneer er geen domein is meegegeven. Het eenvoudigst is de opdracht uit uw account gewoon opnieuw te starten, mét domein:

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

Opnieuw uitvoeren is veilig: wat al gedaan is, wordt niet gedupliceerd. Moet de vhost toch met de hand worden aangemaakt — hier is dezelfde config als die het installatieprogramma wegschrijft:

sudo mkdir -p /var/www/monitor # De PHP-FPM-socket bepalen we automatisch — de PHP-versie verschilt per server. 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 is hier verplicht. Een vhost zonder naam wordt de standaardsite van Apache en gaat andermans domeinen op dezelfde server bedienen. Om dezelfde reden moet u 000-default.conf op een ingerichte server niet uitschakelen: die site kan zijn omgebouwd tot iemands productiesite — op een verse VPS ruimt het installatieprogramma hem zelf op, hier hoeft u dat niet te doen.
Als er vóór Apache Nginx staat (in de uitvoer: ! Nginx does not read .htaccess). Nginx levert statische bestanden rechtstreeks van schijf en leest .htaccess niet — de servicemappen komen dan naar buiten open te staan, ook al schermt Apache ze correct af. Het script heeft alvast een bestand met verboden klaargezet; dat moet u in het blok server{} van uw site opnemen en Nginx herladen:
include /etc/nginx/snippets/arciveo-deny.conf;
sudo nginx -t && sudo systemctl reload nginx # Controle: moet 403 teruggeven, niet de inhoud van het bestand curl -sI https://monitor.example.com/config.php | head -1
De paneelbestanden (het distributiearchief) downloadt u na aankoop in uw account op my.arciveo.com → “Downloads”. Pak het archief uit voordat u het naar de server uploadt.

Upload de inhoud van de distributie naar /var/www/monitor (zodat daarin public/, assets/, config.php enz. komen) — via SFTP/SCP (FileZilla / WinSCP) of met het commando scp vanaf uw lokale computer:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Om uw domein direct in de vhost te laten opnemen (ServerName), geeft u het al bij stap 01 mee aan het autoconfiguratiecommando: … | sudo bash -s -- monitor.example.com (of vult u het domein in bij het veld “Paneeldomein” in uw account). Geeft u geen domein mee — dan reageert het paneel op elke host en op IP, en schrijft certbot de ServerName weg bij het uitgeven van SSL (stap 06); opnieuw installeren is niet nodig.
Stel de bestandsrechten in — dit is een verplichte stap. Heeft u geüpload als root of via SFTP, dan zijn de bestanden eigendom van root en kan de webserver (www-data) ze niet lezen — het paneel opent leeg of met een 403-fout (in de log: .htaccess unreadable / directory not executable). Het commando hieronder lost dit op:
# Rechten van de hele webroot normaliseren: een door root aangemaakte map is # ontoegankelijk voor de webserver (www-data) — zonder dit geeft het paneel een lege pagina of 403. cd /var/www/monitor # Werkmappen maken we aan VÓÓR chown — anders blijven nieuwe mappen root:root # en kan de webserver (www-data) bij chmod 750 er niet in schrijven. 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

Geef uzelf toegang om via SFTP te uploaden. Na het commando hierboven zijn alle bestanden eigendom van www-data, terwijl FileZilla / WinSCP verbinden met uw eigen gebruiker — het uploaden mislukt dan met SSH_FX_PERMISSION_DENIED (Permission denied). Kies een van de twee varianten.

Variant A — een ACL alleen voor uw gebruiker (aanbevolen). Alleen u krijgt schrijfrechten; de webserver kan de code van het paneel nog steeds niet overschrijven:

sudo apt install -y acl # Schrijfrechten voor uw gebruiker op de hele paneelmap: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Dezelfde regel als standaard — voor bestanden en mappen die later worden aangemaakt: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Variant B — via de groep www-data. Eenvoudiger, maar ook de webserver krijgt schrijfrechten op de bestanden van het paneel: bij een kwetsbaarheid in PHP zou de code vervangen kunnen worden. De volgorde van de commando's is van belang — config.php en de werkmappen worden als laatste dichtgezet:

sudo usermod -aG www-data deploy # Schrijfrecht voor de groep + setgid (bit 2): via SFTP geüploade bestanden # blijven in de groep www-data — anders kan het paneel ze niet overschrijven. 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
Na variant B maakt u opnieuw verbinding in FileZilla (Server → Verbinding verbreken, daarna opnieuw inloggen) — de nieuwe groep werkt pas bij een nieuwe login, tot dan heeft u nog steeds geen rechten. Controle: id deploy — in de groepenlijst moet www-data verschijnen; ls -ld /var/www/monitor — rechten drwxrwsr-x, de letter s in plaats van x betekent dat setgid is gezet.

04. Database

Maak een database en gebruiker aan en importeer daarna het schema. Het databaseblok plakt u volledig in de terminal (sudo mysql logt in als root via de unix-socket — het root-wachtwoord is niet nodig). monitor_db en monitor_user zijn voorbeeldnamen; u mag zelf iets kiezen. Onthoud de databasenaam, de gebruiker en het wachtwoord — die vult u in de volgende stap in bij config.php:

# 1. Database. Databasenaam, gebruiker en wachtwoord stelt u ÉÉN keer hieronder in; ze worden in alle regels ingevuld. # Het blok plakt u VOLLEDIG in de terminal; sudo mysql logt in als root via de unix-socket # (root-wachtwoord niet nodig). Gebruik NIET het interactieve `sudo mysql -u root -p` # met kopiëren en plakken — bij het plakken belanden SQL-regels in de wachtwoordprompt en gaan verloren. DBNAME='monitor_db' # ← databasenaam, kan blijven staan DBUSER='monitor_user' # ← databasegebruiker, kan blijven staan DBPASS='CHOOSE_A_PASSWORD' # ← wachtwoord, kies uw eigen 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 # Controle (moet $DBNAME tonen): mysql -u "$DBUSER" -p"$DBPASS" -e "SHOW DATABASES;" # Vul dezelfde drie waarden in config.php → DB_NAME, DB_USER, DB_PASS in.
Meestal hoeft u het schema niet te importeren — het dashboard maakt bij het eerste bezoek in de browser zelf de tabellen en het admin-account aan (uit database/db.sql) als de database leeg is.

Zijn de tabellen niet aangemaakt (het paneel toont een fout bij de databaseverbinding of een leeg scherm in plaats van het inlogformulier) — importeer het schema dan handmatig. Het commando voert u uit in de root van het paneel; de waarden komen uit het blok hierboven:

# Schema importeren: cd /var/www/monitor && mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" < database/db.sql # Controle — er moet een lijst met tabellen verschijnen: mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" -e "SHOW TABLES;"
Zijn de variabelen $DBNAME / $DBUSER / $DBPASS al “vergeten” (nieuwe terminalsessie) — vul de waarden dan met de hand in het commando in of stel ze opnieuw in met dezelfde drie regels uit het blok hierboven.
sudo voor de webserver. Normaal gesproken zijn de regels al door de automatische configuratie weggeschreven en zien de modules de systeemgegevens meteen. Maar stond er in de uitvoer van het script de regel sudo rules NOT written — dan viel het account van het paneel nergens uit af te leiden (de bestanden waren nog niet geüpload) en zijn de regels niet aangemaakt. Zonder die regels blijven onderdelen als firewall, Fail2ban en CrowdSec leeg. Nu de bestanden er staan, voert u de opdracht uit uw account nog een keer uit, met het account expliciet erbij:
curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo ARCIVEO_USER=www-data bash -s -- monitor.example.com
Vervang www-data door de gebruiker waaronder de PHP van uw site draait (op een hostingpaneel is dat meestal de eigenaar van het domein). Die vindt u zo:
ps -o user= -C php-fpm8.3 | sort -u # vul uw eigen versie in # of: ps aux | grep -m3 '[p]hp-fpm'
Controle na het opnieuw uitvoeren: het bestand /etc/sudoers.d/monitor bestaat en bevat regels met uw gebruiker.

05. config.php instellen

config.php in de hoofdmap van het dashboard (/var/www/monitor/config.php) is het enige bestand dat u handmatig moet bewerken. Alle dashboardinstellingen staan erin als define()-constanten. Open het in een editor:

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

Vul uw eigen waarden in op de gemarkeerde plekken; laat de rest ongewijzigd:

// --- Database (uit stap 04) --- define('DB_HOST', 'localhost'); // laten staan define('DB_NAME', 'db_name'); // wat u in stap 04 aanmaakte define('DB_USER', 'user'); // wat u in stap 04 aanmaakte define('DB_PASS', 'db_password'); // wat u in stap 04 instelde define('DB_CHARSET', 'utf8mb4'); // laten staan // --- Applicatie --- define('APP_URL', 'https://monitor.example.com'); // adres van het dashboard, zonder slash aan het eind define('TIMEZONE', 'Europe/Amsterdam'); // uw tijdzone // --- Sessieduur --- define('SESSION_LIFETIME', 28800); // inactiviteit tot opnieuw inloggen, sec (28800 = 8 u)

Wat u aanpast:

  • DB_NAME, DB_USER, DB_PASS — exact dezelfde databasenaam, gebruiker en wachtwoord die u instelde bij het aanmaken van de database in stap 04 (als u de voorbeelden behield — monitor_db / monitor_user). Laat DB_HOST en DB_CHARSET ongewijzigd.
  • APP_URL — het volledige adres van het dashboard met https://, zonder slash aan het eind en zonder www. Moet overeenkomen met het domein waarvoor u de licentie activeert (stap 07), anders wordt de sleutel geweigerd.
  • TIMEZONE — uw tijdzone (lijst — timedatectl list-timezones). Beïnvloedt alleen hoe het dashboard datums toont; op het starttijdstip van cron-taken heeft het geen invloed (daar geldt de systeemtijdzone).
  • SESSION_LIFETIME — na hoeveel seconden inactiviteit het dashboard opnieuw om inloggen vraagt (standaard 8 uur). Bijv. 3600 = 1 uur, 86400 = een etmaal.
  • Het blok voor foutregistratie (display_errors, log_errors, error_log) — laat op de standaardwaarden staan.

Sla het bestand op (Ctrl+O, Enter, daarna Ctrl+X) en herstart PHP-FPM — anders worden de wijzigingen door OPcache niet toegepast:

sudo systemctl restart php*-fpm
config.php is een geheim bestand (het bevat het databasewachtwoord). Het staat in de hoofdmap van het dashboard, die tevens de webroot is, maar is afgeschermd: rechten 640 (ingesteld in stap 03) en een expliciet verbod in de .htaccess van de hoofdmap. Plaats het niet in openbare repositories en stuur het niet naar support met het echte wachtwoord.
Een uitgebreide bespreking van alle parameters vindt u in de FAQ: “Het bestand config.php — alle dashboardinstellingen”.

06. SSL uitgeven (HTTPS)

Het dashboard werkt uitsluitend via HTTPS. De inlogsessie gebruikt een beveiligde cookie en WebAuthn (2FA) werkt volgens de standaard alleen op HTTPS. Via http:// kunt u niet inloggen.
Op een server met een hostingpaneel heeft u deze stap niet nodig (in de uitvoer van het script: Certbot skipped — issue SSL in …). Het certificaat wordt uitgegeven met de Let's Encrypt-schakelaar op het webdomein in het paneel zelf — zo verzorgt het paneel ook de verlenging.

certbot en de plug-in voor Apache zijn al door de automatische configuratie geïnstalleerd. De DNS van het domein moet al naar de server verwijzen (stap 02). Uitgeven met één opdracht:

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

Moet het dashboard ook met www. te openen zijn — noem dan beide namen in één opdracht, anders toont de browser op het tweede adres een certificaatwaarschuwing:

sudo certbot --apache -d monitor.example.com -d www.monitor.example.com
Voeg de tweede naam alleen toe als daarvoor ook een A-record bestaat dat naar deze server wijst (stap 02). Anders kan Let's Encrypt hem niet verifiëren en geeft het het certificaat helemaal niet uit — ook niet voor het hoofddomein.
Wat certbot zal vragen:
  1. Enter email address — uw e-mail (daar komen meldingen over het verlopen van het certificaat).
  2. Terms of Service … (Y)es/(N)o — Y.
  3. Share email with the EFF … (Y)es/(N)o — naar eigen keuze.
Daarna geeft certbot zelf het certificaat uit, schrijft <VirtualHost *:443>, stelt de omleiding http→https en automatische verlenging in. Tot slot: Successfully enabled HTTPS.
Mislukt het uitgeven, controleer dan of dig +short monitor.example.com het IP-adres van de server teruggeeft en of de poorten 80/443 open zijn (sudo ufw allow 80,443/tcp).

Na de uitgifte: https://monitor.example.com opent met een slotje, http:// leidt om naar https://.

07. Aanmelden en eerste configuratie

Open https://monitor.example.com, meld u aan met admin / useradmin en doorloop de checklist:

  1. Wachtwoord van admin wijzigen — sectie “Gebruikers” in het menu.
  2. WebAuthn (2FA) inschakelen — “WebAuthn-sleutels” → sleutel/passkey registreren (vereist HTTPS). Registreer er meteen twee: als u uw enige sleutel verliest, kunt u er niet meer mee aanmelden. Meer info.
  3. Toegang op IP beperken — “Instellingen” → “Toegangsbeperking op IP” (voer uw eigen IP in vóór het inschakelen, anders sluit u uzelf buiten).
  4. Licentie invoeren — activeer de activatiecode ARCIVEO-… uit uw account voor uw domein en plak de sleutel in “Instellingen” → “Licentie”. Meer info.
  5. Meldingen instellen — Telegram en/of Email in “Instellingen”. Meer info.
  6. Installatieprogramma verwijderen public/start_db.php, als het is achtergebleven: hiermee kan de database zonder authenticatie opnieuw worden aangemaakt. Zolang het bestand in de hoofdmap van het paneel of in public/ staat, waarschuwt het paneel ervoor met een rode banner.
  7. De eerste controles handmatig starten — anders blijft een deel van de onderdelen tot de nacht leeg (zie het blok hieronder).
Waarom “Lynis-audit” en “Logwatch” meteen leeg zijn. De automatische configuratie heeft de tools geïnstalleerd en cron-taken aangemaakt, maar de controles zelf niet uitgevoerd — die gaan volgens schema lopen: Lynis om 03:00, Logwatch om 06:00, debsums om 04:30, ClamAV om 01:30. Tot dat moment melden de onderdelen eerlijk dat er nog geen rapporten zijn. Wilt u geen etmaal wachten, draai ze dan één keer met de hand:
# Lynis-audit — eerste rapport (een paar minuten): sudo /usr/local/bin/lynis-scan.sh # Logwatch-rapport over de afgelopen 24 uur: sudo /usr/local/bin/logwatch_daily.sh # Pakketintegriteit (debsums) — op een grote server duurt dit lang: sudo /usr/local/bin/debsums-scan.sh
Lynis kunt u ook rechtstreeks vanuit het paneel starten — met de knop “Audit starten” op de pagina “Lynis-audit”: die voert hetzelfde script op de achtergrond uit en werkt het rapport zelf bij. Daarna gaat alles volgens schema en hoeft u niets meer met de hand te starten.
De eerste antivirusscan (sudo /usr/local/bin/clamav-scan.sh) belast schijf en processor zwaar en kan een uur of langer duren — op een productieserver kunt u beter de nachtelijke start om 01:30 afwachten. De onderdelen “Schijven (SMART)”, “Prestaties” en “Beveiligingsupdates” vullen zichzelf: respectievelijk elke 30 minuten, elke 5 minuten en één keer per uur.
Klaar. Naslag voor elke tool vindt u in de FAQ.
Wilt u op deze server nog een site met een eigen domein draaien — zie de FAQ: “Een tweede site op deze server (nog een domein)”.