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

Развёртывание Plausible Analytics на Ubuntu 22.04 через Docker

7 min read DevOps Обновлено 07 Nov 2025
Plausible: self-host на Ubuntu 22.04 через Docker
Plausible: self-host на Ubuntu 22.04 через Docker

Plausible — лёгкая и приватная альтернатива Google Analytics, которую можно запустить самостоятельно на Ubuntu 22.04 с помощью Docker Compose. В этой статье подробно показано, как установить Docker, скачать исходники Plausible, настроить переменные окружения, запустить контейнеры, пробросить приложение через Apache2 как обратный прокси и получить бесплатный SSL от Let’s Encrypt. В конце — чек-листы, рекомендации по безопасности, резервному копированию и отладке.

Введение

Plausible — это открытое веб‑аналитическое решение, ориентированное на конфиденциальность и простоту. Оно предоставляет ключевые метрики на одной странице и подходит для стартапов, фрилансеров и блогеров. Пояснение: Docker — среда для упаковки приложений в контейнеры; Docker Compose — инструмент для описания и запуска многоконтейнерных приложений.

Логотип Plausible и обзор панели

Что вы получите после прохождения руководства

  • Самостоятельно развёрнутая инстанция Plausible на Ubuntu 22.04.
  • Запуск через Docker Compose с базой PostgreSQL.
  • Apache2 в роли обратного прокси и SSL от Let’s Encrypt.
  • Практические чек‑листы для администратора и разработчика.
  • Руководство по резервным копиям, обновлениям и устранению проблем.

Требования

  • Сервер с Ubuntu 22.04 (в примерах используется hostname plausible-server).
  • Нерадовый пользователь с правами sudo.
  • Домен или поддомен, указывающий на IP сервера (в примерах plausible.howtoforge.local).
  • Доступ в интернет для загрузки образов Docker и сертификатов.

Установка Docker CE

Plausible удобно запускать в контейнерах. Сначала установите Docker Engine и плагин Docker Compose. Введите команды на сервере под пользователем с sudo.

Установите зависимости:

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Установка зависимостей apt

Добавьте GPG‑ключ Docker и официальный репозиторий:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновите индекс пакетов:

sudo apt update

Вы увидите, что репозиторий Docker добавлен:

Проверка репозиториев Docker

Установите Docker и плагин Compose:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Подтвердите установку “y”.

Установка Docker и Compose

Проверьте статус сервиса Docker:

sudo systemctl is-enabled docker
sudo systemctl status docker

Ожидаемый результат — сервис включён и запущен:

Статус Docker

Советы по безопасности: добавьте вашего пользователя в группу docker только если понимаете риски; выполнение докер‑команд от не‑root упрощает работу, но даёт привилегии, эквивалентные root.

Скачивание и конфигурация Plausible

Скачайте исходники Plausible и подготовьте переменные окружения, включая администратора и SECRET_KEY_BASE.

Перейдите в /opt и клонируйте репозиторий hosting:

cd /opt
sudo git clone https://github.com/plausible/hosting plausible

Сгенерируйте SECRET_KEY_BASE — случайную строку, используемую приложением для криптографии:

openssl rand 64 | base64 -w 0 ; echo

Сохраните полученную строку — она понадобится далее.

Клонирование репозитория Plausible

Отредактируйте файл конфигурации variables:

cd /opt/plausible
sudo nano plausible-conf.env

Пример содержимого (замените на свои значения):

ADMIN_USER_EMAIL=[email protected]
ADMIN_USER_NAME=alice
ADMIN_USER_PWD=admin_alice_password
BASE_URL=https://plausible.howtoforge.local
SECRET_KEY_BASE=WI+Dzf5ZsvbL+tapfDuIyOr2rhQqcss10XnQkX3b/BjOucweWvHjqpFtb9kV69O1PwvbOxaBvotlGbh6vry//Q==

Важно: храните файл с чувствительными данными в защищённом месте и ограничьте доступ по правам файловой системы.

Запуск Plausible через Docker Compose

Перейдите в каталог инсталляции и отредактируйте docker-compose.yml:

cd /opt/plausible
sudo nano docker-compose.yml

По умолчанию в секции plausible измените ports так, чтобы сервис слушал только на localhost:8000. Это позволяет делать обратный прокси на уровне хоста.

plausible:
......
    ports:
      - 127.0.0.1:8000:8000
......

Сохраните файл.

Редактирование docker-compose.yml

Запустите сборку и развёртывание:

sudo docker compose up -d

Docker скачает необходимые образы (PostgreSQL, Redis, Plausible и др.) и создаст тома.

Вы увидите ход развёртывания в логах:

Логи развёртывания Plausible

Проверьте статус контейнеров:

sudo docker compose ps

Список образов:

sudo docker compose images

Проверка доступности приложения локально:

curl http://localhost:8000

Вы должны получить перенаправление на /login.

Настройка Apache2 как обратного прокси

Мы используем Apache2 как внешний обратный прокси. Он принимает HTTPS‑запросы от клиентов, а затем проксирует их на Plausible, запущенный на localhost:8000.

Установите Apache2:

sudo apt install apache2

Установка Apache2

Проверьте, что служба запущена:

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Статус Apache2

Включите необходимые модули Apache2:

sudo a2enmod proxy proxy_http proxy_ajp remoteip headers ssl

Активация модулей Apache

Скопируйте готовый виртуальный хост из репозитория Plausible и отредактируйте его:

sudo cp /opt/plausible/reverse-proxy/apache2/plausible.conf /etc/apache2/sites-available/
sudo nano /etc/apache2/sites-available/plausible.conf

Измените ServerName и ServerAdmin на ваши значения:

ServerAdmin [email protected]
ServerName plausible.howtoforge.local

Активируйте сайт и проверьте синтаксис:

sudo a2ensite plausible.conf
sudo apachectl configtest

Если configtest выводит “Syntax OK”, перезапустите Apache:

sudo systemctl restart apache2

Настройка обратного прокси Apache

Совет: при деплое в продакшене используйте выделенный виртуальный хост и следите за заголовком X‑Forwarded‑For и SSL‑заголовками.

Получение SSL от Let’s Encrypt

Убедитесь, что DNS для domain указывает на сервер и почта для регистрации у вас есть. Установите Certbot и плагин для Apache:

sudo apt install certbot python3-certbot-apache

Установка certbot

Получите сертификат для вашего домена:

sudo certbot --apache -d plausible.howtoforge.local

Certbot автоматически настроит перенаправление HTTP→HTTPS и обновит конфигурацию Apache.

После успешного получения вы увидите путь к сертификатам и рекомендации по их обновлению:

Congratulations! You have successfully enabled https://plausible.howtoforge.local

IMPORTANT NOTES:
 - Your certificate and chain have been saved at: /etc/letsencrypt/live/plausible.howtoforge.local/fullchain.pem
 - Your key file has been saved at: /etc/letsencrypt/live/plausible.howtoforge.local/privkey.pem
 - To non‑interactively renew all of your certificates, run "certbot renew"

Важно: настройте автоматическое обновление сертификатов через cron или systemd таймер. Certbot обычно создаёт системный таймер для автоматического обновления.

Доступ к Plausible

Откройте браузер и перейдите по адресу вашего домена, например https://plausible.howtoforge.local/. Введите учётные данные администратора, которые вы указали в plausible-conf.env.

Страница входа Plausible

После входа вы увидите панель Plausible:

Панель Plausible

Добавление сайтов для отслеживания

На панели нажмите Add a website. Введите домен сайта и выберите период сбора данных. Система выдаст фрагмент JavaScript для вставки на страницу.

Панель Plausible — добавить сайт

Добавьте snippet на ваш сайт и нажмите Start collecting data. Статус добавленных доменов отобразится в списке.

Добавление сайта — шаги

Добавление фрагмента отслеживания

Список сайтов Plausible

Лучшие практики и рекомендации

  • Используйте подсетевые правила межсетевого экрана: откройте только необходимые порты (80/443 для HTTP/HTTPS и закрыть 8000 для внешнего доступа).
  • Храните конфигурационные файлы с секретами в каталоге с правами 600.
  • Делайте регулярные резервные копии баз данных и томов Docker.
  • Обновляйте образы Docker в тестовой среде перед продакшеном.
  • Логируйте доступы прокси и настройки аудита.

Резервное копирование и восстановление

Резервное копирование — критично для сохранения данных аналитики.

Резервное копирование томов Docker (пример PostgreSQL тома):

# Остановите контейнеры перед бэкапом для согласованности
sudo docker compose down

# Создайте архив тома
sudo tar -czvf pgdata-backup-$(date +%F).tar.gz -C /var/lib/docker/volumes//_data .

Восстановление:

# Распакуйте содержимое в каталог тома
sudo tar -xzvf pgdata-backup-2023-10-01.tar.gz -C /var/lib/docker/volumes//_data
sudo docker compose up -d

Примечание: пути томов зависят от вашей конфигурации Docker. Тщательно проверяйте права и владельца файлов.

Обновление Plausible

Обновление обычно включает получение новых образов и перезапуск сервисов.

Процесс:

cd /opt/plausible
sudo git pull origin main
sudo docker compose pull
sudo docker compose up -d

Перед обновлением выполните бэкап базы данных и проверьте совместимость версии конфигурации с новой версией Plausible.

Безопасность и жёсткое усиление

  • Ограничьте доступ к серверу по SSH ключам и отключите вход по паролю.
  • Примените fail2ban для защиты от брутфорса.
  • Включите HTTP Strict Transport Security (HSTS) в конфигурации Apache.
  • Минимизируйте набор привилегий в контейнерах.
  • Проверяйте зависимости на уязвимости (например, с помощью trivy).

Пример HSTS в конфигурации Apache:

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

Отладка и устранение проблем

Сценарии и команды для быстрых проверок:

  • Проверить логи контейнеров Plausible:
sudo docker compose logs plausible --follow
  • Проверить логи Apache:
sudo journalctl -u apache2 --since "1 hour ago"
sudo tail -n 200 /var/log/apache2/error.log
  • Если приложение не отвечает, проверьте проброс портов и что Plausible слушает на 127.0.0.1:8000:
sudo ss -tulpn | grep 8000
curl -v http://localhost:8000
  • Проблемы с SSL: проверьте путь сертификатов и права доступа, и пытайтесь вручную запустить certbot renew –dry-run.

Инцидентный план и откат

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

  1. Отключите внешние изменения: при необходимости переведите систему в maintenance mode.
  2. Соберите логи (контейнеры, Apache, systemd).
  3. Восстановите базу из последнего валидного бэкапа на тестовом хосте и подтвердите целостность.
  4. При критическом баге откатите образы до ранее работающей версии:
sudo docker compose pull plausible:<старый-тег>
sudo docker compose up -d
  1. После восстановления проведите пост‑мортем и обновите playbook.

Чек‑листы по ролям

Администратор (DevOps):

  • Установить Docker и Apache.
  • Настроить firewall и SSH.
  • Настроить автоматическое обновление certbot.
  • Настроить бэкапы томов и баз.
  • Настроить мониторинг (процессы, диски, сеть).

Владелец сайта / продукт‑менеджер:

  • Убедиться, что домен и DNS правильно настроены.
  • Проверить доступ администратора Plausible.
  • Добавить сайты для отслеживания и вставить snippet.
  • Проверить соответствие политики конфиденциальности.

Разработчик фронтенда:

  • Вставить snippet Plausible на все страницы.
  • Проверить, что скрипт загружается по HTTPS.
  • Тестировать сбор данных (режим инкогнито, тестовые события).

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

  • Приложение доступно по HTTPS на домене.
  • Вход в панель администратора проходит с заданными учётными данными.
  • События с тестового сайта доходят до панели Plausible.
  • Резервная копия базы успешно создаётся и восстанавливается на тестовом хосте.

Мини‑методология проверки перед вводом в эксплуатацию

  1. Тестовый прогон: развернуть на staging с теми же параметрами и провести smoke‑test.
  2. Выполнить бэкап исходного состояния.
  3. Перенести DNS и проверить SSL в рабочем окружении.
  4. Мониторинг и алерты.

Модель принятия решений — какой прокси выбрать

flowchart TD
  A[Нужно защитить Plausible HTTPS] --> B{Выбираем обратный прокси}
  B --> |Простота| C[Apache]
  B --> |Производительность, низкая память| D[NGINX]
  B --> |Kubernetes| E[Ingress Controller]
  C --> F[Используйте mod_proxy и certbot]
  D --> F
  E --> G[Рассмотрите cert-manager]

Короткий глоссарий

  • Docker — платформа контейнеризации приложений.
  • Docker Compose — инструмент для описания многоконтейнерных приложений.
  • Plausible — приватная веб‑аналитика с простым UI.
  • Certbot — клиент для получения сертификатов Let’s Encrypt.

Типичные ошибки и когда метод не сработает

  • DNS не указывает на сервер — certbot не сможет выпустить сертификат.
  • Порт 8000 открыт извне — потенциальный вектор атак.
  • Неправильно указанный SECRET_KEY_BASE — приложение может не стартовать или вести себя некорректно.
  • Недостаток диска в Docker‑томах — потеря записей или отказ БД.

Советы по производительности

  • Выделите отдельный том для PostgreSQL на быстрых дисках.
  • Мониторьте использование памяти контейнеров и при необходимости увеличьте ресурсы.
  • Для высоких нагрузок используйте балансировщик и горизонтальное масштабирование компонентов, поддерживаемых Plausible.

Локальные альтернативы и особенности для России

  • Для локального тестирования используйте /etc/hosts и локальный CA, но для публичного доступа нужен валидный DNS.
  • При выборе провайдера хостинга учитывайте требования по хранению данных и доступности.

Резюме

Вы развернули Plausible Analytics на Ubuntu 22.04 через Docker, настроили Apache как обратный прокси и обеспечили сайт SSL от Let’s Encrypt. Дальше — настройка резервного копирования, мониторинга и планов обновления.

Ключевые следующие шаги:

  • Настройте регулярное резервное копирование и проверьте восстановление.
  • Подключите мониторинг и оповещения.
  • Тестируйте обновления в staging перед prod.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Троян Herodotus: как он работает и как защититься
Кибербезопасность

Троян Herodotus: как он работает и как защититься

Включить новое меню «Пуск» в Windows 11
Windows руководство

Включить новое меню «Пуск» в Windows 11

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти