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

Plausible на Ubuntu 22.04 через Docker и Apache

• 9 min read • DevOps • Обновлено 16 Nov 2025
Plausible на Ubuntu 22.04 через Docker и Apache
Plausible на Ubuntu 22.04 через Docker и Apache

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

Введение

Логотип Plausible и обзор сервиса

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) и зависимостей.

  1. Установите базовые зависимости:
sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Установка зависимостей для Docker

  1. Добавьте официальный 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
  1. Обновите список пакетов и установите Docker и плагин compose:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Подтвердите установку, когда apt попросит.

Репозитории Docker добавлены

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

Ожидаемый результат — служба активна и включена.

Проверка статуса Docker

Совет. Если вы хотите запускать docker без sudo для определённого пользователя, добавьте пользователя в группу docker: sudo usermod -aG docker $USER. После этого выйдите и войдите в систему снова.


Шаг 2. Загрузка и подготовка Plausible

  1. Перейдите в директорию /opt и клонируйте репозиторий hosting Plausible:
cd /opt
sudo git clone https://github.com/plausible/hosting plausible
  1. Сгенерируйте секрет SECRET_KEY_BASE. Он нужен Plausible для защиты сессий и криптографии:
openssl rand 64 | base64 -w 0 ; echo

Сохраните выведенную строку в надёжном месте — она понадобится в конфигурации.

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

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

  1. Перейдите в каталог с docker-compose.yml и отредактируйте его:
cd /opt/plausible
sudo nano docker-compose.yml
  1. В сервисе plausible задайте проброс портов, чтобы приложение слушало только на локальном интерфейсе. Это важно, чтобы внешние запросы принимал обратный прокси, а не сам контейнер:
plausible:
......
    ports:
      - 127.0.0.1:8000:8000
......

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

Редактирование docker-compose для Plausible

  1. Поднимите стек:
sudo docker compose up -d

Docker загрузит образы, создаст тома и запустит контейнеры. В составе обычно присутствуют сервисы PostgreSQL, Redis и Plausible.

Процесс деплоя Plausible

  1. Проверьте, что контейнеры работают:
sudo docker compose ps
sudo docker compose images
  1. Проверьте, что сервис доступен локально:
curl http://localhost:8000

Ожидается перенаправление на /login.


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

В данном руководстве мы используем Apache в качестве обратного прокси. Если вы предпочитаете Nginx, см. раздел «Альтернативный вариант» ниже.

  1. Установите Apache:
sudo apt install apache2

Установка Apache2

  1. Убедитесь, что служба запущена и включена:
sudo systemctl is-enabled apache2
sudo systemctl status apache2

Проверка статуса Apache2

  1. Включите модули Apache, необходимые для обратного проксирования и SSL:
sudo a2enmod proxy proxy_http proxy_ajp remoteip headers ssl

Включение модулей Apache

  1. Скопируйте пример конфигурации из репозитория 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
  1. Активируйте сайт и проверьте конфигурацию Apache:
sudo a2ensite plausible.conf
sudo apachectl configtest
sudo systemctl restart apache2

Если тест вернул Syntax OK и служба перезапустилась — прокси настроен.

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

Совет. Если у вас корпоративный firewall, убедитесь, что порты 80 и 443 открыты.


Шаг 5. Получение SSL от Let’s Encrypt

  1. Установите certbot и плагин Apache:
sudo apt install certbot python3-certbot-apache

Установка Certbot

  1. Запустите 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.
  1. Настройте автоматическое продление сертификатов (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

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

Дашборд Plausible

Чтобы добавить сайт для отслеживания:

  1. Нажмите Add a website.

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

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

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

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

Фрагмент добавлен, сбор данных запущен

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

Сайты в Plausible


Альтернативный вариант: 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.local

Nginx особенно хорош при большом числе соединений и при использовании HTTP/2.


Рекомендации по безопасности и эксплуатации

  1. Храните plausible-conf.env и ключи в защищённой директории с ограниченными правами доступа (chmod 600).
  2. Регулярно обновляйте образы Docker:
sudo docker compose pull
sudo docker compose up -d
  1. Настройте резервное копирование баз данных и томов Docker. Простая стратегия:
  • Регулярный дамп PostgreSQL через pg_dump.
  • Копирование томов Docker на удалённое хранилище.
  1. Ограничьте доступ к административному интерфейсу через IP‑фильтры или VPN при необходимости.
  2. Включите мониторинг: используйте Prometheus/Grafana или простые проверки доступности.
  3. Настройте оповещения о завершении срока действия сертификатов (certbot уже настраивает автоматическое продление, но полезно иметь дублирующие уведомления).

Безопасность — это совокупность мер. Минимум: сложные пароли, SSL, бекапы.


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

Минимальная методика бекапа для self‑hosted Plausible:

  1. Бекап базы данных PostgreSQL:
sudo docker compose exec plausible-db pg_dumpall -U postgres > /root/plausible_pg_dump_$(date +%F).sql
  1. Бекап томов (например, том для данных 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
  1. Резервное копирование файлов конфигурации и секретов:
sudo cp /opt/plausible/plausible-conf.env /backup/

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

  • Восстановите конфигурацию и секреты на новом хосте.
  • Разверните docker compose и остановите сервисы.
  • Восстановите данные PostgreSQL из дампа через psql.

Тестируйте процедуру восстановления в изолированной среде, чтобы убедиться, что она рабочая.


Отладка и часто встречающиеся проблемы

  1. Проблема: браузер не загружает страницу, curl localhost:8000 работает.

Причина: обратный прокси не настроен или слушает на другом интерфейсе.

Решение: проверьте /etc/apache2/sites-available/plausible.conf или конфигурацию Nginx и убедитесь, что прокси перенаправляет на 127.0.0.1:8000.

  1. Проблема: certbot не может верифицировать домен.

Причина: DNS не указывает на IP сервера или порт 80 закрыт.

Решение: проверьте A/AAAA запись домена и откройте порт 80.

  1. Проблема: веб‑интерфейс показывает ошибку 500.

Причина: неправильные переменные окружения, проблемы с подключением к БД.

Решение: проверьте логи container: sudo docker compose logs plausible. Убедитесь, что в plausible-conf.env правильно указан BASE_URL и SECRET_KEY_BASE.

  1. Проблема: данные не поступают из сайта.

Причина: сниппет вставлен неправильно или кеширует старую версию.

Решение: убедитесь, что код сниппета вставлен в и загружается. Проверьте консоль браузера на ошибки сети.


Рекомендации по тестированию и критериям приёмки

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

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

Тестовые кейсы

  1. Проверка доступности:
  2. Вход в панель:
    • Ввести админ‑данные и убедиться, что дашборд отображается.
  3. Проверка HTTPS:
    • Проверить цепочку сертификатов через ssllabs.
  4. Проверка сборщика:
    • Вставить сниппет на простой 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 аналитики

  1. Базовая установка — работает локально, нет бэкапов.
  2. Операционная стабильность — есть автоматическое продление сертификатов и резервное копирование.
  3. Производственный уровень — мониторинг, оповещения, масштабирование, регулярные обновления.

Стремитесь минимум ко второму уровню для продакшн‑систем.


Частые вопросы

Q: Можно ли запускать Plausible на другом дистрибутиве Linux?

A: Да. Docker обеспечивает переносимость. Инструкции по установке Docker актуальны для большинства дистрибутивов.

Q: Сколько ресурсов требует Plausible?

A: Небольшие сайты — минимальные ресурсы (1‑2 vCPU, 1–2 ГБ RAM). При большом трафике потребуются больше CPU, памяти и диск I/O для PostgreSQL.

Q: Нужно ли закрывать административный интерфейс от общего доступа?

A: Рекомендуется, особенно для частных установок. Можно ограничить доступ по IP или использовать VPN.


Короткая методология развёртывания (SOP)

  1. Подготовить сервер и DNS.
  2. Установить Docker и docker compose.
  3. Клонировать Plausible и задать переменные в plausible-conf.env.
  4. Отредактировать docker-compose.yml, поднять стек.
  5. Настроить обратный прокси (Apache/Nginx).
  6. Получить сертификат Let’s Encrypt.
  7. Добавить сайт и проверить сбор данных.
  8. Настроить бекапы и мониторинг.

Краткое резюме

Вы установили и настроили Plausible Analytics на Ubuntu 22.04, запустили сервис в Docker, пробросили доступ через Apache как обратный прокси и защитили сайт HTTPS с помощью Let’s Encrypt. Также рассмотрены варианты с Nginx, бекапы, безопасность и набор тестов для приёмки.

Если хотите продолжить, рекомендую:

  • Автоматизировать обновления образов и бэкапы.
  • Настроить мониторинг и оповещения.
  • Протестировать восстановление из бэкапа.

Важно. Регулярно обновляйте компоненты, чтобы получать обновления безопасности и исправления ошибок.

Поделиться: 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 быстро