Установка Plausible Analytics на Debian 12 с Docker
Почему Plausible?
Plausible — это открытая аналитика, ориентированная на конфиденциальность. Она лёгкая, не использует куки по умолчанию и совместима с GDPR. Это удобная альтернатива Google Analytics, если вы хотите собирать только необходимые данные и хранить их самостоятельно.
Important: этот гайд предполагает владение базовыми навыками работы с Linux, sudo, Docker и редактированием текстовых файлов.
Основные варианты использования
- Самостоятельный хостинг для полного контроля данных
- Быстрый развёртывание с Docker Compose
- Интеграция с Google Search Console и импортом данных из Google Analytics
Предварительные требования
- Сервер с Debian 12. Названия пакетов и команды проверены для этой версии.
- Пользователь с sudo (не root).
- FQDN вроде
plausible.example.com, указывающий на сервер. - UFW (Uncomplicated Firewall) включён и настроен.
- Обновите систему:
$ sudo apt update && sudo apt upgrade
- Установите необходимые утилиты:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Примечание: некоторые пакеты могут быть уже установлены.
Шаг 1 — Настройка firewall (UFW)
Проверьте статус UFW:
$ sudo ufw status
Ожидаемый вывод при выключенном UFW:
Status: inactive
Разрешите SSH, чтобы не потерять доступ при включении фаервола:
$ sudo ufw allow OpenSSH
Разрешите HTTP и HTTPS:
$ sudo ufw allow http
$ sudo ufw allow https
Включите UFW:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Проверьте статус снова:
$ sudo ufw status
Ожидаемый пример вывода показывает разрешённые порты 22, 80 и 443.
Note: если вы планируете временно открывать порт 8000 для отладки, добавьте правило sudo ufw allow 8000.
Шаг 2 — Установка Git
Git нужен для клонирования официального репозитория Plausible.
$ sudo apt install git
Проверьте версию:
$ git --version
Настройте имя и email (локально или глобально):
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Шаг 3 — Установка Docker и Docker Compose
Добавьте официальный GPG-ключ Docker:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Добавьте репозиторий Docker:
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Установите Docker Engine и плагины:
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверьте установку:
$ docker --version
Добавьте пользователя в группу docker, чтобы не использовать sudo:
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
Важно: при добавлении в группу docker потребуется новая сессия или повторный вход.
Шаг 4 — Установка Nginx (актуальная версия)
Debian 12 может поставляться со старой версией Nginx. Чтобы установить актуальную стабильную ветку, добавим официальный репозиторий Nginx.
Импорт ключа:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Обновите и установите:
$ sudo apt update
$ sudo apt install nginx
Проверьте версию и запустите сервис:
$ sudo nginx -v
$ sudo systemctl start nginx
$ sudo systemctl status nginx
Если всё в порядке, Nginx будет работать и слушать 80/443.
Шаг 5 — Скачивание Plausible
Клонируйте официальное хранилище для самостоятельного хостинга:
$ git clone https://github.com/plausible/hosting
Перейдите в папку:
$ cd hosting
В этой директории находятся docker-compose.yml и plausible-conf.env.
Шаг 6 — Настройка Plausible
Файлы, на которые стоит обратить внимание:
docker-compose.yml— описание сервисов: Plausible, PostgreSQL, ClickHouse и опционально SMTP.plausible-conf.env— переменные окружения для настройки приложения.
Генерация секретного ключа для приложения:
$ openssl rand -base64 64 | tr -d '\n' ; echo
Скопируйте результат и откройте plausible-conf.env:
$ nano plausible-conf.env
Пример значимых переменных (отредактируйте под ваш домен):
BASE_URL=https://plausible.example.com
SECRET_KEY_BASE=<ваш-секрет-ключ>
PORT=8000
Опции регистрации и верификации:
DISABLE_REGISTRATION=true
ENABLE_EMAIL_VERIFICATION=true
Конфигурация SMTP (пример Amazon SES):
[email protected]
MAILER_NAME=Howtforge
SMTP_HOST_ADDR=email-smtp.us-west-2.amazonaws.com
SMTP_HOST_PORT=587
SMTP_USER_NAME=
SMTP_USER_PWD=
SMTP_HOST_SSL_ENABLED=1
SMTP_RETRIES=2
Важно: храните секреты надёжно и не выкладывайте plausible-conf.env в открытые репозитории.
Настройка Google Search Console
Plausible может показывать поисковые фразы из Google Search Console. Для этого нужно создать проект в Google API Console и настроить OAuth.
Короткий план действий:
- Создайте проект в Google API Console.
- Включите Google Search Console API.
- Настройте экран согласия (OAuth consent) — добавьте домен в Authorized domains.
- Создайте credentials → OAuth Client ID → Web application.
- Сохраните Client ID и Client Secret и добавьте в
plausible-conf.env:
GOOGLE_CLIENT_ID=.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=
Если приложение находится в статусе Testing, добавьте своих пользователей в раздел Test users, чтобы обходить проверку.

Описание изображения: Скриншот создания проекта в Google API Console, форма ввода имени проекта.

Описание изображения: Панель включения API — выделен Google Search Console API.

Описание изображения: Кнопка Enable для выбранного API.

Описание изображения: Выбор типа пользователя для экрана согласия OAuth.

Описание изображения: Заполнение полей названия продукта и контактного email на экране согласия OAuth.

Описание изображения: Выбор типа приложения Web Application при создании OAuth Client ID.

Описание изображения: Форма создания OAuth Client ID с указанием redirect URIs.

Описание изображения: Экран с отображением Client ID и Client Secret для копирования.
Настройка Google Analytics
Для импорта исторических данных включите:
- Google Analytics Reporting API
- Google Analytics API
Переходите в APIs and Services → Enable APIs and Services и включайте перечисленные API.
Шаг 7 — Установка Plausible через Docker
Запустите контейнеры:
$ docker compose up -d
Эта команда создаст PostgreSQL и ClickHouse, выполнит миграции, создаст админа (если указано в env) и запустит сервер на порту 8000.
Проверьте контейнеры:
$ docker ps
Пример вывода показывает контейнеры plausible, clickhouse, postgres и опционально smtp.
Доступ к интерфейсу возможен по адресу http://, если порт открыт.
Шаг 8 — SSL через Certbot (Let’s Encrypt)
Установим Certbot через snapd, чтобы получать актуальную версию.
$ sudo apt install snapd
$ sudo snap install core
$ sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ certbot --version
Получите сертификат:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d plausible.example.com
Certbot сохранит сертификаты в /etc/letsencrypt/live/plausible.example.com.
Сгенерируйте параметр Diffie-Hellman:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Проверьте таймеры systemd для автоматического обновления сертификатов:
$ sudo systemctl list-timers
Выполните пробный запуск обновления:
$ sudo certbot renew --dry-run
Если ошибок нет, автоматическое обновление настроено.
Шаг 9 — Nginx как обратный прокси
Создайте файл конфигурации:
$ sudo nano /etc/nginx/conf.d/plausible.conf
Вставьте конфигурацию (редактируйте домен и пути сертификатов при необходимости):
server {
listen 80; listen [::]:80;
server_name plausible.example.com;
return 301 https://$host$request_uri;
}
server {
server_name plausible.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
access_log /var/log/nginx/plausible.access.log;
error_log /var/log/nginx/plausible.error.log;
ssl_certificate /etc/letsencrypt/live/plausible.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/plausible.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/plausible.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Добавьте в nginx.conf перед include /etc/nginx/conf.d/*.conf; строку:
server_names_hash_bucket_size 64;
Проверьте конфигурацию и перезапустите Nginx:
$ sudo nginx -t
$ sudo systemctl restart nginx
Шаг 10 — Добавление сайта и запуск трекинга
Откройте https://plausible.example.com в браузере. Вы увидите экран регистрации.

Описание изображения: Форма регистрации нового пользователя в Plausible с полями email и пароля.
Нажмите Create my account. Если включена верификация email, Plausible отправит код. Если SMTP не настроен, можно вручную отметить всех пользователей в базе как верифицированных:
$ docker compose exec plausible_db psql -U postgres -d plausible_db -c "UPDATE users SET email_verified = true;"
Добавьте сайт для отслеживания, укажите домен и таймзону.

Описание изображения: Форма добавления сайта с полем домена и выбором часового пояса.
Скопируйте JS-код отслеживания и вставьте его в
вашего сайта.
Описание изображения: Панель с примером JavaScript-кода для вставки в HTML сайта.
После установки код начнёт отправлять события и статистика появится в панели.

Описание изображения: Основной дашборд Plausible с графиком визитов, источниками и страницами.
Критерии приёмки
- Домен
https://plausible.example.comотвечает по HTTPS без предупреждений браузера. - Docker-контейнеры Plausible, Postgres и ClickHouse запущены и в статусе Up.
- Веб-интерфейс Plausible доступен и вы можете войти под админом.
- Сайт добавлен, трекинг-код вставлен на сайт и события отображаются в панели.
- Автообновление сертификатов Certbot работает (прохождение dry-run).
Контрольный список по ролям
Администратор (DevOps):
- Подготовил DNS и проверил FQDN.
- Настроил UFW и открыл нужные порты.
- Настроил автоматическое обновление Certbot.
- Поставил бэкап для PostgreSQL и ClickHouse.
Разработчик (Frontend):
- Вставил скрипт Plausible в всех страниц.
- Проверил выдачу событий в режиме реального времени.
Служба поддержки (Support):
- Проверила создание аккаунта и верификацию email.
- Описала порядок отката при проблемах с SMTP.
Шаблоны команд и полезные сниппеты
Быстрый просмотр логов контейнера Plausible:
$ docker compose logs -f plausible
Выполнение миграций вручную (если потребуется):
$ docker compose exec plausible /bin/sh -c "bundle exec rake db:migrate"
Экспорт бэкапа PostgreSQL:
$ docker compose exec plausible_db pg_dump -U postgres plausible_db > plausible_db_backup.sql
Резервное копирование ClickHouse требует отдельного подхода; планируйте replicate/backup через инструменты ClickHouse.
Сценарии отказа и откат
Симптом: Plausible недоступен после обновления.
- Проверьте статус контейнеров:
docker compose ps. - Просмотрите логи:
docker compose logs -f plausibleиjournalctl -u nginx. - Если проблема в миграциях — запустите бэкап БД до миграций и откатите изменения.
- Откат версии контейнера: в
docker-compose.ymlукажите предыдущий тег образа иdocker compose pull && docker compose up -d. - Если проблема с сертификатом — временно перенаправьте Nginx на HTTP (порт 8000) и исправьте Certbot.
Важно: всегда делайте бэкап баз данных перед критическими обновлениями.
Безопасность и приватность
- Plausible по умолчанию минимизирует сбор персональных данных. Проверьте настройки конфиденциальности в интерфейсе.
- Храните
plausible-conf.envи секреты под управлением секретного хранилища (Vault, AWS Secrets Manager или аналог). - Подумайте о шифровании бэкапов и ограничении доступа к бэкап-файлам.
- Для SMTP используйте отдельную учетную запись и минимальные права.
Privacy / GDPR: Plausible упрощает соблюдение GDPR за счёт анонимизации и отказа от куки. Всё же документируйте, какие данные вы собираете, и обновите политику конфиденциальности сайта.
Когда Plausible не подходит
- Если вам нужны очень детализированные пользовательские сессии и трассировки (Plausible ориентирован на агрегированную аналитику).
- Если требуется хранение данных на уровне отдельных пользователей с длительной ретеншн-политикой и сложные сегменты — возможно, лучше подойдёт платная аналитика или кастомное решение.
Альтернатива: Matomo (ранее Piwik) даёт больше функций и плагинов, но требует более ресурсоёмкого развёртывания.
Мини‑методология внедрения
- Подготовьте инфраструктуру и DNS.
- Разверните Plausible в тестовом окружении, проверьте трекинг на тестовом домене.
- Перенесите в прод, настройте SSL и мониторинг.
- Настройте бэкапы и восстановление.
- Мониторьте метрики стабильности и загрузки ClickHouse/Postgres.
Факто‑бокс
- Основные сервисы: Plausible (веб-приложение), PostgreSQL (метаданные), ClickHouse (таймсерии).
- Порт по умолчанию: 8000 (внутренне). Nginx проксирует на 443/80.
- SSL: Let’s Encrypt через Certbot (snap).
Тестовые случаи и приёмка
- После установки убедиться, что страница логина доступна и создаётся админ.
- Вставить трекинг-код на тестовую страницу и проверить, что метрика посещения появляется в панели.
- Проверить отправку писем восстановления пароля через SMTP.
- Выполнить
certbot renew --dry-runи убедиться в успешном прохождении.
Короткое объявление (для внутреннего канала, 100–200 слов)
Развернут Plausible Analytics на Debian 12 с Docker и Nginx. Решение приватной аналитики позволяет собирать агрегированные данные без использования куки и хранить их на собственном сервере. Установлены Docker, Nginx, Certbot и настроен обратный прокси по HTTPS. Выполнены базовые проверки: запуск контейнеров, доступ по HTTPS, добавление тестового сайта и проверка трекинга. Далее — настроить регулярное резервное копирование PostgreSQL и ClickHouse, а также мониторинг использования ресурсов. Если нужно, могу подготовить playbook для автоматизации развёртывания и бэкапов.
Полезные ссылки и миграционные заметки
- Репозиторий Plausible Hosting: https://github.com/plausible/hosting
- Документация Plausible: посетите официальный репозиторий для деталей по обновлениям и конфигурации.
Notes: при обновлениях Plausible следите за изменениями в docker-compose.yml и plausible-conf.env — иногда добавляются новые переменные.
Заключение
В этой инструкции показано, как быстро развернуть Plausible Analytics на Debian 12 с использованием Docker и Nginx. Основные этапы: подготовка окружения, установка Docker и Nginx, настройка переменных окружения Plausible, получение SSL-сертификата через Certbot и конфигурация Nginx в качестве обратного прокси. Дополнительно приведены контрольные списки, сценарии отказа, рекомендации по безопасности и тест-кейсы. Если нужно — могу сгенерировать автоматизированный Ansible playbook или systemd unit‑файлы для мониторинга и бэкапов.
Спасибо за внимание. Если хотите, помогу адаптировать этот гайд под вашу инфраструктуру.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента