Plausible Analytics в Docker Compose: готовый файл
Google Analytics тянет за собой cookie-баннер, жалобы на GDPR и панель, в которой без пол-литра не разберёшься. Если вам нужны просто трафик, источники и конверсии — без слежки за пользователями и без каталога отчётов на сто вкладок, — Plausible Analytics закрывает вопрос за один вечер. Ниже рабочий docker-compose.yml, который поднимает его на своём сервере вместе с базами данных и SSL.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Plausible и из чего он состоит
Plausible — open-source веб-аналитика, которая не использует cookies, не собирает fingerprint устройства и не требует баннера согласия почти нигде (легальное основание — "legitimate interest", а не персональные данные). Дашборд открывается на одном экране: посетители, источники трафика, страницы, страны, устройства, цели. Никакого drill-down на десять уровней — и в этом весь смысл: метрики, которые реально смотрят каждый день, а не тонут в отчётах.
Технически self-hosted Plausible Community Edition — это три компонента:
- Plausible (Elixir/Phoenix) — сам сервис: UI, API, приём событий, скрипт трекера.
- PostgreSQL — хранит аккаунты, сайты, настройки, цели.
- ClickHouse — колоночная БД, где лежат сами события (хиты). Именно ClickHouse даёт Plausible скорость на больших объёмах трафика без сложного тюнинга — если интересно, почему для аналитики берут именно колоночные СУБД, у нас есть отдельный разбор ClickHouse против PostgreSQL для аналитики.
Всё это разворачивается одним docker compose up, но нюансы есть — особенно с ClickHouse, который по умолчанию пишет логи так, что за месяц съедает гигабайты диска на пустом месте.
Требования к серверу
Plausible CE — не тяжёлый сервис, но ClickHouse и Postgres в паре хотят оперативку под себя, а не под "остаток".
| Ресурс | Минимум | Комфортно |
|---|---|---|
| RAM | 2 ГБ | 4 ГБ и больше |
| CPU | 1 vCPU | 2 vCPU |
| Диск | 20 ГБ SSD | 40+ ГБ SSD |
| ОС | Ubuntu 24.04 / Debian 12 | — |
Цифры ориентировочные: сайт с парой сотен визитов в сутки спокойно живёт на 2 ГБ, а вот несколько высоконагруженных сайтов на одном инстансе Plausible уже просят 4-8 ГБ — ClickHouse активно кэширует в память. На VPS с диском на NVMe вся система заводится за 3-5 минут.
Понадобится Docker и Docker Compose Plugin. Если ставите с нуля:
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
docker compose version
Нужен также домен, указывающий A-записью на IP сервера — Plausible требует HTTPS для корректной работы трекера в некоторых браузерах и для нормального выпуска сертификата через Caddy.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверГотовый docker-compose.yml
Структура каталога:
plausible/
├── docker-compose.yml
├── .env
└── clickhouse/
├── clickhouse-config.xml
└── clickhouse-user-config.xml
Создайте docker-compose.yml:
services:
plausible_db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
plausible_events_db:
image: clickhouse/clickhouse-server:24-alpine
restart: unless-stopped
volumes:
- event-data:/var/lib/clickhouse
- event-logs:/var/log/clickhouse-server
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
plausible:
image: ghcr.io/plausible/community-edition:v2.1
restart: unless-stopped
command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
env_file:
- .env
ports:
- "127.0.0.1:8000:8000"
volumes:
db-data:
event-data:
event-logs:
Порт Plausible нарочно опубликован только на 127.0.0.1 — наружу его выпускает Caddy по HTTPS, напрямую по HTTP сервис снаружи не торчит. Тег образа ghcr.io/plausible/community-edition стоит свериться на ghcr.io/plausible/community-edition — проект активно версионируется, и на момент, когда вы это читаете, актуальный тег может отличаться.
Файлы для ClickHouse — без них сервис будет писать подробные query-логи и потихоньку забивать диск:
clickhouse/clickhouse-config.xml:
<?xml version="1.0"?>
<clickhouse>
<logger>
<level>warning</level>
<console>true</console>
</logger>
</clickhouse>
clickhouse/clickhouse-user-config.xml:
<?xml version="1.0"?>
<clickhouse>
<profiles>
<default>
<log_queries>0</log_queries>
<log_query_threads>0</log_query_threads>
</default>
</profiles>
</clickhouse>
Переменные окружения (.env)
Минимально Plausible требует BASE_URL и SECRET_KEY_BASE. Сгенерировать ключ:
openssl rand -base64 48 | tr -d '\n'
.env:
BASE_URL=https://analytics.example.com
SECRET_KEY_BASE=вставьте_сгенерированный_ключ
POSTGRES_PASSWORD=сложный_пароль_для_postgres
DATABASE_URL=postgres://postgres:сложный_пароль_для_postgres@plausible_db:5432/plausible_db
CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
DISABLE_REGISTRATION=true
DISABLE_REGISTRATION=true закрывает саморегистрацию после того, как вы создадите первый (админский) аккаунт — иначе панель будет открыта для регистрации всем, кто найдёт URL.
Если нужна отправка почтовых уведомлений (weekly reports, приглашения в команду), добавьте SMTP-блок — Plausible поддерживает стандартные переменные MAILER_ADAPTER=SMTP, SMTP_HOST_ADDR, SMTP_HOST_PORT, SMTP_USER_NAME, SMTP_USER_PWD. Без них сервис прекрасно работает — просто письма не будут уходить.
Reverse proxy и SSL через Caddy
Самый быстрый способ получить HTTPS без ручной возни с сертификатами — Caddy: он сам выпускает и продлевает Let's Encrypt. Подробный разбор установки есть в статье про Caddy с авто-SSL на Ubuntu 24.04, здесь — минимальный конфиг конкретно под Plausible.
/etc/caddy/Caddyfile:
analytics.example.com {
reverse_proxy 127.0.0.1:8000
}
Перезапустить:
sudo systemctl reload caddy
Всё — Caddy сам получит сертификат при первом обращении к домену и будет продлевать его без вашего участия. Если вместо Caddy у вас уже стоит nginx с другими сайтами на сервере, добавьте туда обычный proxy_pass на 127.0.0.1:8000 и получите сертификат через certbot — принцип тот же.
Первый запуск, подключение сайта и обновления
Поднимаем стек:
docker compose up -d
docker compose logs -f plausible
Первый запуск займёт минуту-две — Plausible накатывает миграции в Postgres и создаёт схему в ClickHouse. Когда в логах появится Access PlausibleWeb.Endpoint, откройте https://analytics.example.com/register и создайте первого пользователя — это будет админ инстанса.
Добавление сайта: в панели + Add website, укажите домен — Plausible выдаст сниппет для вставки в <head>:
<script defer data-domain="mysite.com" src="https://analytics.example.com/js/script.js"></script>
Скрипт весит меньше 1 КБ (у трекера Plausible нет тяжёлых зависимостей — это одна из причин, почему выбирают его, а не Google Analytics), не ставит cookies и не блокируется большинством adblock-листов так же агрессивно, как GA — хотя часть блокировщиков всё же режет любые сторонние аналитические скрипты, это стоит держать в уме и при желании раздавать скрипт с вашего же домена через reverse proxy.
Обновление до новой версии — обычная пересборка:
docker compose pull
docker compose up -d
Миграции применяются автоматически при рестарте контейнера plausible — это заложено в команду db migrate в compose-файле.
Бэкап — это по сути бэкап volume db-data (Postgres) и event-data (ClickHouse). Быстрый снапшот:
docker compose stop plausible
docker run --rm -v plausible_db-data:/data -v $(pwd):/backup alpine \
tar czf /backup/plausible-db-$(date +%F).tar.gz -C /data .
docker compose start plausible
Для регулярных автоматических бэкапов volume'ов на сервере разумнее не городить cron-скрипты руками, а посмотреть готовую схему в статье как настроить бэкап Docker volume на VPS — там же разобраны частые грабли вроде бэкапа "на живую" без остановки контейнера.
Если для аналитики вам всё же нужны более детальные отчёты (воронки, heatmaps, session replay) — это не про Plausible, для таких задач ближе Matomo; сравнение подходов есть в статье про установку Matomo на Ubuntu 24.04. Но если цель — быстрый, честный по приватности дашборд без лишнего веса, Plausible почти всегда лучший баланс.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Plausible работает без cookie-баннера — это законно?
Да, для базовой аналитики без персональных данных и cookies большинство юрисдикций (включая GDPR) не требует согласия — Plausible специально спроектирован под это: нет fingerprinting, нет cross-site трекинга, IP не хранится в сыром виде.
Можно ли обойтись без ClickHouse и упростить стек?
Нет — начиная со второй версии Plausible CE ClickHouse обязателен, это основное хранилище событий. Убрать его нельзя, но настройка из этой статьи (clickhouse-config.xml с отключением логов) держит его аккуратным по месту на диске.
Сколько сайтов можно добавить на один self-hosted инстанс?
Технически ограничений в коде нет — упирается в ресурсы сервера. Для 5-10 сайтов среднего трафика 4 ГБ RAM обычно достаточно с запасом, но конкретная цифра сильно зависит от посещаемости.
Что делать, если после docker compose up -d контейнер plausible падает в рестарт-луп?
Чаще всего причина — не готова база при первом старте или неверный DATABASE_URL/CLICKHOUSE_DATABASE_URL в .env. Смотрите docker compose logs plausible — там обычно явно указано, до какого шага миграции дошло дело.
Нужен ли отдельный SMTP-сервер?
Только если хотите weekly email-отчёты и приглашения в команду по почте. Без настроенного MAILER_ADAPTER сама аналитика и дашборд работают полностью, просто без исходящих писем.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →