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. På en ny VPS passar varje steg i tur och ordning; om servern redan är konfigurerad eller har en hostingpanel lämnar skriptet medvetet en del av arbetet till dig — exakt vad skriver det ut i slutet av sin körning (genomgång av utskriften finns i steg 01).
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.
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).
my.arciveo.com → avsnittet ”Serverkonfiguration” (tillgängligt efter köp av Arcivéo Security 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):
2) Kör på servern som root kommandot från portalen — det ser ut så här:
3) Läs utskriften i slutet — där står det vad som återstår för dig. Skriptet avslutar körningen med ett block av kontroller och en lista ”Nästa steg — installation av panelen”. En del steg utför det medvetet inte: vilka beror på vald profil och på vad det hittade på servern. Stäm av med listan nedan — du behöver bara utföra de punkter vars rader dök upp i din egen utskrift.
Control panel detected (…) — webbplatsen skapas med hostingpanelens egna verktyg, skriptet gör ingen vhost. Steg 03, grenen ”Server med hostingpanel”.No vhost created (no domain given) — profilen ”Konfigurerad server” utan domän: en vhost utan namn skulle bli standardwebbplats och fånga upp dina egna webbplatser, därför skapades den inte. Steg 03, grenen ”Skapa vhost för hand”.sudo rules NOT written — skriptet kunde inte avgöra vilket konto panelen körs under. Det är en helt vanlig situation: panelens filer laddas upp först efter autokonfigurationen, så det fanns ännu inget att utgå från. Utan dessa regler ser modulerna inga systemdata. Steg 04, blocket ”sudo för webbservern”.! Nginx does not read .htaccess — framför Apache står Nginx, och förbudet gick inte att skriva in i dess konfig automatiskt. Gör det ovillkorligen: annars lämnas data/, keys/, database/ och config.php ut utåt förbi .htaccess. Steg 03, blocket ”Om Nginx står framför Apache”.UFW installed but inactive — brandväggen är installerad men avstängd: på en konfigurerad server aktiverar skriptet den inte självt, för att inte stänga ute dig. Aktivera den själv och tillåt ovillkorligen din SSH-port:
Fail2ban installed but not running — starta den: sudo systemctl enable --now fail2ban.Database server present … but not running — starta databasservern före steg 04: sudo systemctl enable --now mariadb (eller mysql — beroende på vad som är installerat).Certbot skipped — issue SSL in … — certifikatet utfärdas med Let's Encrypt-omkopplaren i hostingpanelen; steg 06 behöver du inte.All checks passed. Punkter med ! kräver uppmärksamhet; detaljerna skrivs till loggen, vars sökväg skriptet skriver ut allra sist (Log: …).
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):
Efter några minuter (ibland upp till en timme) kontrollerar du att domänen pekar mot servern:
/var/www/monitor och konfigurerat Apache-webbplatsen (DocumentRoot till panelens rot, PHP-FPM, AllowOverride för .htaccess). I skriptets utskrift är det raden vhost … → DocumentRoot …. Du behöver inte skapa katalog och vhost separat — ladda bara upp filerna och sätt rättigheterna.
Grenen ”Server med hostingpanel” (i utskriften: Control panel detected (…)). På en sådan server styr panelen över webbplatserna, och skriptet skapar medvetet ingen egen vhost — den skulle skrivas över vid panelens första ombyggnad av konfigurationerna. Gör så här:
public_html för den domänen: bredvid index.php, api/, assets/ ska även de interna config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/ ligga. Inget behöver flyttas ovanför webbroten: de interna mapparna är stängda av .htaccess från distributionen, och under Nginx av det förbud som skriptet skrev in i domänens konfig.config.php (steg 05). Byt ut sökvägarna i kommandona mot /home/konto/web/domän/public_html, och ägaren mot den domänens användare i stället för www-data.Grenen ”Skapa vhost för hand” (i utskriften: No vhost created (no domain given)). Det inträffar bara med profilen ”Konfigurerad server”, när ingen domän angavs. Enklast är att helt enkelt köra kommandot från portalen igen och ange domänen:
Att köra igen är ofarligt: det som redan är gjort dupliceras inte. Om du ändå vill skapa vhost för hand — här är samma konfig som installationsprogrammet skriver:
ServerName är obligatoriskt här. En vhost utan namn blir Apaches standardwebbplats och börjar svara för andra domäner på samma server. Av samma skäl ska du inte stänga av 000-default.conf på en konfigurerad server: den webbplatsen kan ha gjorts om till någons produktionssajt — på en ny VPS tar installationsprogrammet bort den själv, här ska du inte göra det.
! Nginx does not read .htaccess). Nginx lämnar ut statiska filer direkt från disken och läser inte .htaccess — de interna mapparna blir då öppna utåt, trots att Apache stänger dem korrekt. Skriptet har i förväg förberett en fil med förbud; den ska inkluderas i server{}-blocket för din webbplats, varefter Nginx laddas om:
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:
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.
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:
Ö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:
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:
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.
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:
admin vid första besöket i webbläsaren (från database/db.sql), om databasen är tom.
Om tabellerna inte skapades (panelen visar ett fel vid anslutning till databasen eller en tom skärm i stället för inloggningsformuläret) — importera schemat för hand. Kommandot körs i panelens rot, värdena hämtas från blocket ovan:
$DBNAME / $DBUSER / $DBPASS redan har ”glömts bort” (ny terminalsession) — sätt in värdena i kommandot för hand eller ange dem på nytt med samma tre rader från blocket ovan.
sudo rules NOT written fanns i skriptets utskrift — då fanns det inget att avgöra panelens konto utifrån (filerna var ännu inte uppladdade), och reglerna skapades inte. Utan dem förblir avsnitt som brandvägg, Fail2ban och CrowdSec tomma. Nu när filerna är på plats kör du kommandot från portalen en gång till och anger kontot uttryckligen:
www-data med den användare som din webbplats PHP körs under (på en hostingpanel är det oftast domänens ägare). Du ser den så här:
/etc/sudoers.d/monitor finns och innehåller rader med din användare.
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:
Fyll i dina egna värden i de markerade fälten; låt resten vara som det är:
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.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:
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.
http:// kan du inte logga in.
Certbot skipped — issue SSL in …). Certifikatet utfärdas med Let's Encrypt-omkopplaren på webbdomänen i själva panelen — då sköter panelen även förnyelsen.
certbot och Apache-insticksprogrammet är redan installerade av autokonfigurationen. Domänens DNS ska redan peka på servern (steg 02). Utfärda med ett kommando:
Om panelen även ska kunna öppnas med www. — ange båda namnen i ett och samma kommando, annars visar webbläsaren en certifikatvarning på den andra adressen:
Y.<VirtualHost *:443>, ställer in omdirigering http→https och automatisk förnyelse. Till sist — Successfully enabled HTTPS.
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://.
Öppna https://monitor.example.com, logga in med admin / useradmin och gå igenom checklistan:
ARCIVEO-… från kundportalen för din domän och klistra in nyckeln under ”Inställningar” → ”Licens”. Läs mer.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.sudo /usr/local/bin/clamav-scan.sh) belastar disk och processor kraftigt och kan pågå en timme eller mer — på en produktionsserver är det bättre att invänta nattkörningen kl. 01:30. Avsnitten ”Diskar (SMART)”, ”Prestanda” och ”Säkerhetsuppdateringar” fylls på av sig själva: var 30:e minut, var 5:e minut respektive en gång i timmen.