Hoste Umami på en Managed VPS: din webanalyse på din egen server

At hoste Umami på en Managed VPS betyder, at analysen af dine websites bliver på en maskine, der er din egen, og som vores teams holder opdateret og overvåger dag og nat. Umami er fri software under MIT-licensen, som måler trafikken uden cookies. Denne guide følger den officielle dokumentation: installation med Docker Compose og PostgreSQL, HTTPS, det første login, sporingsscriptet, hvad projektet siger om persondata, nyttige indstillinger, backup og opdateringer.

Simon Vasconcelos Lee Af Udgivet den 15. november 2026Læsetid: 12 minutter

Alle guider

Det vigtigste

  1. MIT-licensen tillader at bruge, ændre og videredistribuere Umami frit, både i virksomheder og andre steder, så længe du beholder dens copyrightmeddelelse.
  2. Installér med Docker Compose: projektets fil starter Umami og dens PostgreSQL-database, den eneste understøttede database siden version 3.
  3. Generér APP_SECRET og TWO_FACTOR_ENCRYPTION_KEY tilfældigt, server Umami over HTTPS på sit eget underdomæne, og skift derefter straks adgangskoden til kontoen admin.
  4. Tilføj dit website, og indsæt derefter dets sporingsscript i <head> på dine sider: sporingen bruger ikke cookies.
  5. Eksportér databasen hver dag med pg_dump, opbevar filen .env et sikkert sted, og opdatér med docker compose pull.

Hvad Umami gør

Umami er en platform med åben kildekode til web- og produktanalyse. Dens dokumentation beskriver et værktøj, der samler trafik, kampagner, de besøgendes adfærd, konverteringer, fastholdelse og omsætning, fra det første besøg til de resultater, der betyder noget for din virksomhed. Den er skrevet i TypeScript på Next.js, og dens Docker-image kører under en konto uden særlige rettigheder.

Én instans sporer flere websites: hvert får sit eget id og sit eget sporingsscript, og dine kolleger finder rundt via konti og teams.

Hvad MIT-licensen tillader

Umami udgives under MIT-licensen i navnet Umami Software, Inc. Den giver gratis ret til at bruge, kopiere, ændre, sammenflette, udgive, distribuere, underlicensere og sælge kopier af softwaren. Du kan altså køre den for din virksomhed og for dine kunders websites uden at skulle købe en licens.

Dens eneste betingelse: copyrightmeddelelsen og tilladelsesmeddelelsen følger med alle kopier eller væsentlige dele af softwaren. Som enhver MIT-licens leverer den softwaren «som den er», uden garanti.

Cookies og persondata: hvad projektet siger

Dokumentationen præsenterer Umami som analyse uden cookies, uden sporing på tværs af websites og uden automatisk indsamling af persondata. Selvhostet holder den din analyse på din egen server: du bestemmer, hvor den ligger, og hvor længe den bliver.

SpørgsmålHvad projektet sigerKilde
CookiesWebsporingen bruger ikke cookies; om dit website har brug for en cookiemeddelelse, afhænger af de andre tjenester, du bruger, og de krav, der gælderFAQ
Indsamlede dataSidevisninger, henvisende adresser, browsere, styresystemer, enhedstyper og omtrentlig placeringFAQ
IP-adresseSessionstabellen har ingen kolonne til IP-adressen; et sessions-id er en hash af websitet, adressen, browseren og et salt, der som standard skiftes hver månedSkema og kode, version 3.4.1
OpbevaringSelvhostet opbevares dataene, indtil du sletter demFAQ
GDPRUmami er udviklet med privatlivet for øje, og overholdelsen afhænger af, hvordan du konfigurerer og bruger denFAQ
Data, du senderEt besøgs-id eller egenskaber ved hændelser, som du vælger at sende, er dit ansvarIntroduktion

Tre indstillinger i sporingsscriptet går længere, hvis du ønsker det: data-exclude-search fjerner søgeparametrene fra de registrerede adresser, data-exclude-hash fjerner hashen, og data-do-not-track slår sporingen fra for browsere, der angiver præferencen Do Not Track. Dokumentationen bemærker, at denne sidste indstilling ikke i sig selv er en komplet løsning til håndtering af samtykke.

Hvis du identificerer indloggede besøgende med data-distinct-id eller umami.identify(), anbefaler dokumentationen et internt bruger-id eller en hash frem for en e-mailadresse: værdien kan læses i sidens HTML.

Installation med Docker Compose og PostgreSQL

Repositoryet leverer en docker-compose.yml, der starter Umami og dens PostgreSQL-database. Siden version 3 er PostgreSQL den eneste understøttede database, mindst i version 12.14, og dokumentationen anbefaler at sætte den til tidszonen UTC. På en server, hvor Docker er installeret, opretter du en mappe og begynder med dens hemmeligheder, genereret tilfældigt med openssl, som dokumentationen foreslår:

Terminal
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 24)
APP_SECRET=$(openssl rand -hex 32)
TWO_FACTOR_ENCRYPTION_KEY=$(openssl rand -hex 32)
EOF
chmod 600 .env

Læg derefter denne compose.yaml ved siden af. Den følger projektets fil i version 3.4.1 med to ændringer: hemmelighederne kommer fra filen .env, og porten publiceres kun på 127.0.0.1.

compose.yaml
services:
  umami:
    image: ghcr.io/umami-software/umami:latest
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
      APP_SECRET: ${APP_SECRET}
      TWO_FACTOR_ENCRYPTION_KEY: ${TWO_FACTOR_ENCRYPTION_KEY}
    depends_on:
      db:
        condition: service_healthy
    init: true
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5
volumes:
  umami-db-data:
Terminal
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat

Installationsdokumentationen opgiver intet tal for hukommelse eller CPU. Størrelsen afhænger af trafikken på de sporede websites og af den mængde data, du gemmer. På en Managed VPS beskriver du blot din brug for os, og vi anbefaler den størrelse, der passer.

HTTPS: reverse proxyen

Umami lytter over HTTP på port 3000, og dokumentationen foreslår at servere den bag din webserver via en reverse proxy. Giv den sit eget underdomæne, som stats.example.com, der peger på serveren med A- og AAAA-records. At servere Umami under en sti går via BASE_PATH, en variabel, der læses, når applikationen bygges: med det udgivne image er underdomænet den direkte vej.

Proxyen skal også videregive den besøgendes adresse. Umami læser den i de headere, den modtager, blandt andet X-Real-IP og X-Forwarded-For: den bruger den til at skelne de besøgende fra hinanden og til at bestemme deres land. Hvis din proxy bruger en anden header, angiver CLIENT_IP_HEADER dens navn.

Med Caddy

Caddy henter selv certifikatet fra Let's Encrypt og slår HTTPS til. Dens direktiv reverse_proxy sætter som standard X-Forwarded-For: disse tre linjer er alt, hvad der skal til.

Caddyfile
stats.example.com {
  reverse_proxy 127.0.0.1:3000
}

Med Nginx og Certbot

Denne blok følger Nginx-eksemplet fra Umamis dokumentation og lytter på port 80, så Certbot kan sætte HTTPS op:

Nginx-blok
server {
  listen 80;
  listen [::]:80;
  server_name stats.example.com;

  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Certbot installerer derefter certifikatet og sørger for at forny det:

Terminal
sudo certbot --nginx

Det første login: administratorkontoen og tofaktorgodkendelse

Når Umami opretter sin database, åbner den en administratorkonto: brugernavn admin, adgangskode umami. Dokumentationen beder dig om at ændre denne adgangskode ved dit første login.

  1. Åbn din HTTPS-adresse, og log ind med admin og umami.
  2. Åbn Settings fra profilknappen i sidepanelet, derefter Profile, og klik på Change password.
  3. Under fanen Security slår du tofaktorgodkendelse til: scan QR-koden med din godkendelsesapp, indtast den sekscifrede kode, og gem derefter de ti backupkoder et sikkert sted, da de kun vises én gang.

Opbevar TWO_FACTOR_ENCRYPTION_KEY sammen med dine backups: dokumentationen advarer om, at hvis denne nøgle mistes eller ændres, bliver de gemte hemmeligheder ulæselige, og hver bruger skal så tilmelde sig tofaktorgodkendelse igen.

Tilføj et website og dets sporingsscript

  1. Under Websites klikker du på Add website.
  2. Giv websitet et navn og derefter dets domæne: Umami bruger det til at filtrere dine egne sider ud af listen over henvisninger.
  3. Åbn Edit på websitet, og kopiér koden fra afsnittet Tracking code.
  4. Indsæt den i <head> på dine sider, og besøg derefter dit website: dataene vises straks på dashboardet.
Sporingskoden, i head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Et scriptnavn efter eget valg

Visse annonceblokkere blokerer alt, der ligner analyse. Selvhostet serveres Umami allerede fra dit eget domæne, og to variabler går længere: TRACKER_SCRIPT_NAME giver scriptet et andet navn end script.js, og COLLECT_API_ENDPOINT omdøber indsamlingsendpointet i stedet for /api/send. Scriptet kalder derefter selv det nye endpoint; kun kilden i sporingskoden ændres på dine sider.

compose.yaml, under environment
TRACKER_SCRIPT_NAME: "stats.js"
COLLECT_API_ENDPOINT: "/api/collect"

Nyttige indstillinger

Disse miljøvariabler lægges i tjenesten umami i compose.yaml, og derefter genskaber docker compose up -d containeren, så de tages i betragtning:

VariabelHvad den gørVærdi
DISABLE_TELEMETRYSlår den anonyme telemetri fra, som Umami sender til projektet for at forbedre applikationen1
PRIVATE_MODESlår alle eksterne netværkskald fra, også websitenes ikoner, som som standard hentes fra DuckDuckGo1
DISABLE_UPDATESSlår søgningen efter nye versioner fra1
IGNORE_IPUdelukker IP-adresser og CIDR-områder fra indsamlingen, for eksempel dine kontorersEn kommasepareret liste
SALT_ROTATIONAngiver, hvor ofte saltet bag sessions-id'erne skiftesmonth som standard
REDIS_URLTilføjer en Redis-cache, som dokumentationen anbefaler til websites med meget trafik eller til flere instanserDin Redis-adresse
MCP_ENABLEDÅbner endpointet /mcp: din AI-assistent læser din analyse med læseadgang via en API-nøgle oprettet under Settings, API keys1

Backup

Alt, hvad Umami gemmer, ligger i dens PostgreSQL-database: konti, websites, teams og analyse. Eksportér den hver dag og lige før hver opdatering: selvhostet opbevares disse data uden tidsbegrænsning. Ved siden af databasen rummer filen .env de hemmeligheder, der gør den brugbar:

ElementHvad det rummerSkal der tages backup
PostgreSQL-databasenKonti, websites, teams, rapporter og al analyseObligatorisk, med pg_dump
.envDatabasens adgangskode, APP_SECRET og nøglen til tofaktorgodkendelseObligatorisk, krypteret
compose.yamlDin instans' konfigurationAnbefalet

Eksportér databasen, mens den kører

pg_dump laver en konsistent eksport, mens databasen er i brug. Det tilpassede format, -Fc, er komprimeret og gendannes med pg_restore:

Terminal, i mappen med compose.yaml
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump

Planlæg denne kommando på serveren mindst én gang om dagen, ryd op i eksporterne, som hober sig op, og send en kopi et andet sted hen. Lagt på serverens disk indgår disse eksporter også i dens natlige backup.

Gendan

  1. Stop Umami, og lad databasen køre: docker compose stop umami.
  2. Gendan eksporten i databasen, så de eksisterende objekter erstattes.
  3. Start Umami igen, og kontrollér derefter, at dine websites og deres analyse er der.
Terminal
docker compose stop umami
docker compose exec -T db pg_restore -U umami -d umami --clean --if-exists < umami-YYYY-MM-DD.dump
docker compose start umami

Gentag denne øvelse en gang imellem på en kopi: sådan kontrollerer du, at en backup virker.

Opdateringer

Dokumentationen giver to kommandoer, fra mappen med compose.yaml. Databasen bliver i sit volumen:

Terminal
docker compose pull
docker compose up --force-recreate -d

Ved genstart anvender containeren selv skemaets migreringer. Version 3.4.0 fra den 17. september 2026 havde to af dem med, til annoteringer og API-nøgler; version 3.4.1 fra den 23. oktober 2026 har ingen. Efter en større opgradering, som overgangen til version 3, foreslår dokumentationen at køre ANALYZE i PostgreSQL, så dashboardene får deres hastighed tilbage:

Terminal
docker compose exec db psql -U umami -d umami -c "ANALYZE;"

Hvem gør hvad på en Managed VPS

Selvhosting kræver, at du holder serveren ud over selve applikationen. På en Managed VPS tager vores teams sig af serveren og følger din instans proaktivt; Umami forbliver din software, med dens indstillinger og data.

EmneVores teamsDig
ServerenOpdateringer af system og sikkerhed, indgreb på serveren inkluderetDet tidspunkt, der passer til din drift
OvervågningenServeren følges døgnet rundt, alle ugens dage, med indgreb uden at vente på dit opkaldGennemlæsning af din instans' logfiler
UmamiProaktiv opfølgning: fejl, langsomme svartider og diskplads opdages, og en rettelse anbefalesInstallation, opdateringer og indstillinger, som du gennemfører, selv eller med din AI-assistent
Websites og analyseDen server, der bærer dem, overvåget og sikkerhedskopieretKontiene, de sporede websites, sporingsscriptet og opbevaringstiden for dataene
BackupHver nat, krypteret og opbevaret uden for maskinen; gendannelse inkluderetDe eksporter, der er specifikke for Umami, og anmodningen om gendannelse, når du får brug for den
MigreringenDin nuværende server flyttes, uden beregningTidspunktet for omlægningen

Hvis du foretrækker, at vores teams griber ind i selve applikationen, faktureres den ydelse pr. time eller som fast pris, med et overslag oplyst før indgrebet.

Umami på en server, der passes for dig

Med en Managed VPS fra Simafri holder vores teams serveren bag din Umami-instans opdateret, overvåger den dag og nat og griber ind uden at vente på dit opkald; de følger også din instans proaktivt og anbefaler dig de nyttige rettelser, som du gennemfører, selv eller med din AI-assistent. Backup krypteres hver nat og opbevares uden for maskinen, gendannelsen er inkluderet, og migreringen af din nuværende server sker uden beregning.

Opdag Managed VPS

Ofte stillede spørgsmål

Er Umami gratis for en virksomhed?

Ja. Umami er under MIT-licensen: du kan bruge, ændre og videredistribuere den i din virksomhed uden at skulle købe en licens, så længe du beholder dens copyrightmeddelelse. Tilbage er udgiften til den server, der kører den.

Bruger Umami cookies?

Nej. Projektets FAQ angiver, at Umamis websporing ikke bruger cookies. Om dit website har brug for en cookiemeddelelse, afhænger af de andre tjenester, du bruger på det, og de krav, der gælder.

Virker Umami med MySQL?

Ikke siden version 3: Umami understøtter PostgreSQL, mindst i version 12.14. En instans i version 2 på MySQL flytter først sine data til PostgreSQL med projektets migreringsguide og opgraderer derefter til version 3.

Hvordan installerer man Umami med Docker Compose?

Tag udgangspunkt i projektets docker-compose.yml, som kører Umami og PostgreSQL, med tilfældige hemmeligheder i en fil .env og porten publiceret på 127.0.0.1. Kør docker compose up -d, og sæt derefter en reverse proxy med HTTPS foran på et underdomæne.

Hvad er Umamis standardadgangsoplysninger?

Ved installationen opretter Umami en konto admin med adgangskoden umami. Skift den ved dit første login under Settings og derefter Profile, og slå tofaktorgodkendelse til under fanen Security, når TWO_FACTOR_ENCRYPTION_KEY er angivet.

Hvordan omdøber man Umamis sporingsscript?

På en selvhostet instans giver TRACKER_SCRIPT_NAME scriptet et andet navn end script.js, og COLLECT_API_ENDPOINT omdøber indsamlingsendpointet /api/send. Ændr derefter kilden i sporingskoden på dine sider.

Hvordan tager man backup af Umami?

Eksportér PostgreSQL-databasen hver dag med pg_dump fra databasens container, og opbevar filen .env separat, da den rummer APP_SECRET og nøglen til tofaktorgodkendelse. Gendan med pg_restore, og test gendannelsen regelmæssigt.

Dækker en Managed VPS Umami?

En Managed VPS dækker serveren: system, sikkerhed, overvågning og backup. Vores teams følger også din instans proaktivt og anbefaler dig de nyttige rettelser, som du gennemfører. Et indgreb i selve applikationen faktureres pr. time eller som fast pris.

Kilder og officiel dokumentation

Kontakt os