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

Plausible — это открытая, простая и ориентированная на приватность система веб‑аналитики. Она подходит стартапам, фрилансерам и блогерам. Plausible доступен как коммерческий облачный сервис и как self‑hosted версия, которую можно установить на собственный сервер.
В этом руководстве вы научитесь:
- Устанавливать Docker и Docker Compose на Ubuntu 22.04.
- Скачать исходники Plausible и подготовить переменные окружения.
- Запустить Plausible через docker compose.
- Настроить Apache как обратный прокси для Plausible.
- Получить бесплатный SSL от Let’s Encrypt и настроить автоматическое продление.
- Добавлять сайты для отслеживания и тестировать сбор данных.
Важно. Перед началом убедитесь, что у вас есть рабочая резервная копия важных данных и доступ по SSH к серверу с правами sudo.
Основные термины
- Docker — платформа для запуска контейнеров. Коротко: упаковка приложения с зависимостями.
- docker compose — инструмент для оркестрации нескольких контейнеров через YAML-файл.
- Reverse proxy — обратный прокси-сервер, который принимает внешние запросы и перенаправляет их на внутренние сервисы.
Что потребуется
- Сервер под управлением Ubuntu 22.04.
- Ненулевой пользователь с правами sudo.
- Домен или поддомен, указывающий на IP сервера (в примерах — plausible.howtoforge.local).
- Доступ в Интернет для загрузки образов Docker и сертификатов Let’s Encrypt.
Шаг 1. Установка Docker CE
Plausible удобно запускать в контейнерах. Начнём с установки Docker CE (Community Edition) и зависимостей.
- Установите базовые зависимости:
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- Обновите список пакетов и установите Docker и плагин compose:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-pluginПодтвердите установку, когда apt попросит.

- Убедитесь, что сервис Docker запущен и включён:
sudo systemctl is-enabled docker
sudo systemctl status dockerОжидаемый результат — служба активна и включена.

Совет. Если вы хотите запускать docker без sudo для определённого пользователя, добавьте пользователя в группу docker: sudo usermod -aG docker $USER. После этого выйдите и войдите в систему снова.
Шаг 2. Загрузка и подготовка Plausible
- Перейдите в директорию /opt и клонируйте репозиторий hosting Plausible:
cd /opt
sudo git clone https://github.com/plausible/hosting plausible- Сгенерируйте секрет SECRET_KEY_BASE. Он нужен Plausible для защиты сессий и криптографии:
openssl rand 64 | base64 -w 0 ; echoСохраните выведенную строку в надёжном месте — она понадобится в конфигурации.

- Откройте файл конфигурации plausible-conf.env для редактирования:
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==Важно. Выберите сложный пароль для ADMIN_USER_PWD и храните plausible-conf.env в безопасном месте. Файл содержит секреты.
Шаг 3. Настройка docker-compose и запуск Plausible
- Перейдите в каталог с docker-compose.yml и отредактируйте его:
cd /opt/plausible
sudo nano docker-compose.yml- В сервисе plausible задайте проброс портов, чтобы приложение слушало только на локальном интерфейсе. Это важно, чтобы внешние запросы принимал обратный прокси, а не сам контейнер:
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.
Шаг 4. Настройка Apache как обратного прокси
В данном руководстве мы используем Apache в качестве обратного прокси. Если вы предпочитаете Nginx, см. раздел «Альтернативный вариант» ниже.
- Установите Apache:
sudo apt install apache2
- Убедитесь, что служба запущена и включена:
sudo systemctl is-enabled apache2
sudo systemctl status apache2
- Включите модули Apache, необходимые для обратного проксирования и SSL:
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- Активируйте сайт и проверьте конфигурацию Apache:
sudo a2ensite plausible.conf
sudo apachectl configtest
sudo systemctl restart apache2Если тест вернул Syntax OK и служба перезапустилась — прокси настроен.

Совет. Если у вас корпоративный firewall, убедитесь, что порты 80 и 443 открыты.
Шаг 5. Получение SSL от Let’s Encrypt
- Установите certbot и плагин Apache:
sudo apt install certbot python3-certbot-apache
- Запустите certbot для автоматической настройки HTTPS на ваш домен:
sudo certbot --apache -d plausible.howtoforge.localВ процессе certbot запросит контактный e‑mail и согласие с правилами. По завершении вы получите подтверждение об успешной настройке HTTPS и информацию о расположении сертификатов.
Пример итогового сообщения:
Congratulations! You have successfully enabled https://plausible.howtoforge.local
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=plausible.howtoforge.local
IMPORTANT NOTES:
- Congratulations! 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
Your cert will expire on 2022-12-10. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.- Настройте автоматическое продление сертификатов (cron/systemd timer устанавливается автоматически при установке certbot). Для ручной проверки:
sudo certbot renew --dry-runШаг 6. Доступ к Plausible и добавление сайтов
Откройте браузер и перейдите по адресу https://plausible.howtoforge.local. Вы увидите страницу входа. Введите ADMIN_USER_EMAIL и ADMIN_USER_PWD из plausible-conf.env.

После входа вы попадёте в дашборд Plausible.

Чтобы добавить сайт для отслеживания:
- Нажмите Add a website.

- Введите домен сайта, укажите часовой пояс и кликните Add snippet.

- Вставьте JavaScript‑сниппет на все страницы сайта перед закрывающим тегом и нажмите Start collecting data.

Если всё настроено верно, сайт появится в списке.

Альтернативный вариант: Nginx как обратный прокси
Если вы предпочитаете Nginx, конфигурация проще и часто предпочтительнее по производительности. Пример минимальной конфигурации для Nginx:
server {
listen 80;
server_name plausible.howtoforge.local;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}После этого используйте certbot с плагином nginx:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d plausible.howtoforge.localNginx особенно хорош при большом числе соединений и при использовании HTTP/2.
Рекомендации по безопасности и эксплуатации
- Храните plausible-conf.env и ключи в защищённой директории с ограниченными правами доступа (chmod 600).
- Регулярно обновляйте образы Docker:
sudo docker compose pull
sudo docker compose up -d- Настройте резервное копирование баз данных и томов Docker. Простая стратегия:
- Регулярный дамп PostgreSQL через pg_dump.
- Копирование томов Docker на удалённое хранилище.
- Ограничьте доступ к административному интерфейсу через IP‑фильтры или VPN при необходимости.
- Включите мониторинг: используйте Prometheus/Grafana или простые проверки доступности.
- Настройте оповещения о завершении срока действия сертификатов (certbot уже настраивает автоматическое продление, но полезно иметь дублирующие уведомления).
Безопасность — это совокупность мер. Минимум: сложные пароли, SSL, бекапы.
Резервное копирование и восстановление
Минимальная методика бекапа для self‑hosted Plausible:
- Бекап базы данных PostgreSQL:
sudo docker compose exec plausible-db pg_dumpall -U postgres > /root/plausible_pg_dump_$(date +%F).sql- Бекап томов (например, том для данных Postgres и Redis):
sudo docker run --rm --volumes-from plausible-db -v /backup:/backup ubuntu tar czf /backup/postgres_data_$(date +%F).tar.gz /var/lib/postgresql/data- Резервное копирование файлов конфигурации и секретов:
sudo cp /opt/plausible/plausible-conf.env /backup/Восстановление.
- Восстановите конфигурацию и секреты на новом хосте.
- Разверните docker compose и остановите сервисы.
- Восстановите данные PostgreSQL из дампа через psql.
Тестируйте процедуру восстановления в изолированной среде, чтобы убедиться, что она рабочая.
Отладка и часто встречающиеся проблемы
- Проблема: браузер не загружает страницу, curl localhost:8000 работает.
Причина: обратный прокси не настроен или слушает на другом интерфейсе.
Решение: проверьте /etc/apache2/sites-available/plausible.conf или конфигурацию Nginx и убедитесь, что прокси перенаправляет на 127.0.0.1:8000.
- Проблема: certbot не может верифицировать домен.
Причина: DNS не указывает на IP сервера или порт 80 закрыт.
Решение: проверьте A/AAAA запись домена и откройте порт 80.
- Проблема: веб‑интерфейс показывает ошибку 500.
Причина: неправильные переменные окружения, проблемы с подключением к БД.
Решение: проверьте логи container: sudo docker compose logs plausible. Убедитесь, что в plausible-conf.env правильно указан BASE_URL и SECRET_KEY_BASE.
- Проблема: данные не поступают из сайта.
Причина: сниппет вставлен неправильно или кеширует старую версию.
Решение: убедитесь, что код сниппета вставлен в
и загружается. Проверьте консоль браузера на ошибки сети.Рекомендации по тестированию и критериям приёмки
Критерии приёмки
- Plausible доступен по HTTPS на вашем домене.
- Вход в админку под учётной записью ADMIN_USER_EMAIL работает.
- Добавление сайта приводит к отображению скрипта сниппета.
- После вставки сниппета на тестовую страницу события начинают поступать в Plausible в течение нескольких минут.
- Backup и восстановление протестированы и работоспособны.
Тестовые кейсы
- Проверка доступности:
- Выполнить curl -I https://plausible.howtoforge.local и получить 200/302.
- Вход в панель:
- Ввести админ‑данные и убедиться, что дашборд отображается.
- Проверка HTTPS:
- Проверить цепочку сертификатов через ssllabs.
- Проверка сборщика:
- Вставить сниппет на простой HTML и открыть страницу, затем проверить Events в интерфейсе.
Чеклист ролей перед запуском в продакшен
Администратор сервера
- Сервер обновлён и безопасен.
- Открыты порты 80 и 443 в firewall.
- Созданы резервные копии конфигурации.
DevOps инженер
- Docker и docker compose установлены и проверены.
- Автоматическое обновление образов протестировано.
- Настроен мониторинг и оповещения.
Владелец продукта
- Подтверждён список сайтов для отслеживания.
- Установлены политики хранения данных и ретенции.
Решение: когда self‑hosted Plausible не подходит
Counterexamples
- Если у вас нет ресурсов для поддержки резервных копий и обновлений, управляемый сервис Plausible может быть предпочтительнее.
- Если требуется интеграция с продвинутыми ETL и большим объёмом данных в реальном времени, возможно, лучше использовать специализированные платные решения.
Альтернативы
- Plausible Cloud — проще в эксплуатации, платно.
- Matomo — более функционален, но сложнее и тяжелее ресурсозатратен.
- Fathom — ещё одна приватная лёгкая альтернатива.
Полезные команды и шаблоны
Список команд быстрого доступа
# Старт/рестарт стеков
sudo docker compose up -d
sudo docker compose down
# Логи
sudo docker compose logs -f plausible
# Список контейнеров
sudo docker compose ps
# Обновление образов
sudo docker compose pull
sudo docker compose up -d
# Резервное копирование PostgreSQL
sudo docker compose exec plausible-db pg_dumpall -U postgres > /root/plausible_pg_dump.sqlШаблон для бэкапа томов
#!/bin/bash
BACKUP_DIR=/backup/plausible
mkdir -p $BACKUP_DIR
DATE=$(date +%F)
# Dump postgres
sudo docker compose exec plausible-db pg_dumpall -U postgres > $BACKUP_DIR/plausible_pg_$DATE.sql
# Archive docker volumes
sudo tar czf $BACKUP_DIR/docker_volumes_$DATE.tar.gz /var/lib/docker/volumes/your_volume_name/_dataМодель зрелости self‑hosted аналитики
- Базовая установка — работает локально, нет бэкапов.
- Операционная стабильность — есть автоматическое продление сертификатов и резервное копирование.
- Производственный уровень — мониторинг, оповещения, масштабирование, регулярные обновления.
Стремитесь минимум ко второму уровню для продакшн‑систем.
Частые вопросы
Q: Можно ли запускать Plausible на другом дистрибутиве Linux?
A: Да. Docker обеспечивает переносимость. Инструкции по установке Docker актуальны для большинства дистрибутивов.
Q: Сколько ресурсов требует Plausible?
A: Небольшие сайты — минимальные ресурсы (1‑2 vCPU, 1–2 ГБ RAM). При большом трафике потребуются больше CPU, памяти и диск I/O для PostgreSQL.
Q: Нужно ли закрывать административный интерфейс от общего доступа?
A: Рекомендуется, особенно для частных установок. Можно ограничить доступ по IP или использовать VPN.
Короткая методология развёртывания (SOP)
- Подготовить сервер и DNS.
- Установить Docker и docker compose.
- Клонировать Plausible и задать переменные в plausible-conf.env.
- Отредактировать docker-compose.yml, поднять стек.
- Настроить обратный прокси (Apache/Nginx).
- Получить сертификат Let’s Encrypt.
- Добавить сайт и проверить сбор данных.
- Настроить бекапы и мониторинг.
Краткое резюме
Вы установили и настроили Plausible Analytics на Ubuntu 22.04, запустили сервис в Docker, пробросили доступ через Apache как обратный прокси и защитили сайт HTTPS с помощью Let’s Encrypt. Также рассмотрены варианты с Nginx, бекапы, безопасность и набор тестов для приёмки.
Если хотите продолжить, рекомендую:
- Автоматизировать обновления образов и бэкапы.
- Настроить мониторинг и оповещения.
- Протестировать восстановление из бэкапа.
Важно. Регулярно обновляйте компоненты, чтобы получать обновления безопасности и исправления ошибок.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента