Hostovat Umami na Managed VPS: vaše webová analytika na vašem serveru

Hostovat Umami na Managed VPS znamená mít statistiky svých webů na vlastním stroji, který naše týmy udržují aktuální a ve dne i v noci hlídají. Umami je svobodný software pod licencí MIT, který měří návštěvnost bez cookies. Tento průvodce sleduje jeho oficiální dokumentaci: instalaci pomocí Docker Compose a PostgreSQL, HTTPS, první přihlášení, měřicí skript, co projekt říká o osobních údajích, užitečná nastavení, zálohy a aktualizace.

Simon Vasconcelos Lee Autor: Publikováno 15. listopadu 2026Doba čtení: 12 minut

Všichni průvodci

To nejdůležitější

  1. Licence MIT dovoluje Umami volně používat, upravovat a dále šířit, ve firmě i jinde, pokud zachováte jeho upozornění o autorských právech.
  2. Nainstalujte ho pomocí Docker Compose: soubor projektu spouští Umami a jeho databázi PostgreSQL, od verze 3 jedinou podporovanou databázi.
  3. Vygenerujte náhodně APP_SECRET a TWO_FACTOR_ENCRYPTION_KEY, provozujte Umami přes HTTPS na vlastní subdoméně a hned změňte heslo účtu admin.
  4. Přidejte svůj web a vložte jeho měřicí skript do <head> svých stránek: měřicí skript cookies nepoužívá.
  5. Každý den exportujte databázi pomocí pg_dump, uchovávejte soubor .env na bezpečném místě a aktualizujte pomocí docker compose pull.

Co Umami umí

Umami je otevřená platforma pro analytiku webů a produktů. Jeho dokumentace popisuje nástroj, který spojuje návštěvnost, kampaně, chování návštěvníků, konverze, retenci a tržby, od první návštěvy po výsledky, na kterých vaší firmě záleží. Je napsaný v TypeScriptu nad Next.js a jeho obraz Docker běží pod účtem bez zvláštních práv.

Jedna instance sleduje několik webů: každý dostane vlastní ID a měřicí skript a vaši kolegové se v nich vyznají díky účtům a týmům.

Co dovoluje licence MIT

Umami je vydáván pod licencí MIT, jménem Umami Software, Inc. Ta bezplatně uděluje právo software používat, kopírovat, upravovat, slučovat, zveřejňovat, šířit, sublicencovat a prodávat jeho kopie. Můžete ho tedy provozovat pro svou firmu i pro weby svých klientů, aniž byste kupovali licenci.

Její jedinou podmínkou je, že upozornění o autorských právech a upozornění o oprávnění doprovázejí všechny kopie nebo podstatné části softwaru. Jako každá licence MIT poskytuje software „tak, jak je“, bez záruky.

Cookies a osobní údaje: co říká projekt

Dokumentace představuje Umami jako analytiku bez cookies, bez sledování napříč weby a bez automatického sběru osobních údajů. Při vlastním hostingu zůstávají vaše statistiky na vašem vlastním serveru: rozhodujete, kde budou a jak dlouho se uchovají.

OtázkaCo říká projektZdroj
CookiesWebový měřicí skript cookies nepoužívá; zda váš web potřebuje lištu o cookies, závisí na ostatních službách, které používáte, a na požadavcích, které se na vás vztahujíFAQ
Sbíraná dataZobrazení stránek, adresy odkazujících stránek, prohlížeče, operační systémy, typy zařízení a přibližná polohaFAQ
Adresa IPTabulka relací nemá sloupec pro adresu IP; ID relace je haš webu, adresy, prohlížeče a soli, která se ve výchozím nastavení mění každý měsícSchéma a kód, verze 3.4.1
Doba uchováníPři vlastním hostingu se data uchovávají, dokud je nesmažeteFAQ
GDPRUmami je navržen s ohledem na soukromí a soulad závisí na tom, jak ho nastavíte a používáteFAQ
Data, která posíláteZa ID návštěvníka nebo vlastnosti událostí, které se rozhodnete posílat, odpovídáte vyÚvod

Tři nastavení měřicího skriptu jdou podle přání dál: data-exclude-search odstraní z ukládaných adres parametry vyhledávání, data-exclude-hash odstraní kotvu a data-do-not-track vypne měření u prohlížečů, které zveřejňují preferenci Do Not Track. Dokumentace poznamenává, že toto poslední nastavení samo o sobě není úplným řešením správy souhlasu.

Pokud přihlášené návštěvníky identifikujete pomocí data-distinct-id nebo umami.identify(), dokumentace doporučuje interní ID uživatele nebo haš místo e-mailové adresy: hodnotu lze přečíst v HTML stránky.

Instalace pomocí Docker Compose a PostgreSQL

Repozitář dodává docker-compose.yml, který spouští Umami a jeho databázi PostgreSQL. Od verze 3 je PostgreSQL jedinou podporovanou databází, minimálně ve verzi 12.14, a dokumentace doporučuje nastavit ji na časové pásmo UTC. Na serveru s nainstalovaným Dockerem vytvořte složku a začněte jejími tajnými údaji, náhodně vygenerovanými pomocí openssl, jak navrhuje dokumentace:

Terminál
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

Pak vedle něj umístěte tento compose.yaml. Vychází ze souboru projektu ve verzi 3.4.1, se dvěma změnami: tajné údaje pocházejí ze souboru .env a port je publikovaný jen na 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:
Terminál
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat

Instalační dokumentace neuvádí žádný údaj o paměti ani procesoru. Velikost závisí na návštěvnosti sledovaných webů a na objemu dat, která uchováváte. Na Managed VPS nám popište své využití a doporučíme vám vhodnou velikost.

HTTPS: reverzní proxy

Umami naslouchá přes HTTP na portu 3000 a dokumentace navrhuje provozovat ho za vaším webovým serverem, přes reverzní proxy. Dejte mu vlastní subdoménu, například stats.example.com, která na server ukazuje záznamy A a AAAA. Provoz Umami pod cestou vede přes BASE_PATH, proměnnou čtenou při sestavení aplikace: se zveřejněným obrazem je subdoména přímou cestou.

Proxy musí také předávat adresu návštěvníka. Umami ji čte z hlaviček, které dostává, mimo jiné z X-Real-IP a X-Forwarded-For: slouží mu k rozlišení návštěvníků a k určení jejich země. Pokud vaše proxy používá jinou hlavičku, pojmenuje ji CLIENT_IP_HEADER.

S Caddy

Caddy získá certifikát Let’s Encrypt a zapne HTTPS samo. Jeho direktiva reverse_proxy ve výchozím nastavení nastavuje X-Forwarded-For: tyto tři řádky stačí.

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

S Nginx a Certbotem

Tento blok vychází z příkladu Nginx v dokumentaci Umami a naslouchá na portu 80, aby HTTPS nasadil Certbot:

Blok Nginx
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 pak nainstaluje certifikát a postará se o jeho obnovu:

Terminál
sudo certbot --nginx

První přihlášení: účet admin a dvoufázové ověření

Při vytváření databáze otevře Umami účet správce: uživatelské jméno admin, heslo umami. Dokumentace žádá toto heslo změnit při prvním přihlášení.

  1. Otevřete svou adresu HTTPS a přihlaste se pomocí admin a umami.
  2. Otevřete Settings tlačítkem profilu v postranním panelu, pak Profile a klikněte na Change password.
  3. Na kartě Security zapněte dvoufázové ověření: naskenujte QR kód svou ověřovací aplikací, zadejte šestimístný kód a pak uložte deset záložních kódů na bezpečné místo, protože se zobrazí jen jednou.

Uchovávejte TWO_FACTOR_ENCRYPTION_KEY se svými zálohami: dokumentace upozorňuje, že ztráta nebo změna tohoto klíče učiní uložené tajné údaje nečitelnými a každý uživatel si pak musí dvoufázové ověření nastavit znovu.

Přidání webu a jeho měřicího skriptu

  1. V Websites klikněte na Add website.
  2. Zadejte název webu a pak jeho doménu: Umami ji používá k odfiltrování vašich vlastních stránek ze seznamu odkazujících webů.
  3. U tohoto webu otevřete Edit a zkopírujte kód z části Tracking code.
  4. Vložte ho do <head> svých stránek a pak navštivte svůj web: data se v přehledu objeví okamžitě.
Měřicí kód, v head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Vlastní název skriptu

Některé blokátory reklam blokují vše, co připomíná analytiku. Při vlastním hostingu se Umami už nabízí z vaší vlastní domény a dvě proměnné jdou dál: TRACKER_SCRIPT_NAME dá skriptu jiný název než script.js a COLLECT_API_ENDPOINT přejmenuje sběrný koncový bod místo /api/send. Skript pak nový koncový bod volá sám; na vašich stránkách se mění jen zdroj měřicího kódu.

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

Užitečná nastavení

Tyto proměnné prostředí patří do služby umami v compose.yaml a docker compose up -d pak kontejner znovu vytvoří, aby je převzal:

ProměnnáCo děláHodnota
DISABLE_TELEMETRYVypne anonymní telemetrii, kterou Umami posílá projektu pro zlepšování aplikace1
PRIVATE_MODEVypne všechna externí síťová volání, včetně ikon webů, ve výchozím nastavení načítaných z DuckDuckGo1
DISABLE_UPDATESVypne kontrolu nových verzí1
IGNORE_IPVyloučí ze sběru dat adresy IP a rozsahy CIDR, například adresy vašich kanceláříSeznam oddělený čárkami
SALT_ROTATIONUrčuje, jak často se mění sůl, ze které vycházejí ID relacíVe výchozím nastavení month
REDIS_URLPřidá mezipaměť Redis, kterou dokumentace doporučuje pro weby s vysokou návštěvností nebo pro více instancíVaše adresa Redis
MCP_ENABLEDOtevře koncový bod /mcp: váš AI asistent čte vaše statistiky jen pro čtení, s klíčem API vytvořeným v Settings, API keys1

Zálohy

Vše, co Umami uchovává, je v jeho databázi PostgreSQL: účty, weby, týmy a statistiky. Exportujte ji každý den a těsně před každou aktualizací: při vlastním hostingu se tato data uchovávají bez časového omezení. Vedle databáze obsahuje soubor .env tajné údaje, díky kterým je použitelná:

PoložkaCo uchováváZálohovat
Databáze PostgreSQLÚčty, weby, týmy, přehledy a veškeré statistikyPovinně, pomocí pg_dump
.envHeslo k databázi, APP_SECRET a klíč dvoufázového ověřeníPovinně, šifrovaně
compose.yamlKonfiguraci vaší instanceDoporučeno

Export databáze za běhu

pg_dump vytvoří konzistentní export, i když se databáze používá. Vlastní formát, -Fc, je komprimovaný a obnovuje se pomocí pg_restore:

Terminál, ve složce se souborem compose.yaml
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump

Naplánujte tento příkaz na serveru alespoň jednou denně, exporty, které se hromadí, třiďte a kopii posílejte jinam. Uložené na disku serveru se tyto exporty dostanou i do jeho nočních záloh.

Obnova

  1. Zastavte Umami a databázi nechte běžet: docker compose stop umami.
  2. Obnovte export do databáze s nahrazením stávajících objektů.
  3. Spusťte Umami znovu a ověřte, že vaše weby a jejich statistiky jsou na místě.
Terminál
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

Toto cvičení čas od času zopakujte na kopii: tak ověříte, že záloha funguje.

Aktualizace

Dokumentace uvádí dva příkazy, ze složky se souborem compose.yaml. Databáze zůstává ve svém svazku:

Terminál
docker compose pull
docker compose up --force-recreate -d

Při restartu kontejner sám použije migrace schématu. Verze 3.4.0 ze 17. září 2026 jich přinesla dvě, pro anotace a klíče API; verze 3.4.1 z 23. října 2026 žádnou. Po velké aktualizaci, jako byl přechod na verzi 3, navrhuje dokumentace spustit v PostgreSQL ANALYZE, aby přehledy znovu získaly svou rychlost:

Terminál
docker compose exec db psql -U umami -d umami -c "ANALYZE;"

Kdo co dělá na Managed VPS

Vlastní hosting vyžaduje, abyste kromě aplikace udržovali i server. Na Managed VPS se serveru ujímají naše týmy a vaši instanci proaktivně sledují; Umami zůstává vaším softwarem, s jeho nastavením a daty.

TémaNaše týmyVy
ServerAktualizace systému a zabezpečení, včetně zásahů na serveruOkamžik, který vyhovuje vašemu provozu
DohledServer sledovaný 24 hodin denně, 7 dní v týdnu, se zásahem bez čekání na vaše voláníČtení protokolů vaší instance
UmamiProaktivní sledování: chyby, zpomalení a místo na disku zachycené, doporučená opravaJeho instalace, aktualizace a nastavení, které zapracujete vy nebo váš AI asistent
Weby a statistikyServer, který je nese, hlídaný a zálohovanýÚčty, sledované weby, měřicí skript a doba uchování dat
ZálohyKaždou noc, šifrované a uchovávané mimo stroj; obnova v ceněExporty vlastní Umami a žádost o obnovu, když ji potřebujete
MigraceVáš stávající server přenesen zdarmaOkamžik přepnutí

Pokud dáváte přednost tomu, aby naše týmy zasáhly přímo v aplikaci, tato služba se účtuje po hodinách nebo paušálem, s cenovou nabídkou sdělenou před zásahem.

Umami na serveru, o který se staráme za vás

S Managed VPS od Simafri udržují naše týmy server vaší instance Umami aktuální, hlídají ho ve dne i v noci a zasahují bez čekání na vaše volání; vaši instanci také proaktivně sledují a doporučí vám užitečné opravy, které zapracujete vy nebo váš AI asistent. Zálohy se každou noc šifrují a uchovávají mimo stroj, jejich obnova je v ceně a migrace vašeho stávajícího serveru je zdarma.

Objevit Managed VPS

Časté otázky

Je Umami pro firmu zdarma?

Ano. Umami je pod licencí MIT: můžete ho ve firmě používat, upravovat a dále šířit, aniž byste kupovali licenci, pokud zachováte jeho upozornění o autorských právech. Zbývají náklady na server, na kterém běží.

Používá Umami cookies?

Ne. FAQ projektu uvádí, že webový měřicí skript Umami cookies nepoužívá. Zda váš web potřebuje lištu o cookies, závisí na ostatních službách, které na něm používáte, a na požadavcích, které se na vás vztahují.

Funguje Umami s MySQL?

Od verze 3 ne: Umami podporuje PostgreSQL, minimálně ve verzi 12.14. Instance verze 2 na MySQL nejdřív přenese svá data na PostgreSQL podle průvodce migrací projektu a pak se aktualizuje na verzi 3.

Jak nainstalovat Umami pomocí Docker Compose?

Vyjděte ze souboru docker-compose.yml projektu, který spouští Umami a PostgreSQL, s náhodnými tajnými údaji v souboru .env a portem publikovaným na 127.0.0.1. Spusťte docker compose up -d a pak před něj umístěte reverzní proxy s HTTPS, na subdoméně.

Jaké jsou výchozí přihlašovací údaje Umami?

Při instalaci vytvoří Umami účet admin s heslem umami. Změňte ho při prvním přihlášení v Settings a pak Profile a zapněte dvoufázové ověření na kartě Security, jakmile je nastaven TWO_FACTOR_ENCRYPTION_KEY.

Jak přejmenovat měřicí skript Umami?

Na instanci ve vlastním hostingu dá TRACKER_SCRIPT_NAME skriptu jiný název než script.js a COLLECT_API_ENDPOINT přejmenuje sběrný koncový bod /api/send. Pak na svých stránkách změňte zdroj měřicího kódu.

Jak zálohovat Umami?

Každý den exportujte databázi PostgreSQL pomocí pg_dump z databázového kontejneru a soubor .env uchovávejte zvlášť, protože obsahuje APP_SECRET a klíč dvoufázového ověření. Obnovujte pomocí pg_restore a obnovu pravidelně zkoušejte.

Pokrývá Managed VPS i Umami?

Managed VPS pokrývá server: systém, zabezpečení, dohled a zálohy. Naše týmy také proaktivně sledují vaši instanci a doporučí vám užitečné opravy, které zapracujete vy. Zásah v samotné aplikaci se účtuje po hodinách nebo paušálem.

Zdroje a oficiální dokumentace

Kontaktujte nás