Гид по технологиям

Установка Plausible Analytics на Debian 12 с Docker

• 8 min read • DevOps • Обновлено 26 Nov 2025
Plausible на Debian 12: установка через Docker
Plausible на Debian 12: установка через Docker

Почему Plausible?

Plausible — это открытая аналитика, ориентированная на конфиденциальность. Она лёгкая, не использует куки по умолчанию и совместима с GDPR. Это удобная альтернатива Google Analytics, если вы хотите собирать только необходимые данные и хранить их самостоятельно.

Important: этот гайд предполагает владение базовыми навыками работы с Linux, sudo, Docker и редактированием текстовых файлов.

Основные варианты использования

  • Самостоятельный хостинг для полного контроля данных
  • Быстрый развёртывание с Docker Compose
  • Интеграция с Google Search Console и импортом данных из Google Analytics

Предварительные требования

  1. Сервер с Debian 12. Названия пакетов и команды проверены для этой версии.
  2. Пользователь с sudo (не root).
  3. FQDN вроде plausible.example.com, указывающий на сервер.
  4. UFW (Uncomplicated Firewall) включён и настроен.
  5. Обновите систему:
$ sudo apt update && sudo apt upgrade
  1. Установите необходимые утилиты:
$ 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.

Короткий план действий:

  1. Создайте проект в Google API Console.
  2. Включите Google Search Console API.
  3. Настройте экран согласия (OAuth consent) — добавьте домен в Authorized domains.
  4. Создайте credentials → OAuth Client ID → Web application.
  5. Сохраните Client ID и Client Secret и добавьте в plausible-conf.env:
GOOGLE_CLIENT_ID=.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=

Если приложение находится в статусе Testing, добавьте своих пользователей в раздел Test users, чтобы обходить проверку.

Создание проекта в Google API и экран согласия

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

Включение Search Console API

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

Включение API

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

Тип пользователя OAuth

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

Экран согласия OAuth

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

Создание OAuth Client ID

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

Создание учетных данных OAuth

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

Сохранение Client ID и секретов

Описание изображения: Экран с отображением 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://:8000, если порт открыт.


Шаг 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

Описание изображения: Форма регистрации нового пользователя в 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;"

Добавьте сайт для отслеживания, укажите домен и таймзону.

Добавление сайта в Plausible

Описание изображения: Форма добавления сайта с полем домена и выбором часового пояса.

Скопируйте JS-код отслеживания и вставьте его в вашего сайта.

JavaScript код Plausible для вставки

Описание изображения: Панель с примером JavaScript-кода для вставки в HTML сайта.

После установки код начнёт отправлять события и статистика появится в панели.

Дашборд Plausible

Описание изображения: Основной дашборд Plausible с графиком визитов, источниками и страницами.


Критерии приёмки

  1. Домен https://plausible.example.com отвечает по HTTPS без предупреждений браузера.
  2. Docker-контейнеры Plausible, Postgres и ClickHouse запущены и в статусе Up.
  3. Веб-интерфейс Plausible доступен и вы можете войти под админом.
  4. Сайт добавлен, трекинг-код вставлен на сайт и события отображаются в панели.
  5. Автообновление сертификатов 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 недоступен после обновления.

  1. Проверьте статус контейнеров: docker compose ps.
  2. Просмотрите логи: docker compose logs -f plausible и journalctl -u nginx.
  3. Если проблема в миграциях — запустите бэкап БД до миграций и откатите изменения.
  4. Откат версии контейнера: в docker-compose.yml укажите предыдущий тег образа и docker compose pull && docker compose up -d.
  5. Если проблема с сертификатом — временно перенаправьте Nginx на HTTP (порт 8000) и исправьте Certbot.

Важно: всегда делайте бэкап баз данных перед критическими обновлениями.


Безопасность и приватность

  • Plausible по умолчанию минимизирует сбор персональных данных. Проверьте настройки конфиденциальности в интерфейсе.
  • Храните plausible-conf.env и секреты под управлением секретного хранилища (Vault, AWS Secrets Manager или аналог).
  • Подумайте о шифровании бэкапов и ограничении доступа к бэкап-файлам.
  • Для SMTP используйте отдельную учетную запись и минимальные права.

Privacy / GDPR: Plausible упрощает соблюдение GDPR за счёт анонимизации и отказа от куки. Всё же документируйте, какие данные вы собираете, и обновите политику конфиденциальности сайта.


Когда Plausible не подходит

  • Если вам нужны очень детализированные пользовательские сессии и трассировки (Plausible ориентирован на агрегированную аналитику).
  • Если требуется хранение данных на уровне отдельных пользователей с длительной ретеншн-политикой и сложные сегменты — возможно, лучше подойдёт платная аналитика или кастомное решение.

Альтернатива: Matomo (ранее Piwik) даёт больше функций и плагинов, но требует более ресурсоёмкого развёртывания.


Мини‑методология внедрения

  1. Подготовьте инфраструктуру и DNS.
  2. Разверните Plausible в тестовом окружении, проверьте трекинг на тестовом домене.
  3. Перенесите в прод, настройте SSL и мониторинг.
  4. Настройте бэкапы и восстановление.
  5. Мониторьте метрики стабильности и загрузки 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‑файлы для мониторинга и бэкапов.

Спасибо за внимание. Если хотите, помогу адаптировать этот гайд под вашу инфраструктуру.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро