PostHog
Open-source платформа продуктовой аналитики все-в-одном: события и автозахват, воронки, retention, запись сессий, feature flags и A/B-тесты. Развернули self-hosted на своем сервере, честно замерили тяжесть стека, поймали грабли установки и вошли в живой интерфейс с реальными данными - как аналитическую часть замены Intercom.
Вердикт
- кому нужна продуктовая аналитика уровня Amplitude/Mixpanel без подписки
- тем, кто хочет события, воронки, запись сессий и feature flags в одном месте
- командам, которым важно держать данные о пользователях на своем сервере
- если нужна только веб-аналитика посещаемости - легче Plausible или Umami
- если мало ресурсов: стек тяжелый, на 4 GB не поднять
- кто не готов обслуживать сложный набор из 30 контейнеров
Зачем это в поиске замены Intercom
Мы собираем self-hosted комплект вместо Intercom. Четыре helpdesk-системы закрыли поддержку: Chatwoot - live-chat, Zammad - тикеты и SLA, FreeScout - общий email-ящик, Libredesk - легкий омниканал. Но Intercom - это не только переписка: там же продуктовая аналитика, кто и как пользуется продуктом, и запись сессий. Эту часть берет на себя PostHog.
Соседи по серии: helpdesk-квартет Chatwoot, Zammad, FreeScout, Libredesk и легкая веб-аналитика Plausible. PostHog здесь - самый тяжелый компонент, поэтому живет на отдельной виртуалке.
Что это и какую задачу решает
PostHog - open-source платформа продуктовой аналитики. В одном продукте: события и автозахват действий, дашборды, воронки и retention, session replay (запись сессий пользователей), feature flags, A/B-тесты, опросы и встроенный data warehouse. По духу это self-hosted замена связки Amplitude + Mixpanel + Hotjar.
Под капотом - серьезная инженерия: события хранятся в ClickHouse, поток идет через Kafka, метаданные - в PostgreSQL, кэш и очереди - в Redis, поиск - Elasticsearch, фоновые задачи - Celery и Temporal, объекты (записи сессий) - в объектном хранилище. Приложение - Django плюс React, работает под сервером NGINX Unit. Ядро под лицензией MIT, часть enterprise-функций - под отдельной лицензией.
Чем отличается от платных решений
Сравнение с Amplitude, Mixpanel и аналитической частью Intercom по тому, что влияет на выбор.
| Параметр | PostHog | Amplitude / Mixpanel / Intercom |
|---|---|---|
| Модель цены | бесплатно, ядро под MIT | подписка, лимиты на события |
| Где данные | ваш сервер | облако вендора |
| Продуктовая аналитика | события, воронки, retention | есть |
| Запись сессий | встроена | частично / отдельно |
| Feature flags и A/B | из коробки | не везде |
| Требования к железу | высокие (8+ GB) | - (SaaS) |
Тех-стек и архитектура
Self-hosted PostHog в режиме hobby - это около 30 контейнеров. Ядро аналитики: web (Django под NGINX Unit), worker (Celery), temporal-django-worker - это главные едоки памяти. Данные: clickhouse (события), kafka + zookeeper (шина), db (PostgreSQL), redis, elasticsearch. Отдельные сервисы под приемку событий (capture, ingestion-*), запись сессий, feature flags и объектное хранилище. Наружу все отдает встроенный Caddy, он же выпускает TLS.
Вывод по архитектуре: это не «одно приложение», а маленькая дата-платформа. Отсюда и тяжесть - зато вы получаете аналитику уровня коммерческих SaaS на своем железе.
Минимальная конфигурация
Реальные требования против официального минимума.
| Официальный минимум RAM | 8 GB (предупреждение прямо в установщике) |
| Реально занято в простое (наш замер) | ~12.4 GiB |
| Контейнеров | 30 |
| Образы на диске | ~31.5 GB |
| Тариф Fatmetal | CPU6-RAM16-DISK100 |
Важно: 8 GB - это заявленный минимум, реально в простое стек занимает больше 12 GiB. Берите виртуалку с 16 GB RAM, иначе под нагрузкой начнется своп и все встанет.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер - получаете рабочий домен, валидный TLS и файл с доступами (PostHog тяжелый, первый старт долгий - миграции идут 30+ минут).
Рекомендуемая конфигурация:
6 vCPU · 16 ГБ RAM · 100 ГБ NVMe от 2 250 ₽/мес
Развертывание на Fatmetal
Fatmetal Cloud Server (CPU6-RAM16) + Ubuntu 24.04 + Docker, TLS выпускает встроенный Caddy.
Завести A-запись домена
PostHog сам выпускает TLS через встроенный Caddy, поэтому
posthog.fatmetal.netдолжен указывать на инстанс до запуска установки.Запустить официальный установщик
bash <(curl -fsSL https://raw.githubusercontent.com/PostHog/posthog/master/bin/deploy-hobby) \ latest posthog.fatmetal.netСкрипт тянет образы (ClickHouse, Kafka, Postgres, приложение), поднимает стек и прогоняет миграции. Это долго: у нас установка заняла заметно больше получаса - тяжелые образы плюс огромный набор миграций базы.
Дождаться health и создать первого пользователя
curl -s -o /dev/null -w '%{http_code}' https://posthog.fatmetal.net/_health # ждем 200После 200 открывается страница регистрации - первый аккаунт становится администратором организации. Дальше можно слать события SDK или через capture API.
Что измерили после запуска
Цифры с нашей установки. Данные живые: залили 900 синтетических событий и 90 персон, чтобы графики были непустыми.
| RAM в простое (всего, 30 контейнеров) | ~12.4 GiB |
| worker (Celery) | ~3.7 GiB |
| web (Django / Unit) | ~3.4 GiB |
| clickhouse | ~1.3 GiB |
| Образы всего на диске | ~31.5 GB |
Главное: PostHog - самый тяжелый проект из всей нашей серии. Для сравнения: весь helpdesk-квартет держится в пределах 65 MiB - 2.7 GiB, а один PostHog в простое просит больше 12 GiB. Это плата за полноценную дата-платформу.
Проверено на сборке master/latest (f5ce257) от 2026-07-01. На новых сборках результаты могут отличаться.
Где может сломаться
Реальные грабли, на которые наткнулись при запуске.
Скачиватель GeoIP вешает установку. Официальный deploy-hobby синхронно тянет базу GeoLite2 с mmdbcdn.posthog.net. У нас хост почти не отвечал, и установка встала на этом шаге. Обход - подложить плейсхолдер share/GeoLite2-City.mmdb, тогда скрипт пропускает скачивание.
Долгие миграции. На чистой базе PostHog прогоняет очень большой набор миграций Postgres и ClickHouse. Здоровье /_health отдает 200 только после того, как приложение поднимется - наберитесь терпения, это не зависание.
Причина. Синхронная загрузка GeoIP-базы с внешнего CDN, который может быть недоступен.
Решение. Создать файл-плейсхолдер по пути share/GeoLite2-City.mmdb до запуска - установщик увидит его и не будет качать.
Безопасность и обновления
TLS выпускает встроенный Caddy по домену - отдельный reverse-proxy не нужен, но и порты 80/443 инстанс занимает сам. Первый зарегистрированный пользователь становится администратором, поэтому сразу закройте регистрацию и заведите реальные аккаунты. Персональные данные пользователей (события, записи сессий) лежат у вас - помните про 152-ФЗ и настройте retention записей сессий.
Обновление hobby-инсталляции идет тем же скриптом; перед апгрейдом делайте бэкап PostgreSQL и данных ClickHouse. Для продакшена официально рекомендуется облако PostHog или Kubernetes - hobby-режим заявлен как «для пробы».
Связь с другими стеками
- Легкая веб-аналитика - Plausible, если нужна только посещаемость без тяжелого стека.
- Поддержка и чат - helpdesk-квартет Chatwoot / Zammad / FreeScout / Libredesk закрывает переписку.
- Обратный прокси - если ставите рядом другие сервисы, разводите их Traefik или Nginx, а PostHog держите на своей виртуалке.
Когда это НЕ ваш выбор
Нужна только веб-аналитика
Если задача - считать посещаемость и источники трафика, PostHog избыточен. Plausible или Umami дадут то же самое на десятках мегабайт.
Мало ресурсов
Стек тяжелый: ClickHouse, Kafka, воркеры. На 4-8 GB его нормально не поднять - нужна отдельная виртуалка с 16 GB.
Нет времени на обслуживание
30 контейнеров - это дата-платформа, а не «одна кнопка». Если некому следить за стеком, рассмотрите облако PostHog.
Частые вопросы
Сколько PostHog ест в простое?
Больше 12 GiB на 30 контейнеров. Главные едоки - worker (~3.7 GiB), web (~3.4 GiB) и ClickHouse (~1.3 GiB).
Какая нужна виртуалка?
Официальный минимум - 8 GB, но реально берите 16 GB RAM и несколько ядер. У нас CPU6-RAM16.
Чем PostHog отличается от Plausible?
Plausible - легкая веб-аналитика посещаемости. PostHog - тяжелая продуктовая аналитика: воронки, retention, запись сессий, feature flags.
Это правда бесплатно?
Ядро под лицензией MIT. Часть enterprise-функций - под отдельной лицензией, но базовая аналитика доступна без оплаты.
Как выпускается TLS?
Встроенным Caddy по домену. Нужна только A-запись на инстанс до установки.
Почему установка такая долгая?
Тяжелые образы плюс очень большой набор миграций Postgres и ClickHouse на чистой базе. Это нормально, дождитесь /_health = 200.
Можно ли в продакшен?
Hobby-режим заявлен «для пробы». Для серьезной нагрузки PostHog рекомендует свое облако или Kubernetes.
Итог
PostHog - это self-hosted продуктовая аналитика уровня коммерческих SaaS: события, воронки, retention, запись сессий, feature flags и A/B-тесты в одном месте, с данными на вашем сервере. Плата за это - тяжесть: 30 контейнеров и больше 12 GiB в простое, отдельная виртуалка на 16 GB и небыстрая установка. В нашей серии это самый ресурсоемкий компонент, зато он закрывает аналитическую часть Intercom, которую helpdesk-системы не делают. Если нужна только посещаемость - берите Plausible; если нужна настоящая продуктовая аналитика без подписки - PostHog оправдывает свой вес.
Рекомендуемая конфигурация для установки:
6 vCPU · 16 ГБ RAM · 100 ГБ NVMe
Не хотите устанавливать вручную?
Запустите PostHog на этой конфигурации автоматически - от 2 250 ₽/мес.
Этот стек у нас запущен на отдельной виртуалке CPU6-RAM16-DISK100 со встроенным Caddy и TLS. Нашли баг в гайде - напишите, поправим в течение дня.