Găzduirea Umami pe un Managed VPS: statisticile web pe propriul server

Găzduirea Umami pe un Managed VPS înseamnă să păstrați statisticile site-urilor dumneavoastră pe o mașină a dumneavoastră, pe care echipele noastre o țin la zi și o supraveghează zi și noapte. Umami este un software liber sub licență MIT, care măsoară traficul fără cookie-uri. Acest ghid urmează documentația sa oficială: instalarea cu Docker Compose și PostgreSQL, HTTPS, prima conectare, scriptul de urmărire, ce spune proiectul despre datele personale, setările utile, backupurile și actualizările.

Simon Vasconcelos Lee Autor: Publicat la 15 noiembrie 2026Timp de citire: 12 minute

Toate ghidurile

Esențialul

  1. Licența MIT permite folosirea, modificarea și redistribuirea liberă a Umami, în firmă ca oriunde altundeva, cu condiția să păstrați mențiunea sa de copyright.
  2. Instalați-l cu Docker Compose: fișierul proiectului pornește Umami și baza sa de date PostgreSQL, singura suportată începând cu versiunea 3.
  3. Generați aleatoriu APP_SECRET și TWO_FACTOR_ENCRYPTION_KEY, serviți Umami în HTTPS pe propriul subdomeniu, apoi schimbați imediat parola contului admin.
  4. Adăugați site-ul, apoi lipiți scriptul său de urmărire în <head>-ul paginilor dumneavoastră: scriptul de urmărire nu folosește cookie-uri.
  5. Exportați zilnic baza de date cu pg_dump, păstrați fișierul .env într-un loc sigur și actualizați cu docker compose pull.

Ce face Umami

Umami este o platformă open source de statistici web și de produs. Documentația sa descrie un instrument care reunește traficul, campaniile, comportamentul vizitatorilor, conversiile, retenția și veniturile, de la prima vizită până la rezultatele care contează pentru afacerea dumneavoastră. Este scris în TypeScript pe Next.js, iar imaginea sa Docker rulează sub un cont fără privilegii.

O singură instanță urmărește mai multe site-uri: fiecare primește propriul ID și propriul script de urmărire, iar colegii dumneavoastră se orientează prin conturi și echipe.

Ce permite licența MIT

Umami este publicat sub licența MIT, în numele Umami Software, Inc. Ea acordă gratuit dreptul de a folosi, copia, modifica, fuziona, publica, distribui, sublicenția și vinde copii ale software-ului. Îl puteți deci rula pentru firma dumneavoastră și pentru site-urile clienților dumneavoastră, fără nicio licență de cumpărat.

Singura sa condiție: mențiunea de copyright și mențiunea de permisiune însoțesc toate copiile sau părțile substanțiale ale software-ului. Ca orice licență MIT, ea furnizează software-ul „ca atare” („as is”), fără garanție.

Cookie-urile și datele personale: ce spune proiectul

Documentația prezintă Umami ca un instrument de statistici fără cookie-uri, fără urmărire între site-uri și fără colectarea automată a datelor personale. Găzduit pe propriul server, el vă păstrează statisticile pe serverul dumneavoastră: decideți unde se află și cât timp rămân.

ÎntrebareCe spune proiectulSursă
Cookie-urileScriptul de urmărire web nu folosește cookie-uri; dacă site-ul dumneavoastră are nevoie de un banner de cookie-uri depinde de celelalte servicii pe care le folosiți și de cerințele care se aplicăFAQ
Datele colectateAfișări de pagini, URL-uri de proveniență, browsere, sisteme de operare, tipuri de dispozitive și localizarea aproximativăFAQ
Adresa IPTabelul sesiunilor nu are coloană pentru adresa IP; un ID de sesiune este un hash al site-ului, al adresei, al browserului și al unei sări (salt) care se schimbă implicit în fiecare lunăSchema și codul, versiunea 3.4.1
PăstrareaPe propriul server, datele sunt păstrate până le ștergețiFAQ
GDPRUmami este conceput cu grijă pentru confidențialitate, iar conformitatea depinde de modul în care îl configurați și îl folosițiFAQ
Datele pe care le trimitețiUn ID de vizitator sau proprietățile de eveniment pe care alegeți să le trimiteți sunt responsabilitatea dumneavoastrăIntroducere

Trei setări ale scriptului de urmărire merg mai departe, dacă doriți: data-exclude-search elimină parametrii de căutare din URL-urile înregistrate, data-exclude-hash elimină fragmentul (hash), iar data-do-not-track oprește urmărirea pentru browserele care exprimă preferința Do Not Track. Documentația notează că această ultimă setare nu este, singură, o soluție completă de gestionare a consimțământului.

Dacă identificați vizitatorii conectați cu data-distinct-id sau umami.identify(), documentația recomandă un ID intern de utilizator sau un hash, mai degrabă decât o adresă de e-mail: valoarea poate fi citită în HTML-ul paginii.

Instalarea cu Docker Compose și PostgreSQL

Depozitul livrează un docker-compose.yml care pornește Umami și baza sa de date PostgreSQL. Începând cu versiunea 3, PostgreSQL este singura bază suportată, cel puțin în versiunea 12.14, iar documentația recomandă să o setați pe fusul orar UTC. Pe un server unde Docker este instalat, creați un director și începeți cu secretele, generate aleatoriu cu openssl, așa cum sugerează documentația:

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

Puneți apoi alături acest compose.yaml. El preia fișierul proiectului din versiunea 3.4.1, cu două modificări: secretele vin din fișierul .env, iar portul este publicat doar pe 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

Documentația de instalare nu indică nicio cifră pentru memorie sau procesor. Dimensiunea depinde de traficul site-urilor urmărite și de volumul datelor pe care le păstrați. Pe un Managed VPS, descrieți-ne utilizarea dumneavoastră și vă recomandăm dimensiunea potrivită.

HTTPS: proxy-ul invers

Umami ascultă în HTTP pe portul 3000, iar documentația sugerează să îl serviți în spatele serverului dumneavoastră web, printr-un proxy invers. Dați-i propriul subdomeniu, precum stats.example.com, care indică spre server prin înregistrări A și AAAA. Servirea Umami pe o cale trece prin BASE_PATH, o variabilă citită la construirea aplicației: cu imaginea publicată, subdomeniul este calea directă.

Proxy-ul trebuie să transmită și adresa vizitatorului. Umami o citește din antetele pe care le primește, printre care X-Real-IP și X-Forwarded-For: o folosește pentru a deosebi vizitatorii și pentru a le localiza țara. Dacă proxy-ul dumneavoastră folosește alt antet, CLIENT_IP_HEADER îl numește.

Cu Caddy

Caddy obține certificatul Let’s Encrypt și activează singur HTTPS. Directiva sa reverse_proxy setează implicit X-Forwarded-For: aceste trei linii sunt suficiente.

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

Cu Nginx și Certbot

Acest bloc preia exemplul Nginx din documentația Umami, ascultând pe portul 80, pentru a lăsa Certbot să instaleze HTTPS:

Bloc 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 instalează apoi certificatul și se ocupă de reînnoirea lui:

Terminal
sudo certbot --nginx

Prima conectare: contul de administrator și autentificarea în doi pași

Când își creează baza de date, Umami deschide un cont de administrator: numele de utilizator admin, parola umami. Documentația cere să schimbați această parolă la prima conectare.

  1. Deschideți adresa dumneavoastră HTTPS și conectați-vă cu admin și umami.
  2. Deschideți Settings din butonul de profil din bara laterală, apoi Profile, și faceți clic pe Change password.
  3. În fila Security, activați autentificarea în doi pași: scanați codul QR cu aplicația dumneavoastră de autentificare, introduceți codul de șase cifre, apoi păstrați într-un loc sigur cele zece coduri de rezervă, care se afișează o singură dată.

Păstrați TWO_FACTOR_ENCRYPTION_KEY împreună cu backupurile dumneavoastră: documentația avertizează că pierderea sau schimbarea acestei chei face ilizibile secretele stocate, iar fiecare utilizator trebuie atunci să își configureze din nou autentificarea în doi pași.

Adăugarea unui site și a scriptului său de urmărire

  1. În Websites, faceți clic pe Add website.
  2. Dați site-ului un nume, apoi domeniul său: Umami îl folosește pentru a vă exclude propriile pagini din lista surselor de trafic.
  3. Deschideți Edit pe acest site și copiați codul din secțiunea Tracking code.
  4. Lipiți-l în <head>-ul paginilor dumneavoastră, apoi vizitați site-ul: datele apar imediat în tabloul de bord.
Codul de urmărire, în head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Un nume de script propriu

Unele blocante de reclame blochează tot ce seamănă cu statisticile. Găzduit pe propriul server, Umami este deja servit de pe propriul domeniu, iar două variabile merg mai departe: TRACKER_SCRIPT_NAME dă scriptului alt nume decât script.js, iar COLLECT_API_ENDPOINT redenumește punctul de colectare, în locul lui /api/send. Scriptul apelează apoi singur noul punct; pe paginile dumneavoastră se schimbă doar sursa codului de urmărire.

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

Setările utile

Aceste variabile de mediu se pun în serviciul umami din compose.yaml, apoi docker compose up -d recreează containerul pentru a le lua în considerare:

VariabilăCe faceValoare
DISABLE_TELEMETRYOprește telemetria anonimă pe care Umami o trimite proiectului pentru a îmbunătăți aplicația1
PRIVATE_MODEOprește toate apelurile de rețea externe, inclusiv pictogramele site-urilor, servite implicit de DuckDuckGo1
DISABLE_UPDATESOprește verificarea versiunilor noi1
IGNORE_IPExclude din colectare adrese IP și intervale CIDR, precum cele ale birourilor dumneavoastrăO listă separată prin virgule
SALT_ROTATIONFixează frecvența de schimbare a sării care stă la baza ID-urilor de sesiunemonth implicit
REDIS_URLAdaugă un cache Redis, pe care documentația îl recomandă pentru site-urile cu trafic mare sau pentru mai multe instanțeAdresa dumneavoastră Redis
MCP_ENABLEDDeschide punctul /mcp: asistentul dumneavoastră AI vă citește statisticile doar în citire, cu o cheie API creată în Settings, API keys1

Backupurile

Tot ce păstrează Umami se află în baza sa de date PostgreSQL: conturi, site-uri, echipe și statistici. Exportați-o în fiecare zi și chiar înaintea fiecărei actualizări: pe propriul server, aceste date sunt păstrate fără limită de timp. Pe lângă bază, fișierul .env conține secretele care o fac utilizabilă:

ElementCe păstreazăDe salvat
Baza de date PostgreSQLConturile, site-urile, echipele, rapoartele și toate statisticileObligatoriu, cu pg_dump
.envParola bazei de date, APP_SECRET și cheia autentificării în doi pașiObligatoriu, criptat
compose.yamlConfigurația instanței dumneavoastrăRecomandat

Exportul bazei în funcțiune

pg_dump face un export coerent în timp ce baza este folosită. Formatul personalizat, -Fc, este comprimat și se restaurează cu pg_restore:

Terminal, în directorul fișierului compose.yaml
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump

Programați această comandă pe server cel puțin o dată pe zi, faceți ordine printre exporturi, care se acumulează, și trimiteți o copie în altă parte. Puse pe discul serverului, aceste exporturi intră și în backupurile sale de noapte.

Restaurarea

  1. Opriți Umami, lăsând baza în funcțiune: docker compose stop umami.
  2. Restaurați exportul în bază, înlocuind obiectele existente.
  3. Reporniți Umami, apoi verificați că site-urile și statisticile lor sunt la locul lor.
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

Repetați acest exercițiu din când în când, pe o copie: așa verificați că un backup funcționează.

Actualizările

Documentația dă două comenzi, din directorul fișierului compose.yaml. Baza de date rămâne în volumul ei:

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

La repornire, containerul aplică singur migrările de schemă. Versiunea 3.4.0, din 17 septembrie 2026, aducea două, pentru adnotări și cheile API; versiunea 3.4.1, din 23 octombrie 2026, nu aduce niciuna. După o actualizare majoră, precum trecerea la versiunea 3, documentația sugerează rularea ANALYZE în PostgreSQL, pentru ca tablourile de bord să își recapete viteza:

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

Cine ce face pe un Managed VPS

Găzduirea pe propriul server cere să țineți serverul pe lângă aplicație. Pe un Managed VPS, echipele noastre preiau serverul și vă urmăresc proactiv instanța; Umami rămâne software-ul dumneavoastră, cu setările și datele sale.

SubiectEchipele noastreDumneavoastră
ServerulActualizări de sistem și de securitate, intervenții pe server incluseMomentul potrivit activității dumneavoastră
MonitorizareaServer urmărit 24 de ore din 24, 7 zile din 7, cu intervenție fără a vă aștepta apelulCitirea jurnalelor instanței dumneavoastră
UmamiUrmărire proactivă: erori, încetiniri și spațiu pe disc depistate, corectură recomandatăInstalarea, actualizările și setările sale, pe care le aplicați dumneavoastră sau asistentul dumneavoastră AI
Site-urile și statisticileServerul care le poartă, supravegheat și salvatConturile, site-urile urmărite, scriptul de urmărire și durata de păstrare a datelor
BackupurileÎn fiecare noapte, criptate și păstrate în afara mașinii; restaurare inclusăExporturile proprii Umami și cererea de restaurare, când aveți nevoie de ea
MigrareaServerul dumneavoastră actual migrat, gratuitMomentul trecerii

Dacă preferați ca echipele noastre să intervină în aplicația însăși, această prestație se facturează la oră sau la preț fix, cu o ofertă comunicată înainte de intervenție.

Umami, pe un server întreținut pentru dumneavoastră

Cu un Managed VPS Simafri, echipele noastre țin la zi serverul instanței dumneavoastră Umami, îl monitorizează zi și noapte și intervin fără a vă aștepta apelul; ele vă urmăresc proactiv și instanța și vă recomandă corecturile utile, pe care le aplicați dumneavoastră sau asistentul dumneavoastră AI. Backupurile sunt criptate în fiecare noapte și păstrate în afara mașinii, restaurarea lor este inclusă, iar migrarea serverului actual este gratuită.

Descoperiți gama Managed VPS

Întrebări frecvente

Este Umami gratuit pentru o firmă?

Da. Umami este sub licență MIT: îl puteți folosi, modifica și redistribui în firmă fără nicio licență de cumpărat, cu condiția să păstrați mențiunea sa de copyright. Rămâne costul serverului pe care rulează.

Folosește Umami cookie-uri?

Nu. FAQ-ul proiectului precizează că scriptul de urmărire web al Umami nu folosește cookie-uri. Dacă site-ul dumneavoastră are nevoie de un banner de cookie-uri depinde de celelalte servicii pe care le folosiți pe el și de cerințele care se aplică.

Funcționează Umami cu MySQL?

Nu începând cu versiunea 3: Umami suportă PostgreSQL, cel puțin în versiunea 12.14. O instanță în versiunea 2 pe MySQL își mută mai întâi datele în PostgreSQL cu ghidul de migrare al proiectului, apoi trece la versiunea 3.

Cum instalez Umami cu Docker Compose?

Porniți de la docker-compose.yml al proiectului, care rulează Umami și PostgreSQL, cu secrete aleatorii într-un fișier .env și portul publicat pe 127.0.0.1. Rulați docker compose up -d, apoi puneți în față un proxy invers în HTTPS, pe un subdomeniu.

Care sunt datele de conectare implicite ale Umami?

La instalare, Umami creează un cont admin cu parola umami. Schimbați-o la prima conectare, în Settings, apoi Profile, și activați autentificarea în doi pași în fila Security, după ce TWO_FACTOR_ENCRYPTION_KEY este setată.

Cum redenumesc scriptul de urmărire Umami?

Pe o instanță găzduită pe propriul server, TRACKER_SCRIPT_NAME dă scriptului alt nume decât script.js, iar COLLECT_API_ENDPOINT redenumește punctul de colectare /api/send. Schimbați apoi sursa codului de urmărire pe paginile dumneavoastră.

Cum fac backup la Umami?

Exportați zilnic baza PostgreSQL cu pg_dump, din containerul bazei, și păstrați separat fișierul .env, care conține APP_SECRET și cheia autentificării în doi pași. Restaurați cu pg_restore și testați regulat restaurarea.

Acoperă un Managed VPS și Umami?

Un Managed VPS acoperă serverul: sistemul, securitatea, monitorizarea și backupurile. Echipele noastre vă urmăresc proactiv și instanța și vă recomandă corecturile utile, pe care le aplicați dumneavoastră. O intervenție în aplicație se facturează la oră sau la preț fix.

Surse și documentație oficială

Ghiduri conexe

PostgreSQL pe un VPS: cum dimensionați memoria și disculO bază PostgreSQL rapidă este o bază ale cărei date consultate des încap în memorie. Întreaga dimensionare pornește de aici: volumul bazei, partea care lucrează cu adevărat, numărul de conexiuni, apoi discul și marja lui. Acest ghid prezintă metoda, setările de pornire pentru 4, 8 și 16 GB de memorie și interogările care măsoară o bază existentă.Backupurile unui VPS: ce trebuie să verificați înainte de a semnaO ofertă de VPS anunță aproape mereu „backupuri incluse”. În spatele acestor două cuvinte se poate afla o copie făcută în fiecare noapte, păstrată în afara mașinii și restaurată de experți, sau un snapshot pus pe același disc ca serverul. Acest ghid prezintă întrebările care fac diferența, ce înseamnă fiecare răspuns și modul de a verifica faptul că un backup se poate restaura.Diferența dintre VPS administrat și neadministrat: cine ce faceDiferența dintre un VPS administrat și unul neadministrat ține de o singură întrebare: cine se ocupă de server după ce acesta funcționează. Totuși, „administrat” (managed) nu are o definiție oficială: de la un furnizor la altul, cuvântul acoperă orice, de la simpla instalare a sistemului până la exploatarea completă a serverului. Acest ghid arată cine ce face, rând cu rând, inclusiv la nivelul intermediar al asistenței, și oferă întrebările care înlătură ambiguitatea înainte de semnare.
Contactați-ne