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

Что вы получите после прохождения руководства
- Самостоятельно развёрнутая инстанция 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
Добавьте 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 и плагин Compose:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-pluginПодтвердите установку “y”.

Проверьте статус сервиса Docker:
sudo systemctl is-enabled docker
sudo systemctl status 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Сохраните полученную строку — она понадобится далее.

Отредактируйте файл конфигурации 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
......Сохраните файл.

Запустите сборку и развёртывание:
sudo docker compose up -dDocker скачает необходимые образы (PostgreSQL, Redis, 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
Проверьте, что служба запущена:
sudo systemctl is-enabled apache2
sudo systemctl status apache2
Включите необходимые модули Apache2:
sudo a2enmod proxy proxy_http proxy_ajp remoteip headers ssl
Скопируйте готовый виртуальный хост из репозитория 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
Совет: при деплое в продакшене используйте выделенный виртуальный хост и следите за заголовком X‑Forwarded‑For и SSL‑заголовками.
Получение SSL от Let’s Encrypt
Убедитесь, что DNS для domain указывает на сервер и почта для регистрации у вас есть. Установите Certbot и плагин для Apache:
sudo apt install certbot python3-certbot-apache
Получите сертификат для вашего домена:
sudo certbot --apache -d plausible.howtoforge.localCertbot автоматически настроит перенаправление 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:

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

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



Лучшие практики и рекомендации
- Используйте подсетевые правила межсетевого экрана: откройте только необходимые порты (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.
Инцидентный план и откат
Краткий план действий при сбое:
- Отключите внешние изменения: при необходимости переведите систему в maintenance mode.
- Соберите логи (контейнеры, Apache, systemd).
- Восстановите базу из последнего валидного бэкапа на тестовом хосте и подтвердите целостность.
- При критическом баге откатите образы до ранее работающей версии:
sudo docker compose pull plausible:<старый-тег>
sudo docker compose up -d- После восстановления проведите пост‑мортем и обновите playbook.
Чек‑листы по ролям
Администратор (DevOps):
- Установить Docker и Apache.
- Настроить firewall и SSH.
- Настроить автоматическое обновление certbot.
- Настроить бэкапы томов и баз.
- Настроить мониторинг (процессы, диски, сеть).
Владелец сайта / продукт‑менеджер:
- Убедиться, что домен и DNS правильно настроены.
- Проверить доступ администратора Plausible.
- Добавить сайты для отслеживания и вставить snippet.
- Проверить соответствие политики конфиденциальности.
Разработчик фронтенда:
- Вставить snippet Plausible на все страницы.
- Проверить, что скрипт загружается по HTTPS.
- Тестировать сбор данных (режим инкогнито, тестовые события).
Критерии приёмки
- Приложение доступно по HTTPS на домене.
- Вход в панель администратора проходит с заданными учётными данными.
- События с тестового сайта доходят до панели Plausible.
- Резервная копия базы успешно создаётся и восстанавливается на тестовом хосте.
Мини‑методология проверки перед вводом в эксплуатацию
- Тестовый прогон: развернуть на staging с теми же параметрами и провести smoke‑test.
- Выполнить бэкап исходного состояния.
- Перенести DNS и проверить SSL в рабочем окружении.
- Мониторинг и алерты.
Модель принятия решений — какой прокси выбрать
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.
Похожие материалы
Троян Herodotus: как он работает и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить