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. På en frisk VPS passer hvert eneste trin i træk; er serveren allerede konfigureret, eller kører der et hostingpanel på den, overlader scriptet med vilje en del af arbejdet til dig — hvad præcis det er, skriver det til sidst i sin kørsel (gennemgangen af outputtet står i trin 01).
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.
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.
my.arciveo.com → afsnittet “Serveropsætning” (tilgængelig efter køb af Arcivéo Security 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):
2) Kør på serveren som root kommandoen fra kontoen — den ser sådan ud:
3) Læs outputtet til sidst — dér står det, som er efterladt til dig. Scriptet slutter af med en blok af kontroller og en liste “Næste — installation af panelet”. En del af trinnene udfører det med vilje ikke: hvilke det er, afhænger af den valgte profil og af, hvad det fandt på serveren. Sammenhold med listen nedenfor — du skal kun udføre de punkter, hvis linjer faktisk dukkede op i dit output.
Control panel detected (…) — webstedet oprettes med hostingpanelets egne midler, og scriptet laver ingen vhost. Trin 03, grenen “Server med hostingpanel”.No vhost created (no domain given) — profilen “Konfigureret server” uden domæne: en vhost uden navn ville blive standardwebstedet og opfange dine egne sites, så den blev ikke oprettet. Trin 03, grenen “Opret vhost manuelt”.sudo rules NOT written — scriptet kunne ikke afgøre, hvilken konto panelet kører under. Det er en helt almindelig situation: panelets filer uploades først efter den automatiske opsætning, så der var endnu intet at bestemme det ud fra. Uden disse regler ser modulerne ingen systemdata. Trin 04, blokken “sudo til webserveren”.! Nginx does not read .htaccess — der står en Nginx foran Apache, og forbuddet kunne ikke skrives ind i dens konfig automatisk. Gør det ubetinget: ellers leveres data/, keys/, database/ og config.php udad uden om .htaccess. Trin 03, blokken “Hvis der står en Nginx foran Apache”.UFW installed but inactive — firewallen er installeret, men slået fra: på en konfigureret server slår scriptet den ikke til selv for ikke at afskære din adgang. Slå den til selv, og husk at tillade din SSH-port:
Fail2ban installed but not running — start den: sudo systemctl enable --now fail2ban.Database server present … but not running — start databaseserveren inden trin 04: sudo systemctl enable --now mariadb (eller mysql — alt efter hvad der er installeret).Certbot skipped — issue SSL in … — certifikatet udstedes med Let's Encrypt-kontakten i hostingpanelet; trin 06 har du ikke brug for.All checks passed. Punkter med ! kræver opmærksomhed; detaljerne skrives til loggen, hvis sti scriptet udskriver allersidst (Log: …).
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:
Efter et par minutter (nogle gange op til en time) skal du tjekke, at domænet peger på serveren:
/var/www/monitor og konfigureret Apache-sitet (DocumentRoot til panelroden, PHP-FPM, AllowOverride for .htaccess). I scriptets output er det linjen vhost … → DocumentRoot …. Du behøver ikke oprette katalog og vhost separat — upload blot filerne og sæt rettighederne.
Grenen “Server med hostingpanel” (i outputtet: Control panel detected (…)). På sådan en server styres webstederne af panelet, og scriptet opretter med vilje ikke sin egen vhost — den ville blive overskrevet, første gang panelet genopbyggede sine konfigurationer. Fremgangsmåden er:
public_html for dette domæne: ved siden af index.php, api/ og assets/ skal også de interne config.php, includes/, data/, tmp/, logs/, keys/, cron/ og database/ ligge. Der er intet, der skal flyttes uden for webroden: de interne mapper er lukket af .htaccess-filen fra distributionen, og under Nginx af det forbud, scriptet skrev ind i domænets konfig.config.php (trin 05). Udskift stierne i kommandoerne med /home/konto/web/domæne/public_html og ejeren med dette domænes bruger i stedet for www-data.Grenen “Opret vhost manuelt” (i outputtet: No vhost created (no domain given)). Det sker kun på profilen “Konfigureret server”, når domænet ikke blev angivet. Det nemmeste er simpelthen at køre kommandoen fra kontoen igen, denne gang med domænet:
En gentagen kørsel er sikker: det, der allerede er gjort, bliver ikke gentaget. Skal vhosten alligevel oprettes i hånden — her er præcis den konfig, installationsprogrammet skriver:
ServerName er her obligatorisk. En vhost uden navn bliver Apaches standardwebsted og begynder at svare for andre domæner på den samme server. Af samme grund må du ikke slå 000-default.conf fra på en konfigureret server: det websted kan være lavet om til nogens produktionssite — på en frisk VPS fjerner installationsprogrammet det selv, her skal du ikke gøre det.
! Nginx does not read .htaccess). Nginx leverer statiske filer direkte fra disken og læser ikke .htaccess — de interne mapper vil være åbne udadtil, selv om Apache lukker dem korrekt. Scriptet har på forhånd forberedt en fil med forbud; den skal inkluderes i server{}-blokken for dit websted, hvorefter Nginx genindlæses:
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:
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.
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:
Å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:
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:
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.
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:
admin-kontoen ved første besøg i browseren (fra database/db.sql), hvis databasen er tom.
Blev tabellerne ikke oprettet (panelet viser en databaseforbindelsesfejl eller en tom skærm i stedet for loginformularen) — så importér skemaet manuelt. Kommandoen køres i panelets rod, og værdierne tages fra blokken ovenfor:
$DBNAME / $DBUSER / $DBPASS allerede “glemt” (ny terminalsession) — så indsæt værdierne manuelt i kommandoen, eller sæt dem igen med de samme tre linjer fra blokken ovenfor.
sudo rules NOT written i scriptets output — så var der intet at bestemme panelets konto ud fra (filerne var endnu ikke uploadet), og reglerne blev ikke oprettet. Uden dem forbliver afsnit som firewall, Fail2ban og CrowdSec tomme. Nu, hvor filerne er på plads, kører du kommandoen fra kontoen en gang til og angiver kontoen eksplicit:
www-data udskifter du med den bruger, dit websteds PHP kører under (på et hostingpanel er det som regel domænets ejer). Du kan finde den sådan her:
/etc/sudoers.d/monitor findes, og der står linjer i den med din bruger.
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:
Indsæt dine egne værdier på de fremhævede steder; lad resten være som det er:
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.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:
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.
http:// kan du ikke logge ind.
Certbot skipped — issue SSL in …). Certifikatet udstedes med Let's Encrypt-kontakten på webdomænet i selve panelet — så står panelet også for fornyelsen.
certbot og pluginet til Apache er allerede installeret af autokonfigurationen. Domænets DNS skal allerede pege på serveren (trin 02). Udstedelse med én kommando:
Skal panelet også kunne åbnes med www. — så angiv begge navne i én kommando, ellers viser browseren en certifikatadvarsel på den anden adresse:
Y.<VirtualHost *:443>, opsætter viderestilling http→https og automatisk fornyelse. Til sidst — Successfully enabled HTTPS.
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://.
Åbn https://monitor.example.com, log ind som admin / useradmin, og gennemgå tjeklisten:
ARCIVEO-… fra din konto på dit domæne, og indsæt nøglen i “Indstillinger” → “Licens”. Læs mere.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.sudo /usr/local/bin/clamav-scan.sh) belaster disk og processor hårdt og kan tage en time eller mere — på en produktionsserver er det bedre at vente på den natlige kørsel kl. 01:30. Afsnittene “Diske (SMART)”, “Ydelse” og “Sikkerhedsopdateringer” fyldes af sig selv: henholdsvis hvert 30. minut, hvert 5. minut og en gang i timen.