Automatisk installasjon

Automatisk metode: ett skript fra kontoen din klargjør hele serveren (webstakk Apache + PHP, database, sikkerhetsverktøy, cron). Deretter — sett opp dashbordet, utsted SSL og legg inn lisensen. Fungerer på Ubuntu/Debian: på en fersk VPS settes alt opp fra bunnen av, på en allerede konfigurert server — kun additivt (profilen «Konfigurert server», trinn 01). Alle kommandoene nedenfor er i rekkefølge, bare bla ovenfra og ned.

Plassholderverdiene i kommandoene bytter du ut med dine egne: monitor.example.com — ditt domene; 203.0.113.10 — serverens faktiske IP; /var/www/monitor — dashbordets rot (der public/, assets/, config.php ligger); finn på ditt eget DB-passord.
Det komplette settet («Full beskyttelse») er beregnet på en fersk VPS. På ren Ubuntu/Debian setter det opp sikkerhetssystemet fra bunnen av — Fail2ban (jail.local), root-crontab, UFW-regler, Apache-konfig. Hvis serveren allerede er konfigurert (fungerende dashbord, nettsteder, e-post, egne jail-er) — velg profilen «Konfigurert server»: den gjør kun additive endringer og rører ikke brannmuren, Fail2ban, e-posten, SSH eller sysctl. Oppdager skriptet en hostingpanel, bytter det til denne modusen selv. Før første kjøring kan du slå på tørrkjøring (avkryssing på kontoen) — den viser hva som vil bli gjort, uten å endre noe. På en produksjonsserver bør du for sikkerhets skyld ta et øyeblikksbilde (snapshot).

01. Kommando for automatisk oppsett fra kontoen

Kommandoen henter du på din egen konto my.arciveo.com → seksjonen «Serveroppsett» (tilgjengelig etter at Arcivéo Monitor er tegnet). Den er knyttet til kontoen din og inneholder et personlig token.

Skriptet klargjør hele serveren: web-stack (Apache + PHP), database, verktøy for SSL, hele settet med sikkerhetsverktøy og cron-jobber (Lynis, SMART, debsums, Logwatch, daglig rapport, oppdatering av ipsum).

1) Velg beskyttelsesnivå (på kontoen, før du kopierer kommandoen):

  • Full beskyttelse (anbefales) — UFW (brannmur), Fail2ban, CrowdSec + bouncer, ipsum (IP-blokkliste), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (filintegritet), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (revisjon), Logwatch, automatiske sikkerhetsoppdateringer.
  • Lettvekt — for VPS med lite RAM: grunnleggende sett uten tunge komponenter.
  • Konfigurert server (hosting-panel) — for en server som allerede er i drift med panel (HestiaCP osv.), nettsteder og e-post: kun additive endringer (etterinstallasjon av verktøy, cron, sudo-regler), mens brannmur, Fail2ban, e-post, SSH og sysctl forblir som de er. På en server med panel velger skriptet denne modusen selv.
Tørrkjøring. På kontoen kan du krysse av for «Tørrkjøring» — da viser kommandoen bare hva skriptet vil installere og endre, og avslutter uten å røre noe. Nyttig på en allerede konfigurert server: først en kjøring, deretter den virkelige kjøringen uten avkrysning.

2) Kjør på serveren som root kommandoen fra kontoen — den ser slik ut:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Hold kommandoen hemmelig — den er knyttet til kontoen din. Lenken har begrenset gyldighetstid; hvis den er utløpt, klikk «Hent ny lenke» på kontoen.
Etter automatisk oppsett er webserveren Apache + PHP-FPM, og sikkerhetsverktøyene og cron-jobbene er allerede installert og fungerer rett ut av boksen — ingenting trenger ekstra oppsett.

02. Domene og DNS

For å åpne dashbordet på en adresse som monitor.example.com og få gratis SSL, må domenet peke til serveren. I DNS-kontrollpanelet (hos registraren eller webverten) oppretter du en A-oppføring:

Type: A Navn: monitor (underdomene → monitor.example.com) eller @ (rotdomene → example.com) Verdi: 203.0.113.10 ← IP-adressen til serveren din TTL: 3600

Etter noen minutter (av og til opptil en time) sjekker du at domenet peker til serveren:

dig +short monitor.example.com # skal returnere IP-adressen din # eller, hvis dig mangler: getent hosts monitor.example.com
SSL-sertifikatet (trinn 06) utstedes kun til et domene — derfor må DNS peke til serveren før sertifikatet utstedes.

03. Last opp panelfilene

Autokonfigurasjonen har allerede opprettet panelkatalogen /var/www/monitor og satt opp Apache-nettstedet (DocumentRoot til panelroten, PHP-FPM, AllowOverride for .htaccess). Du trenger ikke opprette katalog og vhost separat – bare last opp filene og sett rettighetene.
Panelfilene (distribusjonsarkivet) lastes ned etter kjøp fra kontoen på my.arciveo.com«Nedlastinger». Pakk ut arkivet før du laster det opp til serveren.

Last opp innholdet i distribusjonen til /var/www/monitor (slik at public/, assets/, config.php osv. havner inni) – via SFTP/SCP (FileZilla / WinSCP) eller med kommandoen scp fra den lokale maskinen:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
For at ditt domene (ServerName) skal skrives inn i vhost med en gang, oppgir du det i autokonfigurasjonskommandoen allerede i trinn 01: … | sudo bash -s -- monitor.example.com (eller angir domenet i feltet «Paneldomene» på kontoen). Hvis domenet ikke ble oppgitt, svarer panelet på hvilken som helst host og på IP, og ServerName skrives inn av certbot når SSL utstedes (trinn 06); ingenting trenger å installeres på nytt.
Sett rettigheter på filene – dette er et obligatorisk trinn. Hvis du lastet opp som root eller via SFTP, eies filene av root, og nettserveren (www-data) kan ikke lese dem – panelet åpnes tomt eller med feil 403 (i loggen: .htaccess unreadable / directory not executable). Kommandoen nedenfor fikser dette:
# Normaliser rettighetene for hele webroten: en katalog opprettet av root er utilgjengelig # for nettserveren (www-data) – uten dette leverer panelet en tom side eller 403. cd /var/www/monitor # Vi oppretter arbeidsmappene FØR chown – ellers forblir nye kataloger root:root # og med chmod 750 kan nettserveren (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

Åpne opplasting via SFTP for deg selv. Etter kommandoen over eies alle filene av www-data, mens FileZilla / WinSCP kobler til som din egen bruker – opplastingen feiler da med SSH_FX_PERMISSION_DENIED (Permission denied). Velg ett av de to alternativene.

Alternativ A – en ACL kun for din bruker (anbefalt). Bare du får skriverettigheter; nettserveren kan fortsatt ikke overskrive panelets kode:

sudo apt install -y acl # Skriverettighet for din bruker til hele panelkatalogen: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Samme regel som standard – for filer og mapper som opprettes senere: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Alternativ B – via gruppen www-data. Enklere, men nettserveren får også skriverettighet til panelets filer: ved en sårbarhet i PHP kan koden byttes ut. Rekkefølgen på kommandoene betyr noe – config.php og arbeidsmappene lukkes til slutt:

sudo usermod -aG www-data deploy # Skriverett for gruppen + setgid (bit 2): filer som lastes opp via SFTP # blir værende i gruppen www-data – ellers kan ikke panelet 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
Etter alternativ B – koble til på nytt i FileZilla (Server → Koble fra, logg deretter inn igjen): den nye gruppen trer i kraft først ved en ny innlogging, før det har du fortsatt ingen rettigheter. Kontroll: id deploy – i gruppelisten skal www-data dukke opp; ls -ld /var/www/monitor – rettigheter drwxrwsr-x, bokstaven s i stedet for x betyr at setgid er satt.

04. Database

Opprett en database og en bruker, og importer deretter skjemaet. Databaseblokken limes inn i terminalen i sin helhet (sudo mysql logger inn som root via unix-socket — root-passord er ikke nødvendig). monitor_db og monitor_user er eksempelnavn, du kan velge dine egne; husk navnet på databasen, brukeren og passordet — du skriver dem inn i config.php i neste steg:

# 1. Database. Passordet settes ÉN gang i DBPASS og settes inn i alle linjene. # Blokken limes inn i terminalen I SIN HELHET; sudo mysql logger inn som root via unix-socket # (root-passord er ikke nødvendig). IKKE bruk interaktiv `sudo mysql -u root -p` # med kopier-lim — ved innliming havner SQL-linjene i passordforespørselen og går tapt. DBPASS='CHOOSE_A_PASSWORD' # ← endre kun denne linjen 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 (skal vise monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Skriv det samme passordet inn i config.php → DB_PASS.
Skjemaet trenger ikke å importeres — panelet oppretter selv tabellene og admin-kontoen ved første innlogging i nettleseren (fra database/db.sql), hvis databasen er tom.
sudo for webserveren er allerede satt opp av autokonfigurasjonen — modulene ser systemdataene med en gang. Du trenger bare å sette opp sudo separat hvis PHP kjører under en ikke-standard bruker (ikke www-data).

05. Konfigurere config.php

config.php i roten av panelet (/var/www/monitor/config.php) er den eneste filen du må redigere manuelt. Alle panelinnstillingene er angitt i den som define()-konstanter. Åpne den i en editor:

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

Sett inn dine egne verdier på de uthevede stedene; la resten stå som det er:

// --- Database (fra trinn 04) --- define('DB_HOST', 'localhost'); // la stå define('DB_NAME', 'db_name'); // det du opprettet i trinn 04 define('DB_USER', 'user'); // det du opprettet i trinn 04 define('DB_PASS', 'db_password'); // det du satte i trinn 04 define('DB_CHARSET', 'utf8mb4'); // la stå // --- Applikasjon --- define('APP_URL', 'https://monitor.example.com'); // paneladresse, uten skråstrek til slutt define('TIMEZONE', 'Europe/Oslo'); // din tidssone // --- Sesjonstid --- define('SESSION_LIFETIME', 28800); // inaktivitet før ny innlogging, sek (28800 = 8 t)

Hva du skal endre:

  • DB_NAME, DB_USER, DB_PASS — nøyaktig samme databasenavn, bruker og passord som du satte da du opprettet databasen i trinn 04 (hvis du beholdt eksemplene — monitor_db / monitor_user). Ikke rør DB_HOST og DB_CHARSET.
  • APP_URL — full paneladresse med https://, uten skråstrek til slutt og uten www. Må stemme med domenet du aktiverer lisensen på (trinn 07), ellers blir nøkkelen avvist.
  • TIMEZONE — din tidssone (liste — timedatectl list-timezones). Påvirker bare hvordan panelet viser datoer; det påvirker ikke når cron-jobber kjøres (der gjelder systemets tidssone).
  • SESSION_LIFETIME — etter hvor mange sekunder med inaktivitet panelet ber om ny innlogging (standard er 8 timer). F.eks. 3600 = 1 time, 86400 = ett døgn.
  • Blokken for feillogging (display_errors, log_errors, error_log) — la stå som standard.

Lagre filen (Ctrl+O, Enter, deretter Ctrl+X) og start PHP-FPM på nytt — ellers blir ikke endringene tatt i bruk på grunn av OPcache:

sudo systemctl restart php*-fpm
config.php er en hemmelig fil (den inneholder databasepassordet). Den ligger i roten av panelet, som også er web-roten, men er beskyttet: rettighetene 640 (satt i trinn 03) og et eksplisitt forbud i rot-.htaccess. Ikke legg den ut i offentlige repositorier og ikke send den til support med det faktiske passordet.
Detaljert gjennomgang av alle parametere — i FAQ: «Filen config.php — alle panelinnstillinger».

06. Utsted SSL (HTTPS)

Dashbordet fungerer kun over HTTPS. Innloggingsøkten bruker en sikret informasjonskapsel, og WebAuthn (2FA) fungerer per standard bare over HTTPS. Over http:// kan du ikke logge inn.

certbot og Apache-programtillegget er allerede installert av autooppsettet. Domenets DNS bør allerede peke til serveren (steg 02). Utstedelse med én kommando:

sudo certbot --apache -d monitor.example.com
Hva certbot spør om:
  1. Enter email address — din e-post (dit kommer varsler om at sertifikatet utløper).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — opp til deg.
Deretter utsteder certbot sertifikatet selv, legger inn <VirtualHost *:443>, setter opp omdirigering http→https og automatisk fornyelse. Til slutt: Successfully enabled HTTPS.
Hvis utstedelsen feiler — sjekk at dig +short monitor.example.com returnerer serverens IP og at portene 80/443 er åpne (sudo ufw allow 80,443/tcp).

Etter utstedelse: https://monitor.example.com åpnes med hengelås, http:// omdirigerer til https://.

07. Innlogging og førstegangsoppsett

Åpne https://monitor.example.com, logg inn med admin / useradmin og gå gjennom sjekklisten:

  1. Bytt admin-passord — under «Brukere» i menyen.
  2. Aktiver WebAuthn (2FA) — «WebAuthn-nøkler» → registrer nøkkel/passkey (krever HTTPS). Registrer to med en gang: mister du den eneste nøkkelen, blir innlogging med den umulig. Mer info.
  3. Begrens tilgang etter IP — «Innstillinger» → «IP-basert tilgangsbegrensning» (skriv inn din egen IP før du aktiverer, ellers stenger du deg selv ute).
  4. Legg inn lisens — aktiver aktiveringskoden ARCIVEO-… fra kontoen på ditt domene og lim inn nøkkelen i «Innstillinger» → «Lisens». Mer info.
  5. Sett opp varsler — Telegram og/eller e-post i «Innstillinger». Mer info.
  6. Slett installasjonsprogrammet public/start_db.php hvis det ligger igjen: det lar hvem som helst gjenopprette databasen uten innlogging. Så lenge filen ligger i rotmappen til panelet eller i public/, varsler panelet om det med et rødt banner.
Ferdig. Sikkerhetsverktøyene kjører allerede — dashbordet viser status og sikkerhetsscore med en gang. Oppslagsverk for hvert verktøy finner du i FAQ.
Arcivéo - Security Monitor © 2026