Хостване на Umami на Managed VPS: уеб анализите ви на ваш сървър

Хостването на Umami на Managed VPS означава анализите на вашите сайтове да остават на ваша собствена машина, която нашите екипи поддържат актуална и наблюдават денем и нощем. Umami е свободен софтуер с лиценз MIT, който измерва трафика без бисквитки. Това ръководство следва официалната му документация: инсталиране с Docker Compose и PostgreSQL, HTTPS, първото влизане, скриптът за проследяване, какво казва проектът за личните данни, полезните настройки, резервните копия и обновленията.

Simon Vasconcelos Lee Автор: Публикувано на 15 ноември 2026 г.Време за четене: 12 минути

Всички ръководства

Накратко

  1. Лицензът MIT позволява свободно да използвате, променяте и разпространявате Umami, във фирма и другаде, стига да запазите бележката за авторските права.
  2. Инсталирайте го с Docker Compose: файлът на проекта стартира Umami и неговата база PostgreSQL, единствената поддържана база от версия 3 насам.
  3. Генерирайте на случаен принцип APP_SECRET и TWO_FACTOR_ENCRYPTION_KEY, предоставяйте Umami през HTTPS на собствен поддомейн, после веднага сменете паролата на акаунта admin.
  4. Добавете сайта си, после поставете неговия скрипт за проследяване в <head> на страниците си: проследяващият скрипт не използва бисквитки.
  5. Експортирайте базата всеки ден с pg_dump, пазете файла .env на сигурно място и обновявайте с docker compose pull.

Какво прави Umami

Umami е платформа с отворен код за уеб и продуктови анализи. Документацията му описва инструмент, който събира на едно място трафика, кампаниите, поведението на посетителите, конверсиите, задържането и приходите, от първото посещение до резултатите, които са важни за вашата дейност. Той е написан на TypeScript върху Next.js, а Docker образът му работи под акаунт без привилегии.

Една инстанция проследява няколко сайта: всеки получава собствен идентификатор и скрипт за проследяване, а колегите ви се ориентират чрез акаунти и екипи.

Какво позволява лицензът MIT

Umami е публикуван с лиценза MIT, от името на Umami Software, Inc. Той дава безплатно правото да използвате, копирате, променяте, сливате, публикувате, разпространявате, преотстъпвате и продавате копия на софтуера. Можете следователно да го пускате за фирмата си и за сайтовете на клиентите си, без да купувате лиценз.

Единственото му условие: бележката за авторските права и бележката за разрешението придружават всички копия или съществени части на софтуера. Като всеки лиценз MIT, той предоставя софтуера „такъв, какъвто е“, без гаранция.

Бисквитки и лични данни: какво казва проектът

Документацията представя Umami като анализи без бисквитки, без проследяване между сайтове и без автоматично събиране на лични данни. Самостоятелно хостван, той пази анализите ви на вашия собствен сървър: вие решавате къде се намират и колко дълго остават.

ВъпросКакво казва проектътИзточник
БисквиткитеУеб проследяващият скрипт не използва бисквитки; дали сайтът ви се нуждае от известие за бисквитки зависи от другите услуги, които използвате, и от приложимите изискванияFAQ
Събираните данниПрегледи на страници, адреси на препращащите страници, браузъри, операционни системи, типове устройства и приблизително местоположениеFAQ
IP адресътТаблицата на сесиите няма колона за IP адреса; идентификаторът на сесия е хеш от сайта, адреса, браузъра и сол, която се сменя всеки месец по подразбиранеСхема и код, версия 3.4.1
СъхранениетоПри самостоятелно хостване данните се пазят, докато не ги изтриетеFAQ
GDPRUmami е проектиран със съобразяване с поверителността, а съответствието зависи от начина, по който го конфигурирате и използватеFAQ
Данните, които изпращатеИдентификатор на посетител или свойства на събития, които решите да изпращате, са ваша отговорностВъведение

Три настройки на скрипта за проследяване отиват по-далеч, ако желаете: data-exclude-search премахва параметрите на търсене от записаните адреси, data-exclude-hash премахва хеша, а data-do-not-track изключва проследяването за браузърите, които изразяват предпочитанието Do Not Track. Документацията отбелязва, че тази последна настройка сама по себе си не е пълно решение за управление на съгласието.

Ако идентифицирате влезлите посетители с data-distinct-id или umami.identify(), документацията препоръчва вътрешен идентификатор на потребителя или хеш, а не имейл адрес: стойността може да се прочете в HTML кода на страницата.

Инсталиране с Docker Compose и PostgreSQL

Хранилището съдържа 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.

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:
Терминал
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat

Документацията за инсталиране не дава числа за паметта и процесора. Размерът зависи от трафика на проследяваните сайтове и от обема на данните, които пазите. На Managed VPS ни опишете как го използвате и ще ви препоръчаме подходящия размер.

HTTPS: обратният прокси

Umami слуша през HTTP на порт 3000, а документацията предлага да го предоставяте зад вашия уеб сървър, чрез обратен прокси. Дайте му собствен поддомейн, като stats.example.com, насочен към сървъра със записи A и AAAA. Предоставянето на Umami под път минава през BASE_PATH, променлива, която се чете при изграждането на приложението: с публикувания образ поддомейнът е прекият път.

Проксито трябва и да предава адреса на посетителя. Umami го чете от заглавките, които получава, сред които X-Real-IP и X-Forwarded-For: той го използва, за да различава посетителите и да определя държавата им. Ако проксито ви използва друга заглавка, CLIENT_IP_HEADER я посочва.

С Caddy

Caddy сам получава сертификата Let’s Encrypt и включва HTTPS. Директивата му reverse_proxy поставя X-Forwarded-For по подразбиране: тези три реда са всичко, което ви трябва.

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

С Nginx и Certbot

Този блок следва примера за Nginx от документацията на Umami и слуша на порт 80, за да остави на Certbot да постави HTTPS:

Блок на 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 поставя сертификата и се грижи да го подновява:

Терминал
sudo certbot --nginx

Първото влизане: администраторският акаунт и двуфакторното удостоверяване

Когато създава базата си, Umami отваря администраторски акаунт: потребителско име admin, парола umami. Документацията моли да смените тази парола при първото си влизане.

  1. Отворете своя HTTPS адрес и влезте с admin и umami.
  2. Отворете Settings от бутона на профила в страничната лента, после Profile, и щракнете върху Change password.
  3. В раздела Security включете двуфакторното удостоверяване: сканирайте QR кода с приложението си за удостоверяване, въведете шестцифрения код, после запазете десетте резервни кода на сигурно място, защото се показват само веднъж.

Пазете TWO_FACTOR_ENCRYPTION_KEY заедно с резервните си копия: документацията предупреждава, че загубата или смяната на този ключ прави записаните тайни нечетими, а всеки потребител трябва тогава да настрои отново двуфакторното удостоверяване.

Добавяне на сайт и неговия скрипт за проследяване

  1. В Websites щракнете върху Add website.
  2. Дайте име на сайта, после неговия домейн: Umami го използва, за да изключи вашите собствени страници от списъка с източници на препращане.
  3. Отворете Edit за този сайт и копирайте кода от раздела Tracking code.
  4. Поставете го в <head> на страниците си, после посетете сайта си: данните се появяват веднага в таблото.
Кодът за проследяване, в head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Собствено име на скрипта

Някои блокери на реклами блокират всичко, което прилича на анализи. При самостоятелно хостване Umami вече се предоставя от вашия собствен домейн, а две променливи отиват по-далеч: TRACKER_SCRIPT_NAME дава на скрипта име, различно от script.js, а COLLECT_API_ENDPOINT преименува крайната точка за събиране, вместо /api/send. После скриптът сам извиква новата крайна точка; на страниците ви се сменя само източникът на кода за проследяване.

compose.yaml, в environment
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 keys1

Резервните копия

Всичко, което Umami пази, се намира в неговата база PostgreSQL: акаунти, сайтове, екипи и анализи. Експортирайте я всеки ден и непосредствено преди всяко обновяване: при самостоятелно хостване тези данни се пазят без ограничение във времето. До базата файлът .env съдържа тайните, които я правят използваема:

ЕлементКакво пазиЗа архивиране
Базата PostgreSQLАкаунти, сайтове, екипи, отчети и всички анализиЗадължително, с pg_dump
.envПаролата на базата, APP_SECRET и ключа за двуфакторното удостоверяванеЗадължително, шифровано
compose.yamlКонфигурацията на инстанцията виПрепоръчително

Експорт на базата, докато работи

pg_dump прави съгласуван експорт, докато базата се използва. Персонализираният формат, -Fc, е компресиран и се възстановява с pg_restore:

Терминал, в папката на compose.yaml
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump

Планирайте тази команда на сървъра поне веднъж дневно, подреждайте експортите, които се трупат, и изпращайте копие другаде. Пазени на диска на сървъра, тези експорти влизат и в нощните му резервни копия.

Възстановяване

  1. Спрете Umami, като оставите базата да работи: docker compose stop umami.
  2. Възстановете експорта в базата, като замените съществуващите обекти.
  3. Стартирайте отново 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;"

Кой какво прави на Managed VPS

Самостоятелното хостване изисква да поддържате сървъра освен приложението. На Managed VPS нашите екипи поемат сървъра и следят проактивно вашата инстанция; Umami остава ваш софтуер, с неговите настройки и данни.

ТемаНашите екипиВие
СървърътОбновления на системата и на сигурността, включително намеси на сървъраМоментът, който пасва на вашата дейност
НаблюдениетоСървър, следен денонощно, 7 дни в седмицата, с намеса, без да се чака обаждането виЧетенето на журналите на вашата инстанция
UmamiПроактивно проследяване: грешки, забавяния и дисково пространство се откриват, препоръчва се корекцияИнсталирането, обновяванията и настройките му, които прилагате вие или вашият AI асистент
Сайтовете и анализитеСървърът, който ги носи, наблюдаван и архивиранАкаунтите, проследяваните сайтове, скриптът за проследяване и срокът на съхранение на данните
Резервните копияВсяка нощ, криптирани и пазени извън машината; възстановяването е включеноЕкспортите, специфични за Umami, и заявката за възстановяване, когато ви потрябва
МиграциятаСегашният ви сървър е мигриран, безплатноМоментът на превключването

Ако предпочитате нашите екипи да се намесват в самото приложение, тази услуга се фактурира на час или на фиксирана цена, с оферта, съобщена преди намесата.

Umami, на сървър, поддържан вместо вас

С Managed VPS от Simafri нашите екипи поддържат актуален сървъра на вашата инстанция на Umami, наблюдават го денем и нощем и се намесват, без да чакат обаждането ви; те следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие или вашият AI асистент. Резервните копия се криптират всяка нощ и се пазят извън машината, възстановяването им е включено, а миграцията от сегашния ви сървър е безплатна.

Разгледайте Managed VPS

Често задавани въпроси

Безплатен ли е Umami за фирма?

Да. Umami е с лиценз MIT: можете да го използвате, променяте и разпространявате във фирма, без да купувате лиценз, стига да запазите бележката за авторските права. Остава цената на сървъра, на който работи.

Използва ли Umami бисквитки?

Не. FAQ на проекта посочва, че уеб проследяващият скрипт на Umami не използва бисквитки. Дали сайтът ви се нуждае от известие за бисквитки зависи от другите услуги, които използвате на него, и от приложимите изисквания.

Работи ли Umami с MySQL?

Не от версия 3 насам: Umami поддържа PostgreSQL, минимум версия 12.14. Инстанция на версия 2 с MySQL първо премества данните си в PostgreSQL с ръководството за миграция на проекта, после се обновява към версия 3.

Как се инсталира Umami с Docker Compose?

Започнете от docker-compose.yml на проекта, който пуска Umami и PostgreSQL, със случайни тайни във файл .env и порт, публикуван на 127.0.0.1. Изпълнете docker compose up -d, после поставете пред него обратен прокси с HTTPS, на поддомейн.

Какви са данните за вход по подразбиране на Umami?

При инсталирането Umami създава акаунт admin с парола umami. Сменете я при първото си влизане, в Settings, после Profile, и включете двуфакторното удостоверяване в раздела Security, след като TWO_FACTOR_ENCRYPTION_KEY е зададен.

Как се преименува скриптът за проследяване на Umami?

На самостоятелно хоствана инстанция TRACKER_SCRIPT_NAME дава на скрипта име, различно от script.js, а COLLECT_API_ENDPOINT преименува крайната точка за събиране /api/send. После сменете източника на кода за проследяване на страниците си.

Как се архивира Umami?

Експортирайте базата PostgreSQL всеки ден с pg_dump, от контейнера на базата, и пазете отделно файла .env, защото той съдържа APP_SECRET и ключа за двуфакторното удостоверяване. Възстановявайте с pg_restore и тествайте редовно възстановяването.

Покрива ли Managed VPS Umami?

Managed VPS покрива сървъра: система, сигурност, наблюдение и резервни копия. Нашите екипи следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие. Намеса в самото приложение се фактурира на час или на фиксирана цена.

Източници и официална документация

Свързани ръководства

PostgreSQL на VPS: как да оразмерите паметта и дискаБързата PostgreSQL база е база, чиито често четени данни се побират в паметта. Цялото оразмеряване започва оттук: обемът на базата, делът, който наистина работи, броят на връзките, след това дискът и неговият резерв. Това ръководство дава метода, началните настройки за 4, 8 и 16 GB памет и заявките, които измерват съществуваща база.Резервни копия на VPS: какво да проверите, преди да подпишетеПочти всяко предложение за VPS обявява „включени резервни копия“. Зад тези думи може да стои копие всяка нощ, пазено извън машината и възстановявано от експерти, или моментна снимка, поставена на същия диск като сървъра. Това ръководство дава въпросите, които правят разликата, какво означава всеки отговор и как да проверите, че едно резервно копие наистина се възстановява.Разлика между управляван и неуправляван VPS: кой какво правиРазликата между управляван и неуправляван VPS се свежда до един въпрос: кой се грижи за сървъра, след като той вече работи. Думата „управляван“ обаче няма официално определение и от един хостинг доставчик до друг обхваща всичко от простото инсталиране на системата до цялостното стопанисване на сървъра. Това ръководство показва кой какво прави, ред по ред, заедно с междинното ниво на експертното съдействие, и дава въпросите, които премахват двусмислието, преди да подпишете.
Свържете се с нас