Gå direkt till sidans huvudinnehåll

Kör din egen server med Webperf Core

Servrar i ett datacenter

Webperf Core är det öppna testramverket bakom den här webbplatsens testresultat. Det kan upplevas som svårt att installera om du inte är så tekniskt lagd, men nu finns ett lite enklare alternativ.

Nu kan du ladda ner en mallfil för att skapa din egen virtuella server. I denna bloggpost får du reda på mer vad det innebär och hur du kan testa detta på egen hand.


Avsnitt:

  1. De olika varianterna av Webperf är…
  2. Vad är en virtuell server?
  3. Guide för att sätta upp din egen testserver
  4. Hur använder jag min server?
  5. Jag vill testa igenom hela min sitemap.xml
  6. Uppdatera till den senaste koden av Webperf Core från Github

De olika varianterna av Webperf är…

  1. Webperf Core – communityts tester som är opensource och gratis, men tekniska
  2. Webperf.se – en webbplats som visar upp främst offentlig sektors resultat med sina webbplatser
  3. Webperf Premium – tjänst för dig som inte kan eller vill jobba med Webperf Core på egen hand

Det du ser här på Webperf.se är nämligen en tillämpning av något du åtminstone i teorin kan göra själv. Men då det förutsätter att du har en viss förkunskap och erfarenhet är det kanske på sin plats att beskriva hur du kan börja på egen hand om du är tekniskt lagd, vad du kan kravställa om du har en beställande roll eller vad du kan köpa som tjänst om det rimmar bättre med er IT-strategi.

Webbplatsen du nu är inne på är till för att väcka tävlingsinstinkten hos de som listas. Alla får inte vara med på Webperf.se, det är främst offentlig sektor, myndigheter och andra som är viktiga för ett digitalt inkluderande Sverige. På webbplatsen Webperf.se ges återkoppling om vad som behöver bli bättre och förhoppningsvis sporras de som listas till att vilja bli bättre på något konkret och mätbart. Men webbplatsen och testservrarna bakom kan inte testa av alla svenska webbplatser eller ens samtliga sidor på de tusentals webbplatser som redan listas. Det vore inte hållbart!

Så redan från start har det funnits en tanke om att släppa testpaketet öppet för vem som helst att återanvända till sina egna syften. Det kan vara så att du vill ha ett intranät testat, något annat internt system, integrera med acceptanstest eller varför inte organisationens DevOps-miljö. Det löser du om du kan testa själv och för många är det inte aktuellt att låta en SaaS-tjänst komma åt interna system, även fast det går med fasta IP-adresser, VPN, etc.

Och med tanke på att det här svenska Webperf-communityt förlitar sig på annan open source för våra tester vore det knappast snyggt att inte dela med sig av det vi byggt på ett öppet sätt.

Vilken Webperf passar dig?

Du som är teknisk – du kan installera allt på egen hand med Docker, Node, Python, några väl valda tester från tredjeparter och communityts egna. Du hittar kod och dokumentation på GitHub. Det går under MIT-licens, så du kan göra vad du vill.
webperf_core (Github)

Du som är orädd att pröva eller funderar på att kravställa mot din IT-avdelning eller webbyrå – kolla in den här virtuella servern som guidas till nedan. Det är en genväg att testa eller komma igång med sina egna tester. Du eller de som ska testa behöver ha en relativt stark dator och få lov att installera programvaror på datorn.
Fortsätt läsa denna guide!

Vill du bara köpa det hela som molntjänst? Ja, det går. Kolla in de olika paketen av Webperf Premium. Köper du mellan-paketet kan du, din IT-avdelning och webbyrå alla logga in till verktyget.
Webperf Premium

Vad är en virtuell server?

Webperf Core-servern erbjuds som en virtuell server. Så vad tusan är en virtuell server? Ja, det är en legitim och rimlig fråga. Det korta svaret är att det är en stor och komplicerad grej som körs som ett program eller app, bland många andra, på en viss maskin.

Det lite längre svaret är att en virtuell server är en dator som körs som en programvara på en fysisk server. Istället för att ha en separat fysisk server för varje applikation eller tjänst, kan man skapa flera virtuella servrar på en och samma fysiska server.

Varje virtuell server fungerar som en oberoende enhet med sitt egna operativsystem och programvara, vilket gör att flera olika applikationer och tjänster kan köras på samma fysiska server utan att de stör ut eller påverkar varandra.

Genom att använda virtuella servrar kan du dra nytta av fördelarna med servervirtualisering. Det kan låta som svartkonst eller säljsnack men innebär ökad flexibilitet, skalbarhet och effektivitet. Det kan också bidra till att minska kostnader genom att man inte behöver köpa och underhålla flera separata fysiska servrar.


  • Fikonspråk 1 – värd / host: Det avser den fysiska maskin och dess operativsystem som kör din virtuella maskin.
  • Fikonspråk 2 – gäst / guest: Den virtuella maskinen, eller datorn om du så vill. En icke-fysisk dator åtminstone, den körs som gäst inom en annan maskin som går att ta på.

Anledningen till att det här med värd och gäst är viktigt kommer du kanske märka. Eller ha behov av när du söker efter lösningar. Värden och gästen har olika roller. Exempelvis när du från din virtuella gästmaskin vill kunna skriva filer till värdens hårddisk. Det är samma dator, men arkitekturellt och logisk är de åtskiljda.

Virtuell server i molnet, hos IT-avdelningen eller på din egen dator

Du kan köra en virtuell server ”i molnet”. Då kallas de ofta för VPS (Virtual Private Server), vilket är precis vad Webperf.se gör för sina egna tester. Vi kör på svenska Glesys och tyska Hetzner fast från Helsingfors.

Men din IT-avdelning kan mycket väl ha en sån här plattform redo för användning. Prata med dem!

Samtidigt kan du sätta upp en sån här virtuell server på din egen dator om du har rättigheterna och den har nog med kraft. Populära leverantörer av virtualiseringslösningar både för din egen dator eller ett datacenter är:

  • VMware – antagligen störst på virtualiseringsmarknaden
  • Oracle VM VirtualBox – men läs licensvillkoren och betänk Oracles historia
  • Parallels – extra populärt bland Mac-användare

Åtminstone undertecknad har dragit nytta av virtuella maskiner för utveckling och specialiserade uppgifter de senaste 15 åren.

Guide för att sätta upp din egen testserver

Skärmdump av Virtualbox från Oracle. Ett virtualiseringsverktyg för de flesta operativsystemen.
Så här ser Virtualbox ut på en Windows-dator.

Du måste inte ladda ner just Oracles Virtualbox, men vi måste välja ett verktyg och den här guiden utgår från Virtualbox. Du behöver 8Gb arbetsminne att ge din virtuella maskin, 4 st CPU-kärnor (men det kan konfigureras innan uppstart) och rekommenderas ha 150 Gb hårddisk till förfogande. Maskinen är en Ubuntu Server 22 LTS, vilket betyder att det är en dator utan grafiskt användargränssnitt (GUI). LTS (Long-Term Support) handlar om att Ubuntu kommer ge uppdateringar i många år till.

Steg för steg:

  1. Ladda ner och installera VirtualBox - den finns för de vanligaste operativsystemen för värdar, som Windows, Linux och Macos (om du nu inte kör en ARM-processor). Gästsystem kan vara allt från 1990-talets Windows NT 4, DOS och Windows 3, till Linux, Solaris, OS/2 och OpenBSD.
    Du behöver inte göra några inställningar alls.
  2. Ladda ner Webperf Core Server (12Gb OVA-fil) – en sorts mall för att skapa din egen virtuella server. Filen hämtas från Google Drive och skapades i februari 2024.
  3. Starta Virtualbox, välj File Import appliance, där pekar du ut filen du just laddade ner med Webperf-servern. Det kommer ta en stund för datorn att tugga sig igenom detta.
  4. När den är klar trycker du på den gröna pilen ”Start” i Virtualbox.
  5. Nu är din virtuella server igång och det kommer rassla förbi en massa teknikaliteter.

Förr eller senare kommer du få frågan om att logga in. Användarnamnet är webperf och lösenordet är webperf. Kanske vill du ändra detta ifall du ska behandla saker som inte är harmlöst om någon annan kommer över. För de flesta av oss spelar serverns säkerhet ingen nämnvärd roll. Ja, du som undrar ifall OpenSSH är förinstallerad så är svaret ja.

Om det krånglar?

Ett vanligt problem inledningsvis är skärmstorleken på den här virtuella maskinen. Det kan du styra via View Virtual screen 1 Scale to 100% för att se vad som händer på skärmen.

Problemet med den lilla skärmen är att det är svårt att få en överblick på testresultaten du kommer vilja köra. Men en funktion i Linux-terminalen är att avsluta sina kommandon med pipe-tecken och texten more, då får du dina resultat sida för sida, det kräver att du trycker på någon tangent för att hoppa till nästa sjok med output. Hur hittar man pipe-tecknet på tangentbordet? På Windows är det Alt-Gr och tangenten bredvid vänstra Shift. Den med >- och <-tecknen. På en Mac är det istället Option + 7

Har du kört fast? Beskriv ditt problem på vår Slack så kommer du säkert få hjälp!

Hur använder jag min server?

Skärmdump från den virtuella miljön och dess terminal som kör Webperf Core
Det du möts av i din virtuella server är ett terminal-gränssnitt.

Förutom att logga in med webperf och webperf som användarnamn och lösenord kan det kännas klurigt att jobba i ett terminalfönster om man inte är van.

Det första du behöver göra är att gå in i mappen där testerna finns. Det gör du genom kommandot cd, för du befinner dig vid uppstart i serverns rot:

cd webperf_core

Det här tar dig till mappen som heter webperf_core vilket är var testerna finns på din virtuella maskin. En förutsättning för alla tester som är beroende av Docker i din server är att låta Docker som mjukvara jobba. Det gör du genom att skriva in nedan kommando och kanske uppge webperf som lösenord på nytt:

sudo chmod 777 /var/run/docker.sock

När det är klart kan du provköra ditt första test. Det du har i din virtuella server är så som Webperf Core såg ut i början av april 2023, vilket gör att du kan följa den dokumentation som finns på Github.
webperf_core

Men ett exempel på anrop om du står i din virtuella servers mapp för webperf_core är att skriva in följande:

python default.py -u https://webperf.se -t 1 -r | more 

Vad gör då detta kommando? Jo, det säger åt Python-programmet i den virtuella servern att köra filen default.py, den skickar med att URL:en (-u) att testa är https://webperf.se, den säger att det enda testet (-t) som ska köras är nummer 1, vilket betyder Lighthouse tillgänglighet, att vi i terminalfönstret vill få en långrandig förklaring (-r). Att det avslutas med | more beror på att vi som läser det som händer i terminalen enklare kan navigera i resultatet som spottas ut på skärmen. Du kan strunta i |more när det är kortare svar.

För att köra kommandot du skrivit in i terminalen trycker du på Enter-tangenten.

Vilka är de där testnumrena jag kan välja på?

Nedan siffror kan du använda ifall du vill köra ett enskilt test:

  • 1 — Webbprestanda enligt Google Lighthouse
  • 4 — Sökmotoroptimering (SEO) enligt Google Lighthouse
  • 5 — Följs praxis enligt Google Lighthouse
  • 6 — Validerar HTML
  • 7 — Validerar CSS
  • 8 — Progressive Web Apps enligt Google Lighthouse
  • 9 — Standardfiler
  • 10 — Tillgänglighet enligt Axe
  • 15 — Webbprestanda enligt Sitespeed.io
  • 17 – Kvalitet på frontend enligt Yellow Lab Tools
  • 18 — Tillgänglighet enligt Pa11y (OBS! Fungerar inte i virtuella maskinen)
  • 20 — Integritetstest med Webbkoll
  • 21 — HTTP & tekniktest
  • 22 — Energieffektivitet
  • 23 — Spårning och integritet
  • 24 — E-post
  • 25 — Mjukvara
  • 26 — Tillgänglighetsredogörelse

Du kan också välja att köra alla testerna på en angiven adress. Då struntar du bara att skriva med -t #. Som nedan kodexempel.

python default.py -u https://webperf.se -r | more 

Jag behöver ändra i min konfiguration!

Ok, det går trots att det är en terminal. Se till att du är i mappen webperf_core och skriv kommandot:

nano config.py
Då får du en terminalbaserad filredigerare. Här kan du exempelvis styra ifall du vill ha det mer långrandiga svaret på mjukvarutestet eller ej (test 25), leta då upp nedan rad och avsluta den med True. Så här:
software_use_detailed_report = True

För att spara trycker du Ctrl + X, sedan Y för att bekräfta att du vill spara, sedan Enter-tangenten för att skriva över din inställningsfil.

Vill du skriva testresultatet till en mapp på värddatorn?

Säg att du på din värddator vill samla in allt det där som rasslar förbi i form av testresultat i terminalen. Ja det går. Här finns en guide om hur du monterar en delad mapp från din värd och gäst. Sen kan du byta ut | more i dina kommandon till > ~/shared/output.txt och resultatet kommer landa i mappen shared på din värd och filen kommer heta output.txt. Det underlättar exempelvis om du ska skicka resultatet vidare till någon.

Jag vill testa igenom hela min sitemap.xml

Testa igenom massor med sidor från din sitemap? Med nedan terminal-kommando kommer Webperfs sitemap hämtas, den kommer testa igenom 2 st adresser ur sitemapen och skriva resultatet till en CSV-fil som heter min-fil.csv som hamnar i samma mapp som du står i när kommandot körs.

python default.py -i https://webperf.se/sitemap.xml --input-take 2 --output min-fil.csv

Ifall du har Sitevision som CMS blir det lite jobbigare eftersom man i Sitevision Gzip-komprimerat sitemaps. Då måste du ladda ner filen som heter .xml.gz, packa upp den, ladda upp den igen på din webbplats och skriva in dess adress i ditt terminal-kommando.

Uppdatera till den senaste koden av Webperf Core från Github

Testerna i Webperf Core uppdateras kontinuerligt på Github. Men de ändringarna synkas inte automatiskt ner till din maskin. Så du kan vilja komma ikapp eller konservativt stå kvar vid hur det såg ut när du började. För att komma ikapp går du först in i din mapp för Webperf Core:

cd webperf_core

Sedan ska du skriva ett git-kommando. Det finns massor av olika kommandon, se fusklappen från Github här, men det du ska skriva nu är inte så svårt:

git pull

Det drar ner allt det senaste från Webperfs repo på Github till din egen testserver. Det kan inträffa konflikter i hämtningen och då får du googla på felmeddelanden. Ifall du inte gjort något avancerat kommer du bara få en rapport över filer som förändrats.

Ifall du ser att filen requirements.txt har ändrats betyder det att Webperf Core har börjat förlita sig på fler eller nyare paket från Python-communityt. Det är inte säkert att dina körningar av tester fortsätter att fungera efter en sådan förändring. Det du kan göra är att uppdatera vilka paket din testserver har installerat. Det gör du med nedan kommando när du står i mappen webperf_core

pip install -r requirements.txt

Frågor? Hör av dig via Slack! Dokumentationen är under utveckling för just detta sätt att köra Webperf Core, men testerna har sin dokumentation på Github och beroende på din fundering kan svaret redan finnas där.