Automatisk installation

Automatisk metode: ét script fra din konto klargør hele serveren (webstakken Apache + PHP, database, sikkerhedsværktøjer, cron). Derefter udruller du panelet, udsteder SSL og indtaster licensen. Virker på Ubuntu/Debian: på en frisk VPS opsættes alt fra bunden, på en allerede konfigureret server kun additivt (profilen “Konfigureret server”, trin 01). Alle kommandoer nedenfor er i rækkefølge — bare bladr fra top til bund.

Pladsholderværdier i kommandoerne skal du udskifte med dine egne: monitor.example.com — dit domæne; 203.0.113.10 — serverens rigtige IP; /var/www/monitor — panelets rod (hvor public/, assets/ og config.php ligger); vælg selv en databaseadgangskode.
Det fulde sæt (“Fuld beskyttelse”) er beregnet til en frisk VPS. På en ren Ubuntu/Debian opsætter det sikkerhedssystemet fra bunden — Fail2ban (jail.local), root-crontab, UFW-regler, Apache-konfig. Hvis serveren allerede er konfigureret (kørende panel, sites, mail, egne jails) — så vælg profilen “Konfigureret server”: den foretager kun additive ændringer og rører ikke din firewall, Fail2ban, mail, SSH eller sysctl. Registreres et hostingpanel, skifter scriptet selv til denne tilstand. Før første kørsel kan du slå tørkørsel til (afkrydsning i kontoen) — den viser, hvad der vil blive gjort, uden at ændre noget. På en produktionsserver bør du for en sikkerheds skyld tage et snapshot.

01. Kommando til automatisk opsætning fra kontoen

Kommandoen henter du på din konto my.arciveo.com → afsnittet “Serveropsætning” (tilgængelig efter køb af Arcivéo Monitor). Den er knyttet til din konto og indeholder et personligt token.

Scriptet forbereder hele serveren: webstakken (Apache + PHP), databasen, værktøjer til SSL, hele sættet af beskyttelsesværktøjer og cron-job (Lynis, SMART, debsums, Logwatch, daglig rapport, opdatering af ipsum).

1) Vælg beskyttelsesniveau (på kontoen, før du kopierer kommandoen):

  • Fuld beskyttelse (anbefales) — UFW (firewall), Fail2ban, CrowdSec + bouncer, ipsum (blokliste over IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (filintegritet), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (audit), Logwatch, automatiske sikkerhedsopdateringer.
  • Letvægts — til VPS med lidt RAM: et basissæt uden tunge komponenter.
  • Konfigureret server (hostingpanel) — til en allerede kørende server med panel (HestiaCP m.fl.), websteder og mail: kun additive ændringer (efterinstallation af værktøjer, cron, sudo-regler), mens firewall, Fail2ban, mail, SSH og sysctl forbliver, som de er. På en server med panel vælger scriptet selv denne tilstand.
Tørkørsel. På kontoen kan du sætte flueben ved “Tørkørsel” — så viser kommandoen kun, hvad scriptet vil installere og ændre, og afslutter uden at røre noget. Nyttigt på en allerede konfigureret server: først en tørkørsel, derefter en rigtig kørsel uden flueben.

2) Kør på serveren som root kommandoen fra kontoen — den ser sådan ud:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Hold kommandoen hemmelig — den er knyttet til din konto. Linket har begrænset gyldighed; hvis det er udløbet, klik på “Hent nyt link” på kontoen.
Efter den automatiske opsætning er webserveren Apache + PHP-FPM, og sikkerhedsværktøjerne og cron-jobbene er allerede installeret og kører “ud af boksen” — der skal ikke konfigureres yderligere.

02. Domæne og DNS

For at åbne dashboardet på en adresse som monitor.example.com og få gratis SSL skal domænet pege på serveren. I DNS-kontrolpanelet (hos registratoren eller hostingudbyderen) opretter du en A-post:

Type: A Navn: monitor (underdomæne → monitor.example.com) eller @ (domænerod → example.com) Værdi: 203.0.113.10 ← serverens IP TTL: 3600

Efter et par minutter (nogle gange op til en time) skal du tjekke, at domænet peger på serveren:

dig +short monitor.example.com # skal returnere din IP # eller, hvis dig ikke findes: getent hosts monitor.example.com
SSL-certifikatet (trin 06) udstedes kun til et domæne — derfor skal DNS pege på serveren før certifikatet udstedes.

03. Upload panelfilerne

Autokonfigurationen har allerede oprettet panelkataloget /var/www/monitor og konfigureret Apache-sitet (DocumentRoot til panelroden, PHP-FPM, AllowOverride for .htaccess). Du behøver ikke oprette katalog og vhost separat — upload blot filerne og sæt rettighederne.
Panelfilerne (distributionsarkivet) hentes efter køb på kontoen my.arciveo.com“Downloads”. Pak arkivet ud, før du uploader det til serveren.

Upload indholdet af distributionen til /var/www/monitor (så public/, assets/, config.php osv. ligger indeni) — via SFTP/SCP (FileZilla / WinSCP) eller med kommandoen scp fra din lokale computer:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
For at dit domæne (ServerName) straks bliver skrevet ind i vhost, angives det i autokonfigurationskommandoen allerede i trin 01: … | sudo bash -s -- monitor.example.com (eller angiv domænet i feltet “Paneldomæne” på kontoen). Hvis domænet ikke blev angivet — svarer panelet på enhver host og via IP, og ServerName skrives af certbot ved udstedelse af SSL (trin 06); der er ikke brug for at geninstallere noget.
Sæt rettigheder på filerne — det er et obligatorisk trin. Hvis du uploadede som root eller via SFTP, tilhører filerne root, og webserveren (www-data) kan ikke læse dem — panelet åbner tomt eller med fejl 403 (i loggen: .htaccess unreadable / directory not executable). Kommandoen nedenfor retter det:
# Normaliser rettighederne for hele webrooten: kataloget oprettet af root er utilgængeligt # for webserveren (www-data) — uden dette leverer panelet en tom side eller 403. cd /var/www/monitor # Arbejdsmapperne opretter vi FØR chown — ellers forbliver de nye kataloger root:root # og ved chmod 750 kan webserveren (www-data) ikke skrive i dem. 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

Åbn upload via SFTP for dig selv. Efter kommandoen ovenfor tilhører alle filer www-data, mens FileZilla / WinSCP forbinder som din egen bruger — uploaden fejler så med SSH_FX_PERMISSION_DENIED (Permission denied). Vælg en af de to muligheder.

Mulighed A — en ACL kun til din bruger (anbefales). Kun du får skriverettigheder; webserveren kan fortsat ikke overskrive panelets kode:

sudo apt install -y acl # Skriverettighed til din bruger på hele panelmappen: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Samme regel som standard — for filer og mapper, der oprettes senere: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Mulighed B — via gruppen www-data. Enklere, men webserveren får også skriverettighed til panelets filer: ved en sårbarhed i PHP ville koden kunne udskiftes. Rækkefølgen af kommandoerne betyder noget — config.php og arbejdsmapperne lukkes til sidst:

sudo usermod -aG www-data deploy # Skriverettighed til gruppen + setgid (bit 2): filer uploadet via SFTP # forbliver i gruppen www-data — ellers kan panelet ikke overskrive dem. 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
Efter mulighed B — forbind igen i FileZilla (Server → Afbryd forbindelsen, log derefter ind igen): den nye gruppe træder først i kraft ved et nyt login, indtil da har du stadig ingen rettigheder. Kontrol: id deploy — på gruppelisten skal www-data dukke op; ls -ld /var/www/monitor — rettigheder drwxrwsr-x, bogstavet s i stedet for x betyder, at setgid er sat.

04. Database

Opret databasen og brugeren, og importér derefter skemaet. Blokken med databasen indsættes i terminalen i sin helhed (sudo mysql logger ind som root via unix-socket — root-adgangskode kræves ikke). monitor_db og monitor_user er eksempelnavne, du kan vælge dine egne; husk databasenavn, bruger og adgangskode — dem skriver du ind i config.php i næste trin:

# 1. Database. Adgangskoden angives ÉN gang i DBPASS og indsættes i alle linjer. # Blokken indsættes i terminalen I SIN HELHED; sudo mysql logger ind som root via unix-socket # (root-adgangskode kræves ikke). Brug IKKE interaktiv `sudo mysql -u root -p` # med copy-paste — ved indsætning ryger SQL-linjerne ind i adgangskodeprompten og går tabt. DBPASS='CHOOSE_A_PASSWORD' # ← ret kun denne linje 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 # Kontrol (skal vise monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Samme adgangskode skriver du ind i config.php → DB_PASS.
Skemaet behøver ikke importeres — dashboardet opretter selv tabellerne og admin-kontoen ved første besøg i browseren (fra database/db.sql), hvis databasen er tom.
sudo til webserveren har autoopsætningen allerede sat op — modulerne ser systemdata med det samme. Du skal kun konfigurere sudo separat, hvis PHP kører under en ikke-standard bruger (ikke www-data).

05. Konfiguration af config.php

config.php i roden af panelet (/var/www/monitor/config.php) er den eneste fil, du skal redigere manuelt. Alle panelets indstillinger er defineret her som define()-konstanter. Åbn den i en editor:

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

Indsæt dine egne værdier på de fremhævede steder; lad resten være som det er:

// --- Database (fra trin 04) --- define('DB_HOST', 'localhost'); // bevar define('DB_NAME', 'db_name'); // det du oprettede i trin 04 define('DB_USER', 'user'); // det du oprettede i trin 04 define('DB_PASS', 'db_password'); // det du angav i trin 04 define('DB_CHARSET', 'utf8mb4'); // bevar // --- Applikation --- define('APP_URL', 'https://monitor.example.com'); // panelets adresse, uden skråstreg til sidst define('TIMEZONE', 'Europe/Copenhagen'); // din tidszone // --- Sessionens varighed --- define('SESSION_LIFETIME', 28800); // inaktivitet før nyt login, sek. (28800 = 8 t)

Hvad der skal ændres:

  • DB_NAME, DB_USER, DB_PASS — nøjagtig samme databasenavn, bruger og adgangskode, som du angav, da du oprettede databasen i trin 04 (hvis du beholdt eksemplerne — monitor_db / monitor_user). Rør ikke ved DB_HOST og DB_CHARSET.
  • APP_URL — panelets fulde adresse med https://, uden skråstreg til sidst og uden www. Den skal svare til det domæne, du aktiverer licensen på (trin 07), ellers afvises nøglen.
  • TIMEZONE — din tidszone (liste — timedatectl list-timezones). Påvirker kun, hvordan panelet viser datoer; det påvirker ikke tidspunktet for cron-job (der gælder systemets tidszone).
  • SESSION_LIFETIME — efter hvor mange sekunders inaktivitet panelet beder dig logge ind igen (standard er 8 timer). F.eks. 3600 = 1 time, 86400 = et døgn.
  • Blokken til fejllogning (display_errors, log_errors, error_log) — behold standardværdierne.

Gem filen (Ctrl+O, Enter, derefter Ctrl+X) og genstart PHP-FPM — ellers træder ændringerne ikke i kraft på grund af OPcache:

sudo systemctl restart php*-fpm
config.php er en hemmelig fil (den indeholder databasens adgangskode). Den ligger i panelets rod, som også er webroden, men er beskyttet: rettigheder 640 (sat i trin 03) og et eksplicit forbud i den øverste .htaccess. Læg den ikke ud i offentlige repositories, og send den ikke til supporten med den rigtige adgangskode.
En detaljeret gennemgang af alle parametre — i FAQ: “Filen config.php — alle panelets indstillinger”.

06. Udsted SSL (HTTPS)

Dashboardet fungerer kun via HTTPS. Loginsessionen bruger en sikker cookie, og WebAuthn (2FA) fungerer efter standarden kun via HTTPS. Via http:// kan du ikke logge ind.

certbot og pluginet til Apache er allerede installeret af autokonfigurationen. Domænets DNS skal allerede pege på serveren (trin 02). Udstedelse med én kommando:

sudo certbot --apache -d monitor.example.com
Hvad certbot spørger om:
  1. Enter email address — din e-mail (dertil sendes påmindelser om, at certifikatet udløber).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — efter eget valg.
Derefter udsteder certbot selv certifikatet, tilføjer <VirtualHost *:443>, opsætter viderestilling http→https og automatisk fornyelse. Til sidst — Successfully enabled HTTPS.
Hvis udstedelsen fejler — kontrollér, at dig +short monitor.example.com returnerer serverens IP, og at portene 80/443 er åbne (sudo ufw allow 80,443/tcp).

Efter udstedelsen: https://monitor.example.com åbnes med hængelås, og http:// viderestiller til https://.

07. Login og førstegangsopsætning

Åbn https://monitor.example.com, log ind som admin / useradmin, og gennemgå tjeklisten:

  1. Skift admin-adgangskode — afsnittet “Brugere” i menuen.
  2. Aktivér WebAuthn (2FA) — “WebAuthn-nøgler” → registrér nøgle/passkey (kræver HTTPS). Registrér to med det samme: hvis du mister din eneste nøgle, kan du ikke logge ind med den. Læs mere.
  3. Begræns adgang efter IP — “Indstillinger” → “Adgangsbegrænsning efter IP” (indtast din egen IP før aktivering, ellers lukker du dig selv ude).
  4. Indtast licens — aktivér aktiveringskoden ARCIVEO-… fra din konto på dit domæne, og indsæt nøglen i “Indstillinger” → “Licens”. Læs mere.
  5. Opsæt notifikationer — Telegram og/eller Email i “Indstillinger”. Læs mere.
  6. Slet installationsprogrammet public/start_db.php, hvis det stadig findes: det gør det muligt at genskabe databasen uden godkendelse. Så længe filen ligger i panelets rod eller i public/, advarer panelet om den med et rødt banner.
Færdig. Sikkerhedsværktøjerne kører allerede — dashboardet viser med det samme deres status og din sikkerhedsscore. Opslagsværk for hvert værktøj finder du i FAQ.
Arcivéo - Security Monitor © 2026