Automatische Installation

Automatischer Weg: Ein Skript aus dem Benutzerkonto richtet den gesamten Server ein (Web-Stack Apache + PHP, Datenbank, Sicherheitswerkzeuge, cron). Danach nur noch das Dashboard bereitstellen, SSL ausstellen und die Lizenz eingeben. Läuft unter Ubuntu/Debian: Auf einem frischen VPS richtet es alles von Grund auf ein, auf einem bereits konfigurierten Server nur additiv (Profil „Konfigurierter Server“, Schritt 01). Alle Befehle unten der Reihe nach – einfach von oben nach unten durchgehen.

Platzhalterwerte in den Befehlen durch eigene ersetzen: monitor.example.com – Ihre Domain; 203.0.113.10 – die reale IP des Servers; /var/www/monitor – das Dashboard-Verzeichnis (wo public/, assets/, config.php liegen); für die DB ein eigenes Passwort wählen.
Das Komplettpaket („Vollständiger Schutz“) ist für einen frischen VPS gedacht. Auf einem sauberen Ubuntu/Debian richtet es das Sicherheitssystem von Grund auf ein – Fail2ban (jail.local), root-crontab, UFW-Regeln, Apache-Konfiguration. Ist der Server bereits konfiguriert (laufendes Dashboard, Websites, Mail, eigene jails) – wählen Sie das Profil „Konfigurierter Server“: Es nimmt nur additive Änderungen vor und lässt Ihre Firewall, Fail2ban, Mail, SSH und sysctl unberührt. Erkennt das Skript eine Hosting-Panel, wechselt es selbst in diesen Modus. Vor dem ersten Start kann ein Testlauf aktiviert werden (Häkchen im Benutzerkonto) – er zeigt, was getan würde, ohne etwas zu ändern. Erstellen Sie auf einem produktiven Server zur Sicherheit einen Snapshot.

01. Autokonfigurationsbefehl aus dem Benutzerkonto

Den Befehl finden Sie in Ihrem Benutzerkonto my.arciveo.com → Bereich „Server-Einrichtung“ (verfügbar nach dem Erwerb von Arcivéo Monitor). Er ist an Ihr Konto gebunden und enthält ein persönliches Token.

Das Skript richtet den gesamten Server ein: Web-Stack (Apache + PHP), Datenbank, SSL-Werkzeuge, den vollständigen Satz an Schutzmitteln und Cron-Aufgaben (Lynis, SMART, debsums, Logwatch, Tagesbericht, ipsum-Aktualisierung).

1) Schutzstufe wählen (im Benutzerkonto, vor dem Kopieren des Befehls):

  • Vollständiger Schutz (empfohlen) — UFW (Firewall), Fail2ban, CrowdSec + Bouncer, ipsum (IP-Sperrliste), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (Anti-DoS), AIDE (Dateiintegrität), debsums, ClamAV + maldet (Antivirus), Auditd, AppArmor, Monit, Lynis (Audit), Logwatch, automatische Sicherheitsupdates.
  • Abgespeckt — für VPS mit wenig RAM: Grundausstattung ohne schwere Komponenten.
  • Eingerichteter Server (Hosting-Panel) — für einen bereits laufenden Server mit Panel (HestiaCP usw.), Websites und E-Mail: nur additive Änderungen (Nachinstallation von Werkzeugen, Cron, sudo-Regeln), während Firewall, Fail2ban, E-Mail, SSH und sysctl unangetastet bleiben. Auf einem Server mit Panel wählt das Skript diesen Modus selbst.
Testlauf. Im Benutzerkonto können Sie das Häkchen „Testlauf“ setzen — dann zeigt der Befehl nur, was das Skript installieren und ändern würde, und beendet sich, ohne etwas anzutasten. Nützlich auf einem bereits eingerichteten Server: erst der Testlauf, dann der echte Start ohne Häkchen.

2) Führen Sie auf dem Server als root den Befehl aus dem Benutzerkonto aus — er sieht so aus:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Halten Sie den Befehl geheim — er ist an Ihr Konto gebunden. Der Link hat eine begrenzte Gültigkeit; ist er abgelaufen, klicken Sie im Benutzerkonto auf „Neuen Link abrufen“.
Nach der Autokonfiguration ist der Webserver Apache + PHP-FPM, und die Sicherheitswerkzeuge sowie Cron-Aufgaben sind bereits installiert und laufen „out of the box“ — es muss nichts weiter eingerichtet werden.

02. Domain und DNS

Damit das Dashboard über eine Adresse wie monitor.example.com erreichbar ist und ein kostenloses SSL erhält, muss die Domain auf den Server zeigen. Erstellen Sie im DNS-Verwaltungspanel (beim Registrar oder Hoster) einen A-Eintrag:

Typ: A Name: monitor (Subdomain → monitor.example.com) oder @ (Root-Domain → example.com) Wert: 203.0.113.10 ← IP Ihres Servers TTL: 3600

Prüfen Sie nach einigen Minuten (manchmal bis zu einer Stunde), ob die Domain auf den Server zeigt:

dig +short monitor.example.com # sollte Ihre IP zurückgeben # oder, falls dig fehlt: getent hosts monitor.example.com
Das SSL-Zertifikat (Schritt 06) wird nur für eine Domain ausgestellt — deshalb muss der DNS vor der Zertifikatsausstellung auf den Server zeigen.

03. Panel-Dateien hochladen

Die Autokonfiguration hat bereits das Panel-Verzeichnis /var/www/monitor angelegt und die Apache-Site eingerichtet (DocumentRoot auf das Panel-Stammverzeichnis, PHP-FPM, AllowOverride für .htaccess). Ein separates Verzeichnis oder ein vhost muss nicht angelegt werden – einfach die Dateien hochladen und die Rechte setzen.
Die Panel-Dateien (das Distributions-Archiv) werden nach dem Kauf im Benutzerkonto unter my.arciveo.com„Downloads“ heruntergeladen. Entpacken Sie das Archiv vor dem Upload auf den Server.

Laden Sie den Inhalt der Distribution nach /var/www/monitor hoch (sodass darin public/, assets/, config.php usw. liegen) – per SFTP/SCP (FileZilla / WinSCP) oder mit dem Befehl scp vom lokalen Rechner:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Damit im vhost gleich Ihre Domain eingetragen wird (ServerName), übergibt man sie bereits in Schritt 01 an den Autokonfigurations-Befehl: … | sudo bash -s -- monitor.example.com (oder gibt die Domain im Feld „Panel-Domain“ im Benutzerkonto an). Wurde keine Domain übergeben, antwortet das Panel auf jeden Host und über die IP-Adresse, und den ServerName trägt certbot beim Ausstellen des SSL-Zertifikats ein (Schritt 06); eine Neuinstallation ist nicht nötig.
Setzen Sie die Dateirechte – dieser Schritt ist zwingend. Wurde unter root oder per SFTP hochgeladen, gehören die Dateien root, und der Webserver (www-data) kann sie nicht lesen – das Panel öffnet sich leer oder mit Fehler 403 (im Log: .htaccess unreadable / directory not executable). Der Befehl unten behebt das:
# Rechte des gesamten Webroots normalisieren: ein von root angelegtes # Verzeichnis ist für den Webserver (www-data) nicht zugänglich – ohne dies liefert das Panel eine leere Seite oder 403. cd /var/www/monitor # Arbeitsordner VOR chown anlegen – sonst bleiben neue Verzeichnisse root:root # und bei chmod 750 kann der Webserver (www-data) nicht in sie schreiben. 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

Schalten Sie den SFTP-Upload für sich selbst frei. Nach dem Befehl oben gehören alle Dateien www-data, während FileZilla / WinSCP sich unter Ihrem eigenen Benutzer verbinden — der Upload scheitert dann mit SSH_FX_PERMISSION_DENIED (Permission denied). Wählen Sie eine der beiden Varianten.

Variante A — eine ACL nur für Ihren Benutzer (empfohlen). Schreibrechte bekommen nur Sie; der Webserver kann den Panel-Code weiterhin nicht überschreiben:

sudo apt install -y acl # Schreibrechte für Ihren Benutzer auf das gesamte Panel-Verzeichnis: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Dieselbe Regel als Vorgabe — für später angelegte Dateien und Ordner: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Variante B — über die Gruppe www-data. Einfacher, aber der Webserver erhält ebenfalls Schreibrechte auf die Panel-Dateien: bei einer Schwachstelle in PHP ließe sich der Code austauschen. Die Reihenfolge der Befehle ist wichtig — config.php und die Arbeitsordner werden zuletzt abgesichert:

sudo usermod -aG www-data deploy # Schreibrecht für die Gruppe + setgid (Bit 2): per SFTP hochgeladene Dateien # bleiben in der Gruppe www-data — sonst kann das Panel sie nicht überschreiben. 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
Nach Variante B verbinden Sie sich in FileZilla neu (Server → Trennen, danach erneut anmelden) — die neue Gruppe wird erst bei einer neuen Anmeldung wirksam, vorher haben Sie weiterhin keine Rechte. Prüfen: id deploy — in der Gruppenliste muss www-data erscheinen; ls -ld /var/www/monitor — Rechte drwxrwsr-x, das s anstelle von x bedeutet, dass setgid gesetzt ist.

04. Datenbank

Erstellen Sie Datenbank und Benutzer und importieren Sie dann das Schema. Der Datenbank-Block wird vollständig ins Terminal eingefügt (sudo mysql meldet root über den Unix-Socket an — kein root-Passwort nötig). monitor_db und monitor_user sind Beispielnamen, Sie können beliebige eigene wählen; merken Sie sich Datenbankname, Benutzer und Passwort — Sie tragen sie im nächsten Schritt in config.php ein:

# 1. Datenbank. Das Passwort wird EINMAL in DBPASS gesetzt und in alle Zeilen eingesetzt. # Der Block wird VOLLSTÄNDIG ins Terminal eingefügt; sudo mysql meldet root über den Unix-Socket an # (kein root-Passwort nötig). Verwenden Sie NICHT das interaktive `sudo mysql -u root -p` # mit Copy-Paste — beim Einfügen landen die SQL-Zeilen in der Passwortabfrage und gehen verloren. DBPASS='CHOOSE_A_PASSWORD' # ← ändern Sie nur diese Zeile 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 # Prüfung (sollte monitor_db anzeigen): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Dasselbe Passwort tragen Sie in config.php → DB_PASS ein.
Das Schema muss nicht importiert werden — das Dashboard erstellt Tabellen und das Konto admin beim ersten Aufruf im Browser selbst (aus database/db.sql), sofern die Datenbank leer ist.
sudo für den Webserver hat die automatische Einrichtung bereits gesetzt — die Module sehen Systemdaten sofort. sudo separat einzurichten ist nur nötig, wenn PHP unter einem nicht standardmäßigen Benutzer läuft (nicht www-data).

05. config.php einrichten

config.php im Wurzelverzeichnis des Dashboards (/var/www/monitor/config.php) ist die einzige Datei, die von Hand bearbeitet werden muss. Alle Dashboard-Einstellungen sind darin als define()-Konstanten festgelegt. Öffnen Sie sie im Editor:

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

Tragen Sie Ihre Werte an den hervorgehobenen Stellen ein; den Rest lassen Sie unverändert:

// --- Datenbank (aus Schritt 04) --- define('DB_HOST', 'localhost'); // unverändert lassen define('DB_NAME', 'db_name'); // in Schritt 04 erstellt define('DB_USER', 'user'); // in Schritt 04 erstellt define('DB_PASS', 'db_password'); // in Schritt 04 festgelegt define('DB_CHARSET', 'utf8mb4'); // unverändert lassen // --- Anwendung --- define('APP_URL', 'https://monitor.example.com'); // Dashboard-Adresse, ohne Schrägstrich am Ende define('TIMEZONE', 'Europe/Berlin'); // Ihre Zeitzone // --- Sitzungsdauer --- define('SESSION_LIFETIME', 28800); // Inaktivität bis zur erneuten Anmeldung, Sek. (28800 = 8 Std.)

Was zu ändern ist:

  • DB_NAME, DB_USER, DB_PASS — exakt derselbe Datenbankname, Benutzer und dasselbe Passwort, die Sie beim Anlegen der DB in Schritt 04 festgelegt haben (falls Sie die Beispiele behalten haben — monitor_db / monitor_user). DB_HOST und DB_CHARSET nicht anrühren.
  • APP_URL — die vollständige Dashboard-Adresse mit https://, ohne Schrägstrich am Ende und ohne www. Sie muss mit der Domain übereinstimmen, für die Sie die Lizenz aktivieren (Schritt 07), sonst wird der Schlüssel abgelehnt.
  • TIMEZONE — Ihre Zeitzone (Liste — timedatectl list-timezones). Betrifft nur die Anzeige der Daten im Dashboard; auf die Startzeit der cron-Aufgaben hat sie keinen Einfluss (dort gilt die Zeitzone des Systems).
  • SESSION_LIFETIME — nach wie vielen Sekunden Inaktivität das Dashboard eine erneute Anmeldung verlangt (Standard: 8 Stunden). Z. B. 3600 = 1 Stunde, 86400 = 1 Tag.
  • Den Block zum Fehler-Logging (display_errors, log_errors, error_log) — auf Standard belassen.

Speichern Sie die Datei (Ctrl+O, Enter, dann Ctrl+X) und starten Sie PHP-FPM neu — sonst werden die Änderungen wegen OPcache nicht übernommen:

sudo systemctl restart php*-fpm
config.php ist eine geheime Datei (sie enthält das DB-Passwort). Sie liegt im Wurzelverzeichnis des Dashboards, das zugleich das Web-Root ist, ist aber gesperrt: Rechte 640 (in Schritt 03 gesetzt) und eine ausdrückliche Sperre in der .htaccess des Wurzelverzeichnisses. Legen Sie sie nicht in öffentliche Repositories und geben Sie sie dem Support nicht mit echtem Passwort weiter.
Eine ausführliche Erläuterung aller Parameter — in den FAQ: „Die Datei config.php — alle Dashboard-Einstellungen“.

06. SSL ausstellen (HTTPS)

Das Dashboard funktioniert nur über HTTPS. Die Anmeldesitzung nutzt ein sicheres Cookie, und WebAuthn (2FA) funktioniert laut Standard nur über HTTPS. Über http:// ist keine Anmeldung möglich.

certbot und das Apache-Plugin wurden bereits von der automatischen Einrichtung installiert. Der DNS der Domain muss bereits auf den Server zeigen (Schritt 02). Ausstellung mit einem Befehl:

sudo certbot --apache -d monitor.example.com
Wonach certbot fragt:
  1. Enter email address — Ihre E-Mail (dorthin gehen Hinweise zum Ablauf des Zertifikats).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — nach Ihrem Ermessen.
Danach stellt certbot das Zertifikat selbst aus, trägt <VirtualHost *:443> ein, richtet die Weiterleitung http→https und die automatische Verlängerung ein. Am Ende — Successfully enabled HTTPS.
Falls die Ausstellung fehlschlägt — prüfen Sie, dass dig +short monitor.example.com die Server-IP zurückgibt und die Ports 80/443 offen sind (sudo ufw allow 80,443/tcp).

Nach der Ausstellung: https://monitor.example.com öffnet sich mit Schloss, http:// leitet auf https:// weiter.

07. Anmeldung und Ersteinrichtung

Öffnen Sie https://monitor.example.com, melden Sie sich mit admin / useradmin an und arbeiten Sie die Checkliste ab:

  1. admin-Passwort ändern — Bereich „Benutzer“ im Menü.
  2. WebAuthn (2FA) aktivieren — „WebAuthn-Schlüssel“ → Schlüssel/Passkey registrieren (erfordert HTTPS). Registrieren Sie gleich zwei: Bei Verlust des einzigen Schlüssels ist die Anmeldung damit nicht mehr möglich. Mehr dazu.
  3. Zugriff per IP beschränken — „Einstellungen“ → „Zugriffsbeschränkung per IP“ (tragen Sie Ihre IP vor dem Aktivieren ein, sonst sperren Sie sich selbst aus).
  4. Lizenz eingeben — Aktivierungscode ARCIVEO-… aus dem Benutzerkonto auf Ihre Domain aktivieren und den Schlüssel unter „Einstellungen“ → „Lizenz“ einfügen. Mehr dazu.
  5. Benachrichtigungen einrichten — Telegram und/oder E-Mail unter „Einstellungen“. Mehr dazu.
  6. Installationsprogramm entfernen public/start_db.php, falls noch vorhanden: es erlaubt, die Datenbank ohne Anmeldung neu anzulegen. Solange die Datei im Panel-Stammverzeichnis oder in public/ liegt, warnt das Panel mit einem roten Banner davor.
Fertig. Die Sicherheitswerkzeuge laufen bereits — das Dashboard zeigt sofort deren Status und die Sicherheitsbewertung. Ein Nachschlagewerk zu jedem Werkzeug finden Sie in den FAQ.
Arcivéo - Security Monitor © 2026