Хостването на Umami на Managed VPS означава анализите на вашите сайтове да остават на ваша собствена машина, която нашите екипи поддържат актуална и наблюдават денем и нощем. Umami е свободен софтуер с лиценз MIT, който измерва трафика без бисквитки. Това ръководство следва официалната му документация: инсталиране с Docker Compose и PostgreSQL, HTTPS, първото влизане, скриптът за проследяване, какво казва проектът за личните данни, полезните настройки, резервните копия и обновленията.
Автор: Simon Vasconcelos Lee
Публикувано на 15 ноември 2026 г.Време за четене: 12 минути
APP_SECRET и TWO_FACTOR_ENCRYPTION_KEY, предоставяйте Umami през HTTPS на собствен поддомейн, после веднага сменете паролата на акаунта admin.<head> на страниците си: проследяващият скрипт не използва бисквитки.pg_dump, пазете файла .env на сигурно място и обновявайте с docker compose pull.Umami е платформа с отворен код за уеб и продуктови анализи. Документацията му описва инструмент, който събира на едно място трафика, кампаниите, поведението на посетителите, конверсиите, задържането и приходите, от първото посещение до резултатите, които са важни за вашата дейност. Той е написан на TypeScript върху Next.js, а Docker образът му работи под акаунт без привилегии.
Една инстанция проследява няколко сайта: всеки получава собствен идентификатор и скрипт за проследяване, а колегите ви се ориентират чрез акаунти и екипи.
Umami е публикуван с лиценза MIT, от името на Umami Software, Inc. Той дава безплатно правото да използвате, копирате, променяте, сливате, публикувате, разпространявате, преотстъпвате и продавате копия на софтуера. Можете следователно да го пускате за фирмата си и за сайтовете на клиентите си, без да купувате лиценз.
Единственото му условие: бележката за авторските права и бележката за разрешението придружават всички копия или съществени части на софтуера. Като всеки лиценз MIT, той предоставя софтуера „такъв, какъвто е“, без гаранция.
Документацията представя Umami като анализи без бисквитки, без проследяване между сайтове и без автоматично събиране на лични данни. Самостоятелно хостван, той пази анализите ви на вашия собствен сървър: вие решавате къде се намират и колко дълго остават.
| Въпрос | Какво казва проектът | Източник |
|---|---|---|
| Бисквитките | Уеб проследяващият скрипт не използва бисквитки; дали сайтът ви се нуждае от известие за бисквитки зависи от другите услуги, които използвате, и от приложимите изисквания | FAQ |
| Събираните данни | Прегледи на страници, адреси на препращащите страници, браузъри, операционни системи, типове устройства и приблизително местоположение | FAQ |
| IP адресът | Таблицата на сесиите няма колона за IP адреса; идентификаторът на сесия е хеш от сайта, адреса, браузъра и сол, която се сменя всеки месец по подразбиране | Схема и код, версия 3.4.1 |
| Съхранението | При самостоятелно хостване данните се пазят, докато не ги изтриете | FAQ |
| GDPR | Umami е проектиран със съобразяване с поверителността, а съответствието зависи от начина, по който го конфигурирате и използвате | FAQ |
| Данните, които изпращате | Идентификатор на посетител или свойства на събития, които решите да изпращате, са ваша отговорност | Въведение |
Три настройки на скрипта за проследяване отиват по-далеч, ако желаете: data-exclude-search премахва параметрите на търсене от записаните адреси, data-exclude-hash премахва хеша, а data-do-not-track изключва проследяването за браузърите, които изразяват предпочитанието Do Not Track. Документацията отбелязва, че тази последна настройка сама по себе си не е пълно решение за управление на съгласието.
Ако идентифицирате влезлите посетители с data-distinct-id или umami.identify(), документацията препоръчва вътрешен идентификатор на потребителя или хеш, а не имейл адрес: стойността може да се прочете в HTML кода на страницата.
Хранилището съдържа docker-compose.yml, който стартира Umami и неговата база PostgreSQL. От версия 3 PostgreSQL е единствената поддържана база, минимум версия 12.14, а документацията препоръчва да я настроите на часова зона UTC. На сървър с инсталиран Docker създайте папка и започнете с тайните ѝ, генерирани на случаен принцип с openssl, както предлага документацията:
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
После поставете до него този compose.yaml. Той следва файла на проекта във версия 3.4.1, с две промени: тайните идват от файла .env, а портът се публикува само на 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: единствената задължителна променлива, низът за връзка с базата. Шестнадесетичната парола се поставя такава, каквато е; парола със специални знаци би изисквала процентно кодиране.APP_SECRET: случаен низ, който защитава токените за удостоверяване, уникален за всяка инсталация. В кода на версия 3.4.1 той участва и в изчисляването на идентификаторите на сесиите: дръжте го непроменен.TWO_FACTOR_ENCRYPTION_KEY: 64 шестнадесетични знака, които шифроват тайните на двуфакторното удостоверяване. Без него никой не може да включи двуфакторно удостоверяване.admin. Проверката /api/heartbeat отговаря {"ok":true}, щом Umami е готов.latest следва последната публикувана версия. Регистърът на проекта публикува и етикети с номер на версия, като 3.4.1, за да фиксирате тази, която пускате.Документацията за инсталиране не дава числа за паметта и процесора. Размерът зависи от трафика на проследяваните сайтове и от обема на данните, които пазите. На Managed VPS ни опишете как го използвате и ще ви препоръчаме подходящия размер.
Umami слуша през HTTP на порт 3000, а документацията предлага да го предоставяте зад вашия уеб сървър, чрез обратен прокси. Дайте му собствен поддомейн, като stats.example.com, насочен към сървъра със записи A и AAAA. Предоставянето на Umami под път минава през BASE_PATH, променлива, която се чете при изграждането на приложението: с публикувания образ поддомейнът е прекият път.
Проксито трябва и да предава адреса на посетителя. Umami го чете от заглавките, които получава, сред които X-Real-IP и X-Forwarded-For: той го използва, за да различава посетителите и да определя държавата им. Ако проксито ви използва друга заглавка, CLIENT_IP_HEADER я посочва.
Caddy сам получава сертификата Let’s Encrypt и включва HTTPS. Директивата му reverse_proxy поставя X-Forwarded-For по подразбиране: тези три реда са всичко, което ви трябва.
stats.example.com {
reverse_proxy 127.0.0.1:3000
}
Този блок следва примера за Nginx от документацията на Umami и слуша на порт 80, за да остави на Certbot да постави 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 поставя сертификата и се грижи да го подновява:
sudo certbot --nginx
Когато създава базата си, Umami отваря администраторски акаунт: потребителско име admin, парола umami. Документацията моли да смените тази парола при първото си влизане.
admin и umami.Пазете TWO_FACTOR_ENCRYPTION_KEY заедно с резервните си копия: документацията предупреждава, че загубата или смяната на този ключ прави записаните тайни нечетими, а всеки потребител трябва тогава да настрои отново двуфакторното удостоверяване.
<head> на страниците си, после посетете сайта си: данните се появяват веднага в таблото.<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>
next/script, а не с обикновен таг <script>.data-domains ограничава проследяването до работните ви домейни, което държи тестовите ви среди извън статистиката.localStorage.setItem('umami.disabled', 1).Някои блокери на реклами блокират всичко, което прилича на анализи. При самостоятелно хостване Umami вече се предоставя от вашия собствен домейн, а две променливи отиват по-далеч: TRACKER_SCRIPT_NAME дава на скрипта име, различно от script.js, а COLLECT_API_ENDPOINT преименува крайната точка за събиране, вместо /api/send. После скриптът сам извиква новата крайна точка; на страниците ви се сменя само източникът на кода за проследяване.
TRACKER_SCRIPT_NAME: "stats.js"
COLLECT_API_ENDPOINT: "/api/collect"
Тези променливи на средата отиват в услугата umami на compose.yaml, после docker compose up -d създава контейнера наново, за да ги вземе предвид:
| Променлива | Какво прави | Стойност |
|---|---|---|
DISABLE_TELEMETRY | Изключва анонимната телеметрия, която Umami изпраща на проекта, за да подобри приложението | 1 |
PRIVATE_MODE | Изключва всички външни мрежови извиквания, включително иконите на сайтовете, предоставяни от DuckDuckGo по подразбиране | 1 |
DISABLE_UPDATES | Изключва проверката за нови версии | 1 |
IGNORE_IP | Изключва IP адреси и диапазони CIDR от събирането на данни, като тези на офисите ви | Списък, разделен със запетаи |
SALT_ROTATION | Задава колко често се сменя солта, на която се основават идентификаторите на сесиите | month по подразбиране |
REDIS_URL | Добавя кеш Redis, който документацията препоръчва за сайтове с голям трафик или за няколко инстанции | Адресът на вашия Redis |
MCP_ENABLED | Отваря крайната точка /mcp: вашият AI асистент чете анализите ви само за четене, с API ключ, създаден в Settings, API keys | 1 |
Всичко, което Umami пази, се намира в неговата база PostgreSQL: акаунти, сайтове, екипи и анализи. Експортирайте я всеки ден и непосредствено преди всяко обновяване: при самостоятелно хостване тези данни се пазят без ограничение във времето. До базата файлът .env съдържа тайните, които я правят използваема:
| Елемент | Какво пази | За архивиране |
|---|---|---|
| Базата PostgreSQL | Акаунти, сайтове, екипи, отчети и всички анализи | Задължително, с pg_dump |
.env | Паролата на базата, APP_SECRET и ключа за двуфакторното удостоверяване | Задължително, шифровано |
compose.yaml | Конфигурацията на инстанцията ви | Препоръчително |
pg_dump прави съгласуван експорт, докато базата се използва. Персонализираният формат, -Fc, е компресиран и се възстановява с pg_restore:
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump
Планирайте тази команда на сървъра поне веднъж дневно, подреждайте експортите, които се трупат, и изпращайте копие другаде. Пазени на диска на сървъра, тези експорти влизат и в нощните му резервни копия.
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
Повтаряйте това упражнение от време на време, върху копие: така проверявате, че резервното копие работи.
Документацията дава две команди, от папката на compose.yaml. Базата остава в своя том:
docker compose pull
docker compose up --force-recreate -d
При рестартиране контейнерът сам прилага миграциите на схемата. Версия 3.4.0 от 17 септември 2026 г. носеше две такива, за анотациите и за API ключовете; версия 3.4.1 от 23 октомври 2026 г. не носи нито една. След голямо обновяване, като преминаването към версия 3, документацията предлага да изпълните ANALYZE в PostgreSQL, за да си върнат таблата скоростта:
docker compose exec db psql -U umami -d umami -c "ANALYZE;"
postgres:15-alpine от файла. Преминаването към нова основна версия на PostgreSQL изисква експорт и възстановяване или pg_upgrade.Самостоятелното хостване изисква да поддържате сървъра освен приложението. На Managed VPS нашите екипи поемат сървъра и следят проактивно вашата инстанция; Umami остава ваш софтуер, с неговите настройки и данни.
| Тема | Нашите екипи | Вие |
|---|---|---|
| Сървърът | Обновления на системата и на сигурността, включително намеси на сървъра | Моментът, който пасва на вашата дейност |
| Наблюдението | Сървър, следен денонощно, 7 дни в седмицата, с намеса, без да се чака обаждането ви | Четенето на журналите на вашата инстанция |
| Umami | Проактивно проследяване: грешки, забавяния и дисково пространство се откриват, препоръчва се корекция | Инсталирането, обновяванията и настройките му, които прилагате вие или вашият AI асистент |
| Сайтовете и анализите | Сървърът, който ги носи, наблюдаван и архивиран | Акаунтите, проследяваните сайтове, скриптът за проследяване и срокът на съхранение на данните |
| Резервните копия | Всяка нощ, криптирани и пазени извън машината; възстановяването е включено | Експортите, специфични за Umami, и заявката за възстановяване, когато ви потрябва |
| Миграцията | Сегашният ви сървър е мигриран, безплатно | Моментът на превключването |
Ако предпочитате нашите екипи да се намесват в самото приложение, тази услуга се фактурира на час или на фиксирана цена, с оферта, съобщена преди намесата.
С Managed VPS от Simafri нашите екипи поддържат актуален сървъра на вашата инстанция на Umami, наблюдават го денем и нощем и се намесват, без да чакат обаждането ви; те следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие или вашият AI асистент. Резервните копия се криптират всяка нощ и се пазят извън машината, възстановяването им е включено, а миграцията от сегашния ви сървър е безплатна.
Да. Umami е с лиценз MIT: можете да го използвате, променяте и разпространявате във фирма, без да купувате лиценз, стига да запазите бележката за авторските права. Остава цената на сървъра, на който работи.
Не. FAQ на проекта посочва, че уеб проследяващият скрипт на Umami не използва бисквитки. Дали сайтът ви се нуждае от известие за бисквитки зависи от другите услуги, които използвате на него, и от приложимите изисквания.
Не от версия 3 насам: Umami поддържа PostgreSQL, минимум версия 12.14. Инстанция на версия 2 с MySQL първо премества данните си в PostgreSQL с ръководството за миграция на проекта, после се обновява към версия 3.
Започнете от docker-compose.yml на проекта, който пуска Umami и PostgreSQL, със случайни тайни във файл .env и порт, публикуван на 127.0.0.1. Изпълнете docker compose up -d, после поставете пред него обратен прокси с HTTPS, на поддомейн.
При инсталирането Umami създава акаунт admin с парола umami. Сменете я при първото си влизане, в Settings, после Profile, и включете двуфакторното удостоверяване в раздела Security, след като TWO_FACTOR_ENCRYPTION_KEY е зададен.
На самостоятелно хоствана инстанция TRACKER_SCRIPT_NAME дава на скрипта име, различно от script.js, а COLLECT_API_ENDPOINT преименува крайната точка за събиране /api/send. После сменете източника на кода за проследяване на страниците си.
Експортирайте базата PostgreSQL всеки ден с pg_dump, от контейнера на базата, и пазете отделно файла .env, защото той съдържа APP_SECRET и ключа за двуфакторното удостоверяване. Възстановявайте с pg_restore и тествайте редовно възстановяването.
Managed VPS покрива сървъра: система, сигурност, наблюдение и резервни копия. Нашите екипи следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие. Намеса в самото приложение се фактурира на час или на фиксирана цена.
Simafri
Да поговорим за Вашия проект
Кажете ни с няколко думи от какво имате нужда: отговаряме Ви бързо.
Благодарим! Вашето запитване е изпратено. Ще се свържем с вас скоро.
Предпочитате имейл? Пишете ни на support@simafri.com.