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.
Autor: Simon Vasconcelos Lee
Publicat la 15 noiembrie 2026Timp de citire: 12 minute
APP_SECRET și TWO_FACTOR_ENCRYPTION_KEY, serviți Umami în HTTPS pe propriul subdomeniu, apoi schimbați imediat parola contului admin.<head>-ul paginilor dumneavoastră: scriptul de urmărire nu folosește cookie-uri.pg_dump, păstrați fișierul .env într-un loc sigur și actualizați cu docker compose pull.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.
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.
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.
| Întrebare | Ce spune proiectul | Sursă |
|---|---|---|
| Cookie-urile | Scriptul 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 colectate | Afișări de pagini, URL-uri de proveniență, browsere, sisteme de operare, tipuri de dispozitive și localizarea aproximativă | FAQ |
| Adresa IP | Tabelul 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ăstrarea | Pe propriul server, datele sunt păstrate până le ștergeți | FAQ |
| GDPR | Umami este conceput cu grijă pentru confidențialitate, iar conformitatea depinde de modul în care îl configurați și îl folosiți | FAQ |
| Datele pe care le trimiteți | Un 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.
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:
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.
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: singura variabilă obligatorie, șirul de conectare la baza de date. Parola hexazecimală se pune ca atare; o parolă cu caractere speciale ar cere codificare procentuală (percent-encoding).APP_SECRET: un șir aleatoriu care securizează tokenurile de autentificare, unic pentru fiecare instalare. În codul versiunii 3.4.1, el intră și în calculul ID-urilor de sesiune: păstrați-l stabil.TWO_FACTOR_ENCRYPTION_KEY: 64 de caractere hexazecimale care criptează secretele autentificării în doi pași. Fără ea, nimeni nu poate activa autentificarea în doi pași.admin. Sonda /api/heartbeat răspunde {"ok":true} de îndată ce Umami este gata.latest urmărește ultima versiune publicată. Registrul proiectului publică și etichete de versiune, precum 3.4.1, pentru a o fixa pe cea pe care o rulați.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ă.
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.
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.
stats.example.com {
reverse_proxy 127.0.0.1:3000
}
Acest bloc preia exemplul Nginx din documentația Umami, ascultând pe portul 80, pentru a lăsa Certbot să instaleze 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 instalează apoi certificatul și se ocupă de reînnoirea lui:
sudo certbot --nginx
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.
admin și umami.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.
<head>-ul paginilor dumneavoastră, apoi vizitați site-ul: datele apar imediat în tabloul de bord.<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>
next/script, mai degrabă decât cu o simplă etichetă <script>.data-domains limitează urmărirea la domeniile dumneavoastră de producție, ceea ce ține mediile de test în afara statisticilor.localStorage.setItem('umami.disabled', 1).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.
TRACKER_SCRIPT_NAME: "stats.js"
COLLECT_API_ENDPOINT: "/api/collect"
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 face | Valoare |
|---|---|---|
DISABLE_TELEMETRY | Oprește telemetria anonimă pe care Umami o trimite proiectului pentru a îmbunătăți aplicația | 1 |
PRIVATE_MODE | Oprește toate apelurile de rețea externe, inclusiv pictogramele site-urilor, servite implicit de DuckDuckGo | 1 |
DISABLE_UPDATES | Oprește verificarea versiunilor noi | 1 |
IGNORE_IP | Exclude din colectare adrese IP și intervale CIDR, precum cele ale birourilor dumneavoastră | O listă separată prin virgule |
SALT_ROTATION | Fixează frecvența de schimbare a sării care stă la baza ID-urilor de sesiune | month implicit |
REDIS_URL | Adaugă un cache Redis, pe care documentația îl recomandă pentru site-urile cu trafic mare sau pentru mai multe instanțe | Adresa dumneavoastră Redis |
MCP_ENABLED | Deschide punctul /mcp: asistentul dumneavoastră AI vă citește statisticile doar în citire, cu o cheie API creată în Settings, API keys | 1 |
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ă:
| Element | Ce păstrează | De salvat |
|---|---|---|
| Baza de date PostgreSQL | Conturile, site-urile, echipele, rapoartele și toate statisticile | Obligatoriu, cu pg_dump |
.env | Parola bazei de date, APP_SECRET și cheia autentificării în doi pași | Obligatoriu, criptat |
compose.yaml | Configurația instanței dumneavoastră | Recomandat |
pg_dump face un export coerent în timp ce baza este folosită. Formatul personalizat, -Fc, este comprimat și se restaurează cu pg_restore:
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.
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
Repetați acest exercițiu din când în când, pe o copie: așa verificați că un backup funcționează.
Documentația dă două comenzi, din directorul fișierului compose.yaml. Baza de date rămâne în volumul ei:
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:
docker compose exec db psql -U umami -d umami -c "ANALYZE;"
postgres:15-alpine din fișier. Trecerea la o nouă versiune majoră de PostgreSQL cere un export și o restaurare sau pg_upgrade.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.
| Subiect | Echipele noastre | Dumneavoastră |
|---|---|---|
| Serverul | Actualizări de sistem și de securitate, intervenții pe server incluse | Momentul potrivit activității dumneavoastră |
| Monitorizarea | Server urmărit 24 de ore din 24, 7 zile din 7, cu intervenție fără a vă aștepta apelul | Citirea jurnalelor instanței dumneavoastră |
| Umami | Urmă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 statisticile | Serverul care le poartă, supravegheat și salvat | Conturile, 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 |
| Migrarea | Serverul dumneavoastră actual migrat, gratuit | Momentul 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.
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ă.
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ă.
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ă.
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.
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.
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ă.
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ă.
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.
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.
Simafri
Să discutăm despre site-ul dumneavoastră
Povestiți-ne despre proiectul dumneavoastră în câteva cuvinte: vă vom răspunde rapid.
Mulțumim! Cererea dumneavoastră a fost trimisă. Vă vom răspunde în curând.
Preferați e-mailul? Scrieți-ne la support@simafri.com.