Automatisk installation

Automatiskt sätt: ett enda skript från kundportalen förbereder hela servern (webbstack Apache + PHP, databas, säkerhetsverktyg, cron). Sedan återstår att distribuera panelen, utfärda SSL och ange licensen. Fungerar på Ubuntu/Debian: på en ny VPS ställs allt in från grunden, på en redan konfigurerad server – endast additivt (profilen ”Konfigurerad server”, steg 01). Alla kommandon nedan följer i ordning, bläddra bara uppifrån och ned.

Platshållarvärden i kommandona ersätter du med dina egna: monitor.example.com – din domän; 203.0.113.10 – serverns verkliga IP; /var/www/monitor – panelens rot (där public/, assets/, config.php ligger); hitta på ett eget lösenord för databasen.
Den fullständiga uppsättningen (”Fullständigt skydd”) är avsedd för en ny VPS. På ett rent Ubuntu/Debian ställer den in säkerhetssystemet från grunden – Fail2ban (jail.local), root-crontab, UFW-regler, Apache-konfig. Om servern redan är konfigurerad (fungerande panel, webbplatser, e-post, egna jails) – välj profilen ”Konfigurerad server”: den gör endast additiva ändringar och rör inte din brandvägg, Fail2ban, e-post, SSH eller sysctl. Om en hostingpanel upptäcks växlar skriptet till detta läge automatiskt. Före första körningen kan du aktivera torrkörning (kryssruta i portalen) – den visar vad som kommer att göras utan att ändra något. På en produktionsserver bör du för säkerhets skull ta en ögonblicksbild (snapshot).

01. Kommando för automatisk konfiguration från portalen

Kommandot hämtar du i din kundportal my.arciveo.com → avsnittet ”Serverkonfiguration” (tillgängligt efter köp av Arcivéo Monitor). Det är kopplat till ditt konto och innehåller en personlig token.

Skriptet förbereder hela servern: webbstack (Apache + PHP), databas, verktyg för SSL, en komplett uppsättning skyddsverktyg och cron-jobb (Lynis, SMART, debsums, Logwatch, daglig rapport, uppdatering av ipsum).

1) Välj skyddsnivå (i portalen, innan du kopierar kommandot):

  • Fullständigt skydd (rekommenderas) — UFW (brandvägg), Fail2ban, CrowdSec + bouncer, ipsum (blocklista för IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (filintegritet), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (granskning), Logwatch, automatiska säkerhetsuppdateringar.
  • Förenklat — för VPS med lite RAM: en grunduppsättning utan tunga komponenter.
  • Konfigurerad server (hostingpanel) — för en redan igång server med panel (HestiaCP m.fl.), webbplatser och e-post: endast tillägg (installation av verktyg, cron, sudo-regler), medan brandvägg, Fail2ban, e-post, SSH och sysctl lämnas orörda. På en server med panel väljer skriptet detta läge automatiskt.
Testkörning. I portalen kan du kryssa i ”Testkörning” — då visar kommandot bara vad skriptet skulle installera och ändra och avslutas utan att röra något. Användbart på en redan konfigurerad server: kör testet först, sedan den riktiga körningen utan kryss.

2) Kör på servern som root kommandot från portalen — det ser ut så här:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Håll kommandot hemligt — det är kopplat till ditt konto. Länken har begränsad giltighetstid; om den har gått ut klickar du på ”Hämta ny länk” i portalen.
Efter den automatiska konfigurationen är webbservern Apache + PHP-FPM, och säkerhetsverktygen och cron-jobben är redan installerade och fungerar direkt — inget ytterligare behöver konfigureras.

02. Domän och DNS

För att öppna panelen på en adress som monitor.example.com och få gratis SSL måste domänen peka mot servern. Skapa en A-post i DNS-panelen (hos registraren eller webbhotellet):

Typ: A Namn: monitor (underdomän → monitor.example.com) eller @ (domänroten → example.com) Värde: 203.0.113.10 ← din servers IP TTL: 3600

Efter några minuter (ibland upp till en timme) kontrollerar du att domänen pekar mot servern:

dig +short monitor.example.com # ska returnera din IP # eller, om dig saknas: getent hosts monitor.example.com
SSL-certifikatet (steg 06) utfärdas endast för en domän – därför måste DNS peka mot servern innan certifikatet utfärdas.

03. Ladda upp panelfilerna

Autokonfigurationen har redan skapat panelkatalogen /var/www/monitor och konfigurerat Apache-webbplatsen (DocumentRoot till panelens rot, PHP-FPM, AllowOverride för .htaccess). Du behöver inte skapa katalog och vhost separat — ladda bara upp filerna och sätt rättigheterna.
Panelfilerna (distributionsarkivet) laddas ned efter köp i kundportalen my.arciveo.com”Nedladdningar”. Packa upp arkivet innan du laddar upp det till servern.

Ladda upp distributionens innehåll till /var/www/monitor (så att public/, assets/, config.php osv. hamnar inuti) — via SFTP/SCP (FileZilla / WinSCP) eller med kommandot scp från din lokala dator:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
För att din domän (ServerName) ska skrivas in i vhost direkt anger du den i autokonfigurationskommandot redan i steg 01: … | sudo bash -s -- monitor.example.com (eller anger domänen i fältet ”Paneldomän” i kundportalen). Om domänen inte angavs svarar panelen på vilken host som helst och via IP, och ServerName skrivs in av certbot när SSL utfärdas (steg 06); inget behöver installeras om.
Sätt rättigheterna på filerna — detta är ett obligatoriskt steg. Om du laddade upp som root eller via SFTP ägs filerna av root, och webbservern (www-data) kan inte läsa dem — panelen öppnas tom eller med fel 403 (i loggen: .htaccess unreadable / directory not executable). Kommandot nedan åtgärdar detta:
# Normalisera rättigheterna för hela webbroten: en katalog som skapats av root är otillgänglig # för webbservern (www-data) — utan detta visar panelen en tom sida eller 403. cd /var/www/monitor # Skapa arbetsmapparna FÖRE chown — annars förblir de nya katalogerna root:root # och med chmod 750 kan webbservern (www-data) inte skriva 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

Öppna uppladdning via SFTP för dig själv. Efter kommandot ovan ägs alla filer av www-data, medan FileZilla / WinSCP ansluter som din egen användare — uppladdningen misslyckas då med SSH_FX_PERMISSION_DENIED (Permission denied). Välj ett av de två alternativen.

Alternativ A — en ACL enbart för din användare (rekommenderas). Skrivrättigheter får bara du; webbservern kan fortfarande inte skriva över panelens kod:

sudo apt install -y acl # Skrivrättighet för din användare till hela panelkatalogen: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Samma regel som standard — för filer och mappar som skapas senare: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Alternativ B — via gruppen www-data. Enklare, men även webbservern får skrivrättighet till panelens filer: vid en sårbarhet i PHP skulle koden kunna bytas ut. Ordningen på kommandona spelar roll — config.php och arbetsmapparna stängs sist:

sudo usermod -aG www-data deploy # Skrivrätt för gruppen + setgid (biten 2): filer som laddas upp via SFTP # stannar kvar i gruppen www-data — annars kan panelen inte skriva över 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 alternativ B — anslut på nytt i FileZilla (Server → Koppla från, logga sedan in igen): den nya gruppen börjar gälla först vid en ny inloggning, dessförinnan har du fortfarande inga rättigheter. Kontroll: id deploy — i grupplistan ska www-data dyka upp; ls -ld /var/www/monitor — rättigheter drwxrwsr-x, bokstaven s i stället för x betyder att setgid är satt.

04. Databas

Skapa en databas och en användare, importera sedan schemat. Databasblocket klistras in i terminalen i sin helhet (sudo mysql loggar in som root via unix-socket — root-lösenord behövs inte). monitor_db och monitor_user är exempelnamn, du kan välja egna; kom ihåg databasnamn, användare och lösenord — du anger dem i config.php i nästa steg:

# 1. Databas. Lösenordet anges EN gång i DBPASS och används i alla rader. # Blocket klistras in i terminalen I SIN HELHET; sudo mysql loggar in som root via unix-socket # (root-lösenord behövs inte). Använd INTE interaktiv `sudo mysql -u root -p` # med kopiera-klistra — vid inklistring hamnar SQL-raderna i lösenordsfrågan och försvinner. DBPASS='CHOOSE_A_PASSWORD' # ← ändra endast denna rad 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 # Kontroll (ska visa monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Ange samma lösenord i config.php → DB_PASS.
Schemat behöver inte importeras — panelen skapar själv tabellerna och kontot admin vid första besöket i webbläsaren (från database/db.sql), om databasen är tom.
sudo för webbservern har autokonfigurationen redan ställt in — modulerna ser systemdata direkt. sudo behöver bara konfigureras separat om PHP körs under en icke-standardanvändare (inte www-data).

05. Konfigurera config.php

config.php i panelens rot (/var/www/monitor/config.php) är den enda filen du behöver redigera för hand. Alla panelinställningar anges i den som define()-konstanter. Öppna den i en redigerare:

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

Fyll i dina egna värden i de markerade fälten; låt resten vara som det är:

// --- Databas (från steg 04) --- define('DB_HOST', 'localhost'); // lämna som det är define('DB_NAME', 'db_name'); // det du skapade i steg 04 define('DB_USER', 'user'); // det du skapade i steg 04 define('DB_PASS', 'db_password'); // det du angav i steg 04 define('DB_CHARSET', 'utf8mb4'); // lämna som det är // --- Applikation --- define('APP_URL', 'https://monitor.example.com'); // panelens adress, utan avslutande snedstreck define('TIMEZONE', 'Europe/Stockholm'); // din tidszon // --- Sessionstid --- define('SESSION_LIFETIME', 28800); // inaktivitet före ny inloggning, sek (28800 = 8 h)

Vad du ska ändra:

  • DB_NAME, DB_USER, DB_PASS — exakt samma databasnamn, användare och lösenord som du angav när du skapade databasen i steg 04 (om du behöll exemplen — monitor_db / monitor_user). Rör inte DB_HOST och DB_CHARSET.
  • APP_URL — panelens fullständiga adress med https://, utan avslutande snedstreck och utan www. Måste stämma överens med domänen som du aktiverar licensen på (steg 07), annars avvisas nyckeln.
  • TIMEZONE — din tidszon (lista — timedatectl list-timezones). Påverkar bara hur panelen visar datum; det påverkar inte när cron-jobb körs (där gäller systemets tidszon).
  • SESSION_LIFETIME — efter hur många sekunders inaktivitet panelen ber om ny inloggning (standard 8 timmar). T.ex. 3600 = 1 timme, 86400 = ett dygn.
  • Blocket för fellogg (display_errors, log_errors, error_log) — lämna som standard.

Spara filen (Ctrl+O, Enter, sedan Ctrl+X) och starta om PHP-FPM — annars tillämpas inte ändringarna på grund av OPcache:

sudo systemctl restart php*-fpm
config.php är en hemlig fil (den innehåller databasens lösenord). Den ligger i panelens rot, som också är webbroten, men är skyddad: rättigheter 640 (satta i steg 03) och ett uttryckligt förbud i .htaccess i roten. Lägg inte upp den i publika arkiv och skicka den inte till supporten med det riktiga lösenordet.
En detaljerad genomgång av alla parametrar finns i FAQ: ”Filen config.php — alla panelinställningar”.

06. Utfärda SSL (HTTPS)

Panelen fungerar endast via HTTPS. Inloggningssessionen använder en säker cookie, och WebAuthn (2FA) fungerar enligt standarden bara över HTTPS. Via http:// kan du inte logga in.

certbot och Apache-insticksprogrammet är redan installerade av autokonfigurationen. Domänens DNS ska redan peka på servern (steg 02). Utfärda med ett kommando:

sudo certbot --apache -d monitor.example.com
Vad certbot frågar om:
  1. Enter email address — din e-post (dit kommer aviseringar om att certifikatet går ut).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — efter eget val.
Sedan utfärdar certbot själv certifikatet, lägger till <VirtualHost *:443>, ställer in omdirigering http→https och automatisk förnyelse. Till sist — Successfully enabled HTTPS.
Om utfärdandet misslyckas — kontrollera att dig +short monitor.example.com returnerar serverns IP och att portarna 80/443 är öppna (sudo ufw allow 80,443/tcp).

Efter utfärdandet: https://monitor.example.com öppnas med hänglås, http:// omdirigerar till https://.

07. Inloggning och första konfiguration

Öppna https://monitor.example.com, logga in med admin / useradmin och gå igenom checklistan:

  1. Byt admin-lösenord — avsnittet ”Användare” i menyn.
  2. Aktivera WebAuthn (2FA) — ”WebAuthn-nycklar” → registrera nyckel/passkey (kräver HTTPS). Registrera två direkt: om du tappar din enda nyckel går det inte att logga in med den. Läs mer.
  3. Begränsa åtkomst per IP — ”Inställningar” → ”Åtkomstbegränsning per IP” (ange din egen IP innan du aktiverar, annars stänger du ute dig själv).
  4. Ange licens — aktivera aktiveringskoden ARCIVEO-… från kundportalen för din domän och klistra in nyckeln under ”Inställningar” → ”Licens”. Läs mer.
  5. Konfigurera aviseringar — Telegram och/eller e-post under ”Inställningar”. Läs mer.
  6. Ta bort installationsprogrammet public/start_db.php om det finns kvar: det gör att databasen kan återskapas utan inloggning. Så länge filen ligger i panelens rot eller i public/ varnar panelen om den med en röd banner.
Klart. Säkerhetsverktygen körs redan — dashboarden visar direkt deras status och säkerhetspoäng. Referens för varje verktyg finns i FAQ.
Arcivéo - Security Monitor © 2026