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.

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 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 — u hoeft niets extra in te stellen.

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

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). U hoeft niet apart een map en vhost aan te maken — upload gewoon de bestanden en stel de rechten in.
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. Het wachtwoord stelt u ÉÉN keer in bij DBPASS en wordt 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. DBPASS='CHOOSE_A_PASSWORD' # ← wijzig alleen deze regel sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # Controle (moet monitor_db tonen): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Ditzelfde wachtwoord vult u in config.php → DB_PASS in.
Het schema hoeft u 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.
sudo voor de webserver is door de automatische configuratie al ingesteld — modules zien de systeemgegevens meteen. sudo hoeft u alleen apart in te stellen als PHP onder een niet-standaard gebruiker draait (niet www-data).

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.

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
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)oY.
  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.
Klaar. De beveiligingstools werken al — het dashboard toont meteen hun status en de Beveiligingsscore. Naslag voor elke tool vindt u in de FAQ.
Arcivéo - Security Monitor © 2026