Att hosta Umami på en Managed VPS innebär att statistiken för dina webbplatser stannar på en egen maskin, som våra team håller uppdaterad och bevakar dag och natt. Umami är fri programvara under MIT-licensen som mäter trafiken utan kakor. Den här guiden följer den officiella dokumentationen: installation med Docker Compose och PostgreSQL, HTTPS, den första inloggningen, spårningsskriptet, det projektet säger om personuppgifter, användbara inställningar, säkerhetskopior och uppdateringar.
Av Simon Vasconcelos Lee
Publicerad den 15 november 2026Lästid: 12 minuter
APP_SECRET och TWO_FACTOR_ENCRYPTION_KEY slumpmässigt, servera Umami med HTTPS under en egen underdomän och byt sedan genast lösenordet för kontot admin.<head> på dina sidor: spårningen använder inga kakor.pg_dump, förvara filen .env på ett säkert ställe och uppdatera med docker compose pull.Umami är en plattform med öppen källkod för webb- och produktanalys. Dess dokumentation beskriver ett verktyg som samlar trafik, kampanjer, besökarnas beteende, konverteringar, återkommande besökare och intäkter, från det första besöket till de resultat som betyder något för din verksamhet. Det är skrivet i TypeScript på Next.js, och dess Docker-avbild körs under ett konto utan särskilda rättigheter.
En instans följer flera webbplatser: var och en får sitt eget ID och sitt eget spårningsskript, och dina kolleger hittar rätt genom konton och team.
Umami publiceras under MIT-licensen, i namnet Umami Software, Inc. Den ger, kostnadsfritt, rätt att använda, kopiera, ändra, slå samman, publicera, distribuera, underlicensiera och sälja kopior av programvaran. Du kan alltså köra den för ditt företag och för dina kunders webbplatser, utan att köpa någon licens.
Dess enda villkor: upphovsrättsmeddelandet och tillståndsmeddelandet följer med alla kopior eller väsentliga delar av programvaran. Som varje MIT-licens tillhandahåller den programvaran ”i befintligt skick”, utan garanti.
Dokumentationen presenterar Umami som en analys utan kakor, utan spårning mellan webbplatser och utan automatisk insamling av personuppgifter. Självhostad håller den din statistik på din egen server: du bestämmer var den finns och hur länge den sparas.
| Fråga | Det projektet säger | Källa |
|---|---|---|
| Kakor | Webbspårningen använder inga kakor; om din webbplats behöver ett meddelande om kakor beror på de andra tjänster du använder och de krav som gäller | FAQ |
| Insamlade data | Sidvisningar, hänvisande adresser, webbläsare, operativsystem, enhetstyper och ungefärlig plats | FAQ |
| IP-adress | Tabellen för sessioner har ingen kolumn för IP-adressen; ett sessions-ID är en hash av webbplatsen, adressen, webbläsaren och ett salt som som standard byts varje månad | Schema och kod, version 3.4.1 |
| Lagringstid | Självhostade sparas data tills du tar bort dem | FAQ |
| GDPR | Umami är utformat med integriteten i åtanke, och efterlevnaden beror på hur du konfigurerar och använder det | FAQ |
| Data du skickar | Ett besökar-ID eller händelseegenskaper som du väljer att skicka är ditt ansvar | Introduktion |
Tre inställningar i spårningsskriptet går längre, om du vill: data-exclude-search tar bort sökparametrarna från de registrerade adresserna, data-exclude-hash tar bort ankaret, och data-do-not-track stänger av spårningen för webbläsare som anger inställningen Do Not Track. Dokumentationen påpekar att den sista inställningen inte på egen hand är en komplett lösning för hantering av samtycke.
Om du identifierar inloggade besökare med data-distinct-id eller umami.identify() rekommenderar dokumentationen ett internt användar-ID eller en hash i stället för en e-postadress: värdet går att läsa i sidans HTML.
Förrådet levererar en docker-compose.yml som startar Umami och dess PostgreSQL-databas. Sedan version 3 är PostgreSQL den enda databas som stöds, minst version 12.14, och dokumentationen rekommenderar att ställa in den på tidszonen UTC. På en server där Docker är installerat skapar du en mapp och börjar med dess hemligheter, slumpmässigt genererade med openssl, som dokumentationen föreslår:
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ägg sedan denna compose.yaml bredvid. Den följer projektets fil i version 3.4.1, med två ändringar: hemligheterna kommer från filen .env, och porten publiceras bara på 127.0.0.1.
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:
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat
DATABASE_URL: den enda obligatoriska variabeln, anslutningssträngen till databasen. Det hexadecimala lösenordet skrivs in som det är; ett lösenord med specialtecken skulle kräva procentkodning.APP_SECRET: en slumpmässig sträng som skyddar autentiseringstoken, unik för varje installation. I koden för version 3.4.1 ingår den också i beräkningen av sessions-ID: håll den oförändrad.TWO_FACTOR_ENCRYPTION_KEY: 64 hexadecimala tecken som krypterar hemligheterna för tvåfaktorsautentisering. Utan den kan ingen aktivera tvåfaktorsautentisering.admin. Sonden /api/heartbeat svarar {"ok":true} när Umami är redo.latest följer den senast publicerade versionen. Projektets register publicerar också versionstaggar, som 3.4.1, för att låsa den du kör.Installationsdokumentationen anger ingen siffra för minne eller processor. Storleken beror på trafiken till de följda webbplatserna och på volymen av data du sparar. På en Managed VPS beskriver du hur du tänker använda den, så rekommenderar vi lämplig storlek.
Umami lyssnar med HTTP på port 3000, och dokumentationen föreslår att servera den bakom din webbserver, via en omvänd proxy. Ge den en egen underdomän, som stats.example.com, som pekar mot servern med A- och AAAA-poster. Att servera Umami under en sökväg går via BASE_PATH, en variabel som läses när applikationen byggs: med den publicerade avbilden är underdomänen den direkta vägen.
Proxyn måste också skicka vidare besökarens adress. Umami läser den i huvudena den tar emot, bland andra X-Real-IP och X-Forwarded-For: den använder den för att skilja besökarna åt och avgöra deras land. Om din proxy använder ett annat huvud anger CLIENT_IP_HEADER dess namn.
Caddy hämtar certifikatet från Let’s Encrypt och aktiverar HTTPS på egen hand. Dess direktiv reverse_proxy sätter X-Forwarded-For som standard: de här tre raderna räcker.
stats.example.com {
reverse_proxy 127.0.0.1:3000
}
Det här blocket följer Nginx-exemplet i Umamis dokumentation, och lyssnar på port 80 så att Certbot kan installera HTTPS:
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 installerar sedan certifikatet och sköter förnyelsen:
sudo certbot --nginx
När Umami skapar sin databas öppnar den ett administratörskonto: användarnamnet admin, lösenordet umami. Dokumentationen ber dig att byta lösenordet vid din första inloggning.
admin och umami.Förvara TWO_FACTOR_ENCRYPTION_KEY tillsammans med dina säkerhetskopior: dokumentationen varnar för att om nyckeln går förlorad eller ändras blir de lagrade hemligheterna oläsliga, och varje användare måste då registrera sin tvåfaktorsautentisering på nytt.
<head> på dina sidor och besök sedan din webbplats: data visas i instrumentpanelen direkt.<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>
next/script i stället för en vanlig tagg <script>.data-domains begränsar spårningen till dina produktionsdomäner, vilket håller dina testmiljöer utanför statistiken.localStorage.setItem('umami.disabled', 1).Vissa annonsblockerare blockerar allt som liknar statistik. Självhostad serveras Umami redan från din egen domän, och två variabler går längre: TRACKER_SCRIPT_NAME ger skriptet ett annat namn än script.js, och COLLECT_API_ENDPOINT byter namn på insamlingens slutpunkt, i stället för /api/send. Skriptet anropar då den nya slutpunkten av sig självt; bara källan i spårningskoden ändras på dina sidor.
TRACKER_SCRIPT_NAME: "stats.js"
COLLECT_API_ENDPOINT: "/api/collect"
Dessa miljövariabler läggs i tjänsten umami i compose.yaml, och sedan skapar docker compose up -d om containern så att de börjar gälla:
| Variabel | Vad den gör | Värde |
|---|---|---|
DISABLE_TELEMETRY | Stänger av den anonyma telemetri som Umami skickar till projektet för att förbättra applikationen | 1 |
PRIVATE_MODE | Stänger av alla externa nätverksanrop, inklusive webbplatsikonerna, som hämtas från DuckDuckGo som standard | 1 |
DISABLE_UPDATES | Stänger av sökningen efter nya versioner | 1 |
IGNORE_IP | Undantar IP-adresser och CIDR-intervall från insamlingen, som dina kontors | En lista åtskild med kommatecken |
SALT_ROTATION | Anger hur ofta saltet bakom sessions-ID byts | month som standard |
REDIS_URL | Lägger till en Redis-cache, som dokumentationen rekommenderar för webbplatser med hög trafik eller flera instanser | Din Redis-adress |
MCP_ENABLED | Öppnar slutpunkten /mcp: din AI-assistent läser din statistik med enbart läsåtkomst, med en API-nyckel som skapas under Settings, API keys | 1 |
Allt som Umami sparar finns i dess PostgreSQL-databas: konton, webbplatser, team och statistik. Exportera den varje dag och strax före varje uppdatering: självhostade sparas dessa data utan tidsgräns. Bredvid databasen innehåller filen .env de hemligheter som gör den användbar:
| Del | Vad den innehåller | Att säkerhetskopiera |
|---|---|---|
| PostgreSQL-databasen | Konton, webbplatser, team, rapporter och all statistik | Obligatoriskt, med pg_dump |
.env | Databasens lösenord, APP_SECRET och nyckeln för tvåfaktorsautentisering | Obligatoriskt, krypterad |
compose.yaml | Din instans konfiguration | Rekommenderas |
pg_dump gör en konsekvent export medan databasen används. Det anpassade formatet, -Fc, är komprimerat och återställs med pg_restore:
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump
Schemalägg kommandot på servern minst en gång om dagen, gallra bland exporterna, som hopar sig, och skicka en kopia till annat håll. Lagda på serverns disk ingår de här exporterna också i dess nattliga säkerhetskopior.
docker compose stop umami.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
Upprepa övningen då och då, på en kopia: så kontrollerar du att en säkerhetskopia fungerar.
Dokumentationen anger två kommandon, från mappen med compose.yaml. Databasen ligger kvar i sin volym:
docker compose pull
docker compose up --force-recreate -d
Vid omstarten tillämpar containern själv schemamigreringarna. Version 3.4.0, från den 17 september 2026, innehöll två, för anteckningar och API-nycklar; version 3.4.1, från den 23 oktober 2026, innehåller ingen. Efter en större uppgradering, som övergången till version 3, föreslår dokumentationen att köra ANALYZE i PostgreSQL så att instrumentpanelerna får tillbaka sin hastighet:
docker compose exec db psql -U umami -d umami -c "ANALYZE;"
postgres:15-alpine. Att byta till en ny huvudversion av PostgreSQL kräver en export och en återställning, eller pg_upgrade.Att självhosta innebär att sköta servern utöver applikationen. På en Managed VPS tar våra team hand om servern och följer din instans proaktivt; Umami förblir din programvara, med sina inställningar och sina data.
| Område | Våra team | Du |
|---|---|---|
| Servern | Uppdateringar av system och säkerhet, ingrepp på servern inräknade | Tidpunkten som passar din verksamhet |
| Övervakningen | Servern följs dygnet runt, alla dagar, med ingrepp utan att vänta på ditt samtal | Läsningen av din instans loggar |
| Umami | Proaktiv uppföljning: fel, långsamma svarstider och diskutrymme upptäcks, med rekommenderad rättelse | Installationen, uppdateringarna och inställningarna, som du genomför själv eller med din AI-assistent |
| Webbplatserna och statistiken | Servern som bär dem, övervakad och säkerhetskopierad | Kontona, de följda webbplatserna, spårningsskriptet och hur länge data sparas |
| Säkerhetskopiorna | Varje natt, krypterade och förvarade utanför maskinen; återställning ingår | Umamis egna exporter och begäran om återställning, när du behöver den |
| Migreringen | Din nuvarande server migreras kostnadsfritt | Tidpunkten för bytet |
Om du föredrar att våra team ingriper i själva applikationen faktureras den tjänsten per timme eller som fast pris, med en offert som lämnas före ingreppet.
Med en Managed VPS från Simafri håller våra team servern för din Umami-instans uppdaterad, övervakar den dag och natt och griper in utan att vänta på ditt samtal; de följer också din instans proaktivt och rekommenderar de rättelser som är till nytta, som du genomför själv eller med din AI-assistent. Säkerhetskopiorna krypteras varje natt och förvaras utanför maskinen, återställningen ingår, och migreringen av din nuvarande server är kostnadsfri.
Ja. Umami är licensierat under MIT-licensen: du kan använda, ändra och vidaredistribuera det i ditt företag utan att köpa någon licens, så länge du behåller dess upphovsrättsmeddelande. Kvar blir kostnaden för servern som kör det.
Nej. Projektets FAQ anger att Umamis webbspårning inte använder kakor. Om din webbplats behöver ett meddelande om kakor beror på de andra tjänster du använder där och de krav som gäller.
Inte sedan version 3: Umami stöder PostgreSQL, minst version 12.14. En instans i version 2 på MySQL flyttar först sina data till PostgreSQL med projektets migreringsguide och uppgraderar sedan till version 3.
Utgå från projektets docker-compose.yml, som kör Umami och PostgreSQL, med slumpmässiga hemligheter i en fil .env och porten publicerad på 127.0.0.1. Kör docker compose up -d och sätt sedan en omvänd proxy med HTTPS framför, på en underdomän.
Vid installationen skapar Umami ett konto admin med lösenordet umami. Byt det vid din första inloggning, under Settings och sedan Profile, och aktivera tvåfaktorsautentisering på fliken Security när TWO_FACTOR_ENCRYPTION_KEY är satt.
På en självhostad instans ger TRACKER_SCRIPT_NAME skriptet ett annat namn än script.js, och COLLECT_API_ENDPOINT byter namn på insamlingens slutpunkt /api/send. Ändra sedan källan i spårningskoden på dina sidor.
Exportera PostgreSQL-databasen varje dag med pg_dump, från databasens container, och förvara filen .env separat, eftersom den innehåller APP_SECRET och nyckeln för tvåfaktorsautentisering. Återställ med pg_restore, och testa återställningen regelbundet.
En Managed VPS täcker servern: system, säkerhet, övervakning och säkerhetskopior. Våra team följer också din instans proaktivt och rekommenderar de rättelser som är till nytta, som du genomför själv. Ett ingrepp i själva applikationen faktureras per timme eller som fast pris.
Simafri
Låt oss prata om din webbplats
Berätta om ditt projekt med några ord: vi återkommer snabbt.
Tack! Din förfrågan har skickats. Vi återkommer till dig inom kort.
Föredrar du e-post? Skriv till oss på support@simafri.com.