Hosting Umami na Managed VPS: Państwa statystyki witryn na Państwa serwerze

Hosting Umami na Managed VPS oznacza, że statystyki Państwa witryn pozostają na maszynie, która należy do Państwa, a nasze zespoły dbają o jej aktualność i nadzorują ją dniem i nocą. Umami to wolne oprogramowanie na licencji MIT, które mierzy ruch bez plików cookie. Ten poradnik podąża za jego oficjalną dokumentacją: instalacja przez Docker Compose i PostgreSQL, HTTPS, pierwsze logowanie, skrypt śledzący, co projekt mówi o danych osobowych, przydatne ustawienia, kopie zapasowe i aktualizacje.

Simon Vasconcelos Lee Autor: Opublikowano 15 listopada 2026Czas czytania: 12 minut

Wszystkie poradniki

W skrócie

  1. Licencja MIT pozwala swobodnie używać, modyfikować i rozpowszechniać Umami, w pracy czy gdziekolwiek indziej, pod warunkiem zachowania informacji o prawach autorskich.
  2. Proszę zainstalować go przez Docker Compose: plik projektu uruchamia Umami i jego bazę PostgreSQL, jedyną obsługiwaną bazę od wersji 3.
  3. Proszę wygenerować losowo APP_SECRET i TWO_FACTOR_ENCRYPTION_KEY, udostępnić Umami przez HTTPS pod własną subdomeną, a następnie od razu zmienić hasło konta admin.
  4. Proszę dodać swoją witrynę, a potem wkleić jej skrypt śledzący do sekcji <head> swoich stron: skrypt nie używa plików cookie.
  5. Bazę proszę zrzucać codziennie poleceniem pg_dump, plik .env przechowywać w bezpiecznym miejscu, a aktualizować poleceniem docker compose pull.

Co robi Umami

Umami to otwartoźródłowa platforma analityki internetowej i produktowej. Dokumentacja opisuje narzędzie, które łączy ruch, kampanie, zachowanie odwiedzających, konwersje, retencję i przychody, od pierwszej wizyty po wyniki ważne dla Państwa działalności. Jest napisany w TypeScripcie na Next.js, a jego obraz Docker działa na koncie bez uprawnień administratora.

Jedna instancja śledzi kilka witryn: każda otrzymuje własny identyfikator i skrypt śledzący, a współpracownicy odnajdują się w niej dzięki kontom i zespołom.

Na co pozwala licencja MIT

Umami jest udostępniany na licencji MIT, w imieniu Umami Software, Inc. Przyznaje ona bezpłatnie prawo do używania, kopiowania, modyfikowania, łączenia, publikowania, rozpowszechniania, sublicencjonowania i sprzedawania kopii oprogramowania. Mogą więc Państwo uruchomić go dla swojej firmy i dla witryn swoich klientów, bez zakupu licencji.

Jej jedyny warunek: informacja o prawach autorskich i informacja o zezwoleniu towarzyszą wszystkim kopiom lub istotnym częściom oprogramowania. Jak każda licencja MIT, dostarcza ona oprogramowanie „w stanie, w jakim jest”, bez gwarancji.

Pliki cookie i dane osobowe: co mówi projekt

Dokumentacja przedstawia Umami jako analitykę bez plików cookie, bez śledzenia między witrynami i bez automatycznego zbierania danych osobowych. Hostowany samodzielnie, utrzymuje Państwa statystyki na Państwa własnym serwerze: to Państwo decydują, gdzie się znajdują i jak długo są przechowywane.

PytanieCo mówi projektŹródło
Pliki cookieSkrypt śledzący nie używa plików cookie; to, czy Państwa witryna potrzebuje informacji o plikach cookie, zależy od innych używanych usług i obowiązujących wymogówFAQ
Zbierane daneOdsłony, adresy stron odsyłających, przeglądarki, systemy operacyjne, typy urządzeń i przybliżona lokalizacjaFAQ
Adres IPTabela sesji nie ma kolumny na adres IP; identyfikator sesji to skrót obliczony z witryny, adresu, przeglądarki i soli, która domyślnie zmienia się co miesiącSchemat i kod, wersja 3.4.1
Okres przechowywaniaPrzy samodzielnym hostingu dane są przechowywane, dopóki ich Państwo nie usunąFAQ
RODOUmami zaprojektowano z myślą o prywatności, a zgodność zależy od tego, jak go Państwo skonfigurują i jak będą go używaćFAQ
Dane, które Państwo wysyłająZa identyfikator odwiedzającego lub właściwości zdarzeń, które zdecydują się Państwo wysyłać, odpowiadają PaństwoWprowadzenie

Trzy ustawienia skryptu śledzącego idą dalej, jeśli Państwo sobie tego życzą: data-exclude-search usuwa parametry wyszukiwania z zapisywanych adresów, data-exclude-hash usuwa fragment po krzyżyku, a data-do-not-track wyłącza śledzenie w przeglądarkach, które udostępniają preferencję Do Not Track. Dokumentacja zaznacza, że to ostatnie ustawienie samo w sobie nie jest pełnym rozwiązaniem do zarządzania zgodami.

Jeśli identyfikują Państwo zalogowanych odwiedzających przez data-distinct-id lub umami.identify(), dokumentacja zaleca wewnętrzny identyfikator użytkownika lub skrót zamiast adresu e-mail: wartość tę można odczytać w kodzie HTML strony.

Instalacja przez Docker Compose i PostgreSQL

Repozytorium dostarcza docker-compose.yml, który uruchamia Umami i jego bazę PostgreSQL. Od wersji 3 PostgreSQL jest jedyną obsługiwaną bazą, co najmniej w wersji 12.14, a dokumentacja zaleca ustawienie w niej strefy czasowej UTC. Na serwerze z zainstalowanym Dockerem proszę utworzyć katalog i zacząć od sekretów, generowanych losowo przez openssl, jak proponuje dokumentacja:

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

Następnie proszę umieścić obok ten compose.yaml. Podąża on za plikiem projektu w wersji 3.4.1, z dwiema zmianami: sekrety pochodzą z pliku .env, a port jest publikowany wyłącznie 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:
Terminal
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat

Dokumentacja instalacji nie podaje wymagań dotyczących pamięci ani procesora. Rozmiar zależy od ruchu śledzonych witryn i od ilości przechowywanych danych. Na Managed VPS wystarczy opisać nam swoje zastosowanie, a polecimy odpowiedni rozmiar.

HTTPS: odwrotne proxy

Umami nasłuchuje przez HTTP na porcie 3000, a dokumentacja proponuje udostępnić go za Państwa serwerem WWW, przez odwrotne proxy. Proszę nadać mu własną subdomenę, taką jak stats.example.com, wskazującą na serwer rekordami A i AAAA. Udostępnienie Umami pod ścieżką wymaga BASE_PATH, zmiennej odczytywanej podczas budowania aplikacji: przy opublikowanym obrazie subdomena jest drogą najprostszą.

Proxy musi też przekazywać adres odwiedzającego. Umami odczytuje go z otrzymanych nagłówków, w tym X-Real-IP i X-Forwarded-For: służy mu on do rozróżniania odwiedzających i ustalania ich kraju. Jeśli Państwa proxy używa innego nagłówka, wskazuje go CLIENT_IP_HEADER.

Z Caddy

Caddy sam uzyskuje certyfikat Let’s Encrypt i włącza HTTPS. Jego dyrektywa reverse_proxy domyślnie ustawia X-Forwarded-For: te trzy wiersze w zupełności wystarczą.

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

Z Nginx i Certbotem

Ten blok podąża za przykładem Nginx z dokumentacji Umami i nasłuchuje na porcie 80, aby Certbot mógł zainstalować HTTPS:

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 następnie instaluje certyfikat i zajmuje się jego odnawianiem:

Terminal
sudo certbot --nginx

Pierwsze logowanie: konto administratora i uwierzytelnianie dwuskładnikowe

Tworząc swoją bazę, Umami zakłada konto administratora: nazwa użytkownika admin, hasło umami. Dokumentacja prosi o zmianę tego hasła przy pierwszym logowaniu.

  1. Proszę otworzyć swój adres HTTPS i zalogować się danymi admin i umami.
  2. Proszę otworzyć Settings przyciskiem profilu na pasku bocznym, następnie Profile, i kliknąć Change password.
  3. W zakładce Security proszę włączyć uwierzytelnianie dwuskładnikowe: zeskanować kod QR aplikacją uwierzytelniającą, wpisać sześciocyfrowy kod, a następnie zachować w bezpiecznym miejscu dziesięć kodów zapasowych, wyświetlanych tylko raz.

Proszę przechowywać TWO_FACTOR_ENCRYPTION_KEY razem z kopiami zapasowymi: dokumentacja ostrzega, że utrata lub zmiana tego klucza sprawia, że zapisane sekrety stają się nieczytelne, a każdy użytkownik musi wtedy ponownie skonfigurować uwierzytelnianie dwuskładnikowe.

Dodanie witryny i jej skryptu śledzącego

  1. W Websites proszę kliknąć Add website.
  2. Proszę nadać witrynie nazwę, a następnie podać jej domenę: Umami używa jej, by usuwać Państwa własne strony z listy stron odsyłających.
  3. Proszę otworzyć Edit przy tej witrynie i skopiować kod z sekcji Tracking code.
  4. Proszę wkleić go do sekcji <head> swoich stron, a następnie odwiedzić swoją witrynę: dane od razu pojawiają się w panelu.
Kod śledzący, w sekcji head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Własna nazwa skryptu

Niektóre programy blokujące reklamy blokują wszystko, co przypomina analitykę. Przy samodzielnym hostingu Umami jest już udostępniany z Państwa własnej domeny, a dwie zmienne idą dalej: TRACKER_SCRIPT_NAME nadaje skryptowi inną nazwę niż script.js, a COLLECT_API_ENDPOINT zmienia nazwę punktu zbierania danych, zamiast /api/send. Skrypt sam wywołuje wtedy nowy punkt; na Państwa stronach zmienia się jedynie źródło kodu śledzącego.

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

Przydatne ustawienia

Te zmienne środowiskowe trafiają do usługi umami w compose.yaml, a następnie docker compose up -d tworzy kontener na nowo, aby je uwzględnił:

ZmiennaCo dajeWartość
DISABLE_TELEMETRYWyłącza anonimową telemetrię, którą Umami wysyła do projektu, aby ulepszać aplikację1
PRIVATE_MODEWyłącza wszystkie zewnętrzne połączenia sieciowe, w tym ikony witryn, domyślnie pobierane z DuckDuckGo1
DISABLE_UPDATESWyłącza sprawdzanie nowych wersji1
IGNORE_IPWyklucza adresy IP i zakresy CIDR ze zbierania danych, na przykład adresy Państwa biurLista rozdzielona przecinkami
SALT_ROTATIONUstala, jak często zmienia się sól, na której opierają się identyfikatory sesjiDomyślnie month
REDIS_URLDodaje pamięć podręczną Redis, którą dokumentacja zaleca dla witryn o dużym ruchu lub kilku instancjiAdres Państwa serwera Redis
MCP_ENABLEDOtwiera punkt /mcp: Państwa asystent AI odczytuje statystyki w trybie tylko do odczytu, kluczem API utworzonym w Settings, API keys1

Kopie zapasowe

Wszystko, co przechowuje Umami, znajduje się w jego bazie PostgreSQL: konta, witryny, zespoły i statystyki. Proszę zrzucać ją codziennie i tuż przed każdą aktualizacją: przy samodzielnym hostingu dane te są przechowywane bez limitu czasu. Obok bazy plik .env zawiera sekrety, bez których nie da się z niej korzystać:

ElementCo przechowujeDo skopiowania
Baza PostgreSQLKonta, witryny, zespoły, raporty i wszystkie statystykiObowiązkowo, przez pg_dump
.envHasło do bazy, APP_SECRET i klucz uwierzytelniania dwuskładnikowegoObowiązkowo, w postaci szyfrowanej
compose.yamlKonfigurację Państwa instancjiZalecane

Zrzut bazy w trakcie jej działania

pg_dump wykonuje spójny zrzut, gdy baza jest w użyciu. Format niestandardowy, -Fc, jest skompresowany i przywraca się go przez pg_restore:

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

Proszę zaplanować to polecenie na serwerze co najmniej raz dziennie, porządkować zrzuty, które się gromadzą, i wysyłać kopię w inne miejsce. Przechowywane na dysku serwera, zrzuty te trafiają także do jego nocnych kopii zapasowych.

Przywracanie

  1. Proszę zatrzymać Umami, zostawiając działającą bazę: docker compose stop umami.
  2. Proszę przywrócić zrzut do bazy, zastępując istniejące obiekty.
  3. Proszę ponownie uruchomić Umami, a następnie sprawdzić, czy witryny i ich statystyki są na miejscu.
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

Proszę powtarzać to ćwiczenie od czasu do czasu, na kopii: w ten sposób sprawdzają Państwo, że kopia zapasowa działa.

Aktualizacje

Dokumentacja podaje dwa polecenia, wydawane z katalogu z compose.yaml. Baza pozostaje w swoim woluminie:

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

Przy ponownym uruchomieniu kontener sam stosuje migracje schematu. Wersja 3.4.0 z 17 września 2026 roku zawierała dwie, dla adnotacji i kluczy API; wersja 3.4.1 z 23 października 2026 roku nie zawiera żadnej. Po dużej aktualizacji, takiej jak przejście na wersję 3, dokumentacja proponuje uruchomić ANALYZE w PostgreSQL, aby panele odzyskały szybkość:

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

Kto za co odpowiada na Managed VPS

Samodzielny hosting wymaga prowadzenia serwera, oprócz samej aplikacji. Na Managed VPS nasze zespoły przejmują serwer i proaktywnie czuwają nad Państwa instancją; Umami pozostaje Państwa oprogramowaniem, z jego ustawieniami i danymi.

TematNasze zespołyPaństwo
SerwerAktualizacje systemu i zabezpieczeń, w tym interwencje na serwerzeMoment dogodny dla Państwa działalności
NadzórSerwer pod opieką całą dobę, 7 dni w tygodniu, z interwencją bez czekania na Państwa telefonCzytanie dzienników Państwa instancji
UmamiProaktywna opieka: wychwytujemy błędy, spowolnienia i brak miejsca na dysku oraz polecamy poprawkęInstalacja, aktualizacje i ustawienia, które wdrażają Państwo sami albo Państwa asystent AI
Witryny i statystykiSerwer, który je utrzymuje, nadzorowany i objęty kopiami zapasowymiKonta, śledzone witryny, skrypt śledzący i okres przechowywania danych
Kopie zapasoweCo noc, szyfrowane i przechowywane poza maszyną; przywracanie w cenieZrzuty właściwe dla Umami oraz zgłoszenie prośby o przywrócenie, gdy będzie potrzebne
MigracjaMigracja Państwa obecnego serwera, bezpłatnaMoment przełączenia

Jeśli wolą Państwo, aby nasze zespoły interweniowały w samej aplikacji, usługa ta jest rozliczana godzinowo lub ryczałtowo, z wyceną przekazaną przed interwencją.

Umami na serwerze prowadzonym za Państwa

Z Managed VPS od Simafri nasze zespoły utrzymują serwer Państwa instancji Umami w aktualności, nadzorują go dniem i nocą i interweniują bez czekania na Państwa telefon; proaktywnie czuwają także nad Państwa instancją i polecają przydatne poprawki, które wdrażają Państwo sami albo Państwa asystent AI. Kopie zapasowe są szyfrowane co noc i przechowywane poza maszyną, ich przywracanie jest w cenie, a migracja obecnego serwera jest bezpłatna.

Poznaj Managed VPS

Częste pytania

Czy Umami jest bezpłatny dla firmy?

Tak. Umami jest udostępniany na licencji MIT: mogą Państwo używać go, modyfikować i rozpowszechniać w firmie bez zakupu licencji, pod warunkiem zachowania informacji o prawach autorskich. Pozostaje koszt serwera, na którym działa.

Czy Umami używa plików cookie?

Nie. FAQ projektu podaje, że skrypt śledzący Umami nie używa plików cookie. To, czy Państwa witryna potrzebuje informacji o plikach cookie, zależy od innych używanych na niej usług i obowiązujących wymogów.

Czy Umami działa z MySQL?

Od wersji 3 już nie: Umami obsługuje PostgreSQL, co najmniej w wersji 12.14. Instancja w wersji 2 na MySQL najpierw przenosi swoje dane do PostgreSQL zgodnie z przewodnikiem migracji projektu, a potem aktualizuje się do wersji 3.

Jak zainstalować Umami przez Docker Compose?

Proszę wyjść od docker-compose.yml projektu, który uruchamia Umami i PostgreSQL, z losowymi sekretami w pliku .env i portem opublikowanym na 127.0.0.1. Proszę uruchomić docker compose up -d, a potem postawić przed nim odwrotne proxy z HTTPS, na subdomenie.

Jakie są domyślne dane logowania Umami?

Podczas instalacji Umami tworzy konto admin z hasłem umami. Proszę zmienić je przy pierwszym logowaniu, w Settings, a następnie Profile, i włączyć uwierzytelnianie dwuskładnikowe w zakładce Security, gdy TWO_FACTOR_ENCRYPTION_KEY jest już ustawiony.

Jak zmienić nazwę skryptu śledzącego Umami?

W instancji hostowanej samodzielnie TRACKER_SCRIPT_NAME nadaje skryptowi inną nazwę niż script.js, a COLLECT_API_ENDPOINT zmienia nazwę punktu zbierania danych /api/send. Następnie proszę zmienić źródło kodu śledzącego na swoich stronach.

Jak wykonać kopię zapasową Umami?

Proszę codziennie zrzucać bazę PostgreSQL poleceniem pg_dump, z kontenera bazy, i osobno przechowywać plik .env, ponieważ zawiera APP_SECRET i klucz uwierzytelniania dwuskładnikowego. Przywraca się przez pg_restore, a przywracanie proszę regularnie testować.

Czy Managed VPS obejmuje Umami?

Managed VPS obejmuje serwer: system, bezpieczeństwo, nadzór i kopie zapasowe. Nasze zespoły proaktywnie czuwają też nad Państwa instancją i polecają przydatne poprawki, które wdrażają Państwo sami. Interwencja w aplikacji jest rozliczana godzinowo lub ryczałtowo.

Źródła i oficjalna dokumentacja

Skontaktuj się z nami