Установка Plausible Analytics на VPS: с Docker, Caddy и PostgreSQL
TL;DR
В этом подробном руководстве мы шаг за шагом настроим Plausible Analytics на собственном VPS-сервере, используя стек технологий Docker Compose для оркестрации сервисов, PostgreSQL в качестве базы данных и Caddy как мощный и простой в настройке веб-сервер с автоматической выдачей и обновлением SSL/TLS-сертификатов. Вы получите полностью функциональную, приватную и контролируемую систему веб-аналитики, развернутую на вашем сервере.
- Plausible Analytics будет работать на вашем VPS под полным контролем.
- Используется Docker Compose для легкой установки и управления всеми компонентами.
- Caddy автоматически настроит HTTPS для вашего домена.
- PostgreSQL обеспечит надежное хранение аналитических данных.
- Руководство включает настройку безопасности, резервного копирования и обслуживания системы.
- Все шаги проверяемы и готовы к выполнению на сервере с Ubuntu 24.04 LTS.
Что мы настраиваем и зачем
Мы настраиваем Plausible Analytics — легковесную, ориентированную на конфиденциальность альтернативу Google Analytics. В отличие от традиционных аналитических платформ, Plausible не использует куки, не собирает персональные данные и полностью соответствует требованиям GDPR, CCPA и PECR. Это идеальное решение для тех, кто хочет получать ценные данные о посетителях сайта, не нарушая их приватность и не усложняя свою инфраструктуру.
В итоге вы получите собственный инстанс Plausible Analytics, доступный по вашему доменному имени (например, analytics.yourdomain.com), полностью контролируемый и работающий на вашем VPS. Все данные будут храниться на вашем сервере, обеспечивая максимальную конфиденциальность и безопасность. Вы сможете добавлять неограниченное количество сайтов для отслеживания и просматривать статистику в удобном и интуитивно понятном интерфейсе.
Альтернативы: облачные сервисы vs. самостоятельный хостинг на VPS
Существует несколько подходов к получению веб-аналитики:
- Облачные (cloud-managed) сервисы: К ним относятся Google Analytics, Yandex.Metrica, а также платные версии Plausible Cloud, Fathom Analytics и Matomo Cloud. Они предлагают удобство "под ключ" — вам не нужно заботиться об инфраструктуре, обновлениях или бэкапах. Однако вы передаете контроль над данными сторонней компании, что может быть неприемлемо с точки зрения конфиденциальности или юридических требований.
- Самостоятельный хостинг (self-hosted) на VPS: Это наш путь. Развертывание Plausible на собственном VPS дает вам полный контроль над данными, инфраструктурой и конфигурацией. Вы сами управляете обновлениями, безопасностью и резервным копированием. Это требует определенных технических навыков и времени на настройку, но обеспечивает максимальную гибкость, приватность и экономическую эффективность в долгосрочной перспективе, особенно при большом количестве отслеживаемых сайтов.
Выбор самостоятельного хостинга на VPS особенно актуален для разработчиков, соло-фаундеров SaaS-проектов, криптоэнтузиастов, которые ценят децентрализацию и приватность, а также для тех, кто хочет глубже понимать и контролировать свою серверную инфраструктуру.
Какой VPS-конфиг нужен под эту задачу
Для Plausible Analytics, особенно при использовании Docker Compose, Caddy и PostgreSQL, требуются определенные минимальные ресурсы. Эти требования могут варьироваться в зависимости от объема трафика, который вы планируете отслеживать.
Минимальные требования для Plausible Analytics (по состоянию на 2026 год)
- CPU: Минимум 1 ядро. Для небольших и средних проектов (до 1-2 миллионов просмотров страниц в месяц) 1-2 ядра вполне достаточно. Для более высоконагруженных систем рекомендуется 2-4 ядра.
- RAM: Минимум 2 ГБ оперативной памяти. Plausible, PostgreSQL и Docker-контейнеры требуют значительного объема RAM. Для стабильной работы и обработки умеренного трафика 4 ГБ будет оптимальным выбором. Если вы планируете отслеживать очень много сайтов или миллионы просмотров, рассмотрите 8 ГБ.
- Диск: Минимум 20-40 ГБ SSD. SSD критичен для производительности базы данных. Сама установка Plausible и его зависимостей займет несколько гигабайт. Остальное пространство потребуется для хранения данных PostgreSQL, логов и бэкапов. Для долгосрочного хранения данных и масштабирования лучше иметь 80-100 ГБ.
- Сеть: 100 Мбит/с или 1 Гбит/с порт. Для веб-аналитики высокая пропускная способность сети обычно не является критичным фактором, так как данные передаются в небольших объемах. Стабильное соединение с хорошей пропускной способностью важно для общей доступности сервера.
Конкретный VPS-план под задачу
Для большинства пользователей, начинающих с Plausible Analytics, подойдет VPS-план со следующими характеристиками:
| Критерий | Рекомендуемый минимум | Оптимально для роста |
|---|---|---|
| CPU | 2 ядра | 4 ядра |
| RAM | 4 ГБ | 8 ГБ |
| Диск | 80 ГБ SSD | 160 ГБ SSD |
| Сеть | 1 Гбит/с | 1 Гбит/с |
Можно рассмотреть VPS с такими характеристиками, чтобы обеспечить стабильную работу Plausible Analytics и иметь запас для роста вашего проекта.
Когда нужен dedicated, а не VPS
Dedicated сервер (выделенный сервер) становится необходимым, когда ваш проект достигает очень больших масштабов:
- Высоконагруженные проекты: Если вы отслеживаете сотни сайтов или миллионы просмотров страниц в день (десятки и сотни миллионов в месяц), где производительность базы данных и скорость обработки запросов становятся критичными.
- Строгие требования к безопасности и изоляции: Dedicated сервер обеспечивает полную физическую изоляцию, что может быть важно для некоторых регулируемых отраслей или очень чувствительных данных.
- Необходимость в кастомном оборудовании: Если вам нужны специфические конфигурации CPU, GPU, RAID-массивы или очень большой объем RAM/диска, которые не предлагаются в рамках стандартных VPS-планов.
Для большинства инсталляций Plausible Analytics VPS будет более чем достаточен и экономически выгоден. Если вы все же решите, что вам нужен выделенный сервер, то подходящий dedicated сервер обеспечит максимальную производительность и контроль.
Локация: на что влияет
Выбор географической локации VPS-сервера влияет на несколько аспектов:
- Задержка (latency): Чем ближе сервер к вашей целевой аудитории (посетителям сайтов, которые вы отслеживаете) и к вам (если вы часто просматриваете аналитику), тем ниже будет задержка. Это влияет на скорость загрузки JS-скрипта Plausible на вашем сайте и на скорость отображения отчетов в панели управления.
- Юридические аспекты: В некоторых юрисдикциях могут быть строгие требования к хранению данных. Выбор сервера в стране, где действуют благоприятные законы о конфиденциальности (например, в странах ЕС для данных европейских пользователей), может быть предпочтительным.
- Доступность и пиринг: Некоторые локации имеют лучшую связность с крупными интернет-провайдерами, что может обеспечить более стабильное и быстрое соединение.
Для Plausible обычно рекомендуется выбирать локацию, которая географически близка к большинству ваших посетителей или к вашему собственному местоположению для комфортной работы с админкой.
Подготовка сервера
Перед установкой Plausible Analytics необходимо выполнить базовую настройку и усиление безопасности вашего VPS. Мы будем использовать Ubuntu Server 24.04 LTS как основу, поскольку это одна из самых популярных и стабильных дистрибутивов для серверов.
1. Доступ по SSH
Убедитесь, что у вас есть доступ к серверу по SSH. Обычно провайдер предоставляет IP-адрес и логин (например, root) с паролем. Рекомендуется сразу же настроить доступ по SSH-ключам и отключить вход по паролю для root.
ssh root@ВАШ_IP_СЕРВЕРА
2. Обновление системы и создание пользователя sudo
Первым делом обновим все пакеты и создадим нового пользователя с правами sudo, чтобы избежать работы под root.
# Обновление списка пакетов
sudo apt update
# Обновление установленных пакетов до последних версий
sudo apt upgrade -y
# Создание нового пользователя (замените 'youruser' на желаемое имя)
sudo adduser youruser
# Добавление пользователя в группу sudo
sudo usermod -aG sudo youruser
# Переключение на нового пользователя (необязательно, можно выйти и зайти заново)
# su - youruser
После создания пользователя, выйдите из сессии root и залогиньтесь под новым пользователем. Все дальнейшие команды, требующие прав администратора, будут выполняться с префиксом sudo.
exit
ssh youruser@ВАШ_IP_СЕРВЕРА
3. Настройка SSH-ключей для нового пользователя (рекомендуется)
Если вы еще не настроили, скопируйте ваш публичный SSH-ключ на сервер.
# Выполнить на вашей локальной машине
ssh-copy-id youruser@ВАШ_IP_СЕРВЕРА
# Если ssh-copy-id не работает, можно сделать вручную:
# ssh youruser@ВАШ_IP_СЕРВЕРА 'mkdir -p ~/.ssh && chmod 700 ~/.ssh'
# cat ~/.ssh/id_rsa.pub | ssh youruser@ВАШ_IP_СЕРВЕРА 'cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
После этого вы можете отключить аутентификацию по паролю в SSH для повышения безопасности. Отредактируйте файл /etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config
Найдите и измените следующие строки (или добавьте, если отсутствуют):
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Сохраните изменения (Ctrl+O, Enter) и выйдите (Ctrl+X). Затем перезапустите службу SSH:
sudo systemctl restart ssh
ВАЖНО: Перед тем как закрыть текущую SSH-сессию, откройте новое окно терминала и попробуйте зайти на сервер под youruser, используя SSH-ключ. Убедитесь, что вход работает. Если нет, не закрывайте текущую сессию, чтобы иметь возможность откатить изменения.
4. Установка Fail2Ban
Fail2Ban помогает защитить сервер от атак методом перебора паролей, блокируя IP-адреса, с которых поступает слишком много неудачных попыток входа.
# Установка Fail2Ban
sudo apt install fail2ban -y
# Копирование файла конфигурации по умолчанию для настройки
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Можно настроить jail.local, но для базовой защиты стандартные настройки подойдут
# sudo nano /etc/fail2ban/jail.local
# Перезапуск службы Fail2Ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Проверка статуса Fail2Ban
sudo systemctl status fail2ban
5. Настройка Firewall (UFW)
Брандмауэр UFW (Uncomplicated Firewall) позволяет ограничить доступ к портам сервера, разрешая только необходимые соединения.
# Установка UFW
sudo apt install ufw -y
# Разрешить SSH (порт 22)
sudo ufw allow ssh
# Разрешить HTTP (порт 80) и HTTPS (порт 443) - для Caddy
sudo ufw allow http
sudo ufw allow https
# Включить UFW
sudo ufw enable
# Подтвердить включение (ввести 'y')
# Проверка статуса UFW
sudo ufw status verbose
Теперь ваш сервер готов к установке необходимого программного обеспечения.
Установка ПО — пошагово
Для развертывания Plausible Analytics мы будем использовать Docker Compose, который упрощает управление несколькими контейнерами (Plausible, PostgreSQL, ClickHouse). В качестве обратного прокси и для автоматической настройки HTTPS мы используем Caddy.
1. Установка Docker и Docker Compose (актуально для 2026 года)
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Docker Compose позволяет определять и запускать многоконтейнерные Docker-приложения.
# Удаление старых версий Docker (если есть)
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove $pkg; done
# Установка зависимостей для добавления репозитория Docker
sudo apt update
sudo apt install ca-certificates curl gnupg -y
# Добавление официального GPG-ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавление репозитория Docker в APT sources
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Обновление индекса пакетов APT
sudo apt update
# Установка Docker Engine, Docker CLI и Containerd
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Добавление текущего пользователя в группу docker для запуска команд без sudo
sudo usermod -aG docker $USER
# Применение изменений группы (выйдите и войдите снова или перезапустите сессию)
# newgrp docker
# Проверка установки Docker
docker run hello-world
# Проверка версии Docker Compose (ожидается docker compose version 2.x.x)
docker compose version
Примечание: После выполнения sudo usermod -aG docker $USER, вам нужно либо выйти из SSH-сессии и войти снова, либо выполнить newgrp docker, чтобы изменения в группах вступили в силу.
2. Установка Caddy (актуально для 2026 года)
Caddy — это мощный веб-сервер с автоматической поддержкой HTTPS, который будет действовать как обратный прокси для Plausible.
# Установка зависимостей
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
# Добавление официального GPG-ключа Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# Добавление репозитория Caddy в APT sources
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# Обновление индекса пакетов APT
sudo apt update
# Установка Caddy
sudo apt install caddy -y
# Проверка установки Caddy
caddy version
3. Подготовка структуры каталогов для Plausible
Создадим директорию для Plausible и перейдем в нее. Здесь будут храниться все конфигурационные файлы.
# Создание директории для Plausible
mkdir plausible
cd plausible
4. Настройка DNS
Прежде чем двигаться дальше, убедитесь, что ваш домен или поддомен (например, analytics.yourdomain.com) указывает на IP-адрес вашего VPS. Создайте A-запись в настройках DNS вашего домена.
| Тип записи | Хост/Имя | Значение | TTL |
|---|---|---|---|
| A | analytics (или @ если основной домен) | IP_ВАШЕГО_VPS | Авто (или 3600) |
Подождите некоторое время, пока DNS-записи обновятся (может занять от нескольких минут до нескольких часов). Вы можете проверить, обновились ли DNS, используя ping или dig.
ping analytics.yourdomain.com
Конфигурация
Теперь, когда все необходимые компоненты установлены, пришло время настроить Plausible, PostgreSQL и Caddy.
1. Создание файла docker-compose.yml
Этот файл определяет сервисы (Plausible, PostgreSQL, ClickHouse), их образы, порты и зависимости.
nano docker-compose.yml
Вставьте следующее содержимое:
version: '3.8'
services:
plausible_db:
image: postgres:16-alpine # Актуальная версия PostgreSQL на 2026 год
restart: always
environment:
POSTGRES_DB: plausible
POSTGRES_USER: plausible
POSTGRES_PASSWORD: ${DB_PASSWORD} # Будет взят из .env
volumes:
- plausible_db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U plausible"]
interval: 5s
timeout: 5s
retries: 5
plausible_events_db:
image: clickhouse/clickhouse-server:24.3 # Актуальная версия ClickHouse на 2026 год
restart: always
volumes:
- plausible_events_db_data:/var/lib/clickhouse
- ./clickhouse/config.xml:/etc/clickhouse-server/config.xml:ro
- ./clickhouse/users.xml:/etc/clickhouse-server/users.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:8123/ping"]
interval: 5s
timeout: 5s
retries: 5
plausible:
image: plausible/analytics:v2.0 # Актуальная версия Plausible Analytics на 2026 год
restart: always
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
plausible_db:
condition: service_healthy
plausible_events_db:
condition: service_healthy
environment:
DATABASE_URL: postgresql://plausible:${DB_PASSWORD}@plausible_db:5432/plausible
CLICKHOUSE_DATABASE_URL: http://plausible:${CLICKHOUSE_PASSWORD}@plausible_events_db:8123/plausible
BASE_URL: https://${YOUR_DOMAIN} # Ваш домен
SECRET_KEY_BASE: ${SECRET_KEY_BASE} # Сгенерируйте с помощью openssl rand -hex 64
TOTP_SALT: ${TOTP_SALT} # Сгенерируйте с помощью openssl rand -hex 32
ADMIN_USER_EMAIL: ${ADMIN_USER_EMAIL} # Ваш email для первого пользователя
ADMIN_USER_PASSWORD: ${ADMIN_USER_PASSWORD} # Пароль для первого пользователя
DISABLE_REGISTRATION: "true" # Отключить публичную регистрацию
# Для отправки почты (необязательно, но рекомендуется для сброса пароля)
# SMTP_HOST: smtp.your-provider.com
# SMTP_PORT: 587
# SMTP_USER: your-smtp-user
# SMTP_PASSWORD: your-smtp-password
# SMTP_MAIL_FROM: [email protected]
# SMTP_AUTH_METHOD: plain
# SMTP_TLS_MODE: :auto
ports:
- "127.0.0.1:8000:8000" # Привязка к localhost, Caddy будет проксировать запросы
volumes:
- plausible_data:/var/lib/plausible/data # Для данных Plausible, если они есть
volumes:
plausible_db_data:
plausible_events_db_data:
plausible_data:
Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X).
2. Создание файла .env для секретов
Все конфиденциальные данные будут храниться в файле .env, который не должен попадать в систему контроля версий (Git). Создайте его:
nano .env
Вставьте следующее содержимое, заменив плейсхолдеры вашими значениями:
YOUR_DOMAIN=analytics.yourdomain.com # Ваш домен или поддомен для Plausible
DB_PASSWORD=YOUR_STRONG_POSTGRES_PASSWORD # Сгенерируйте надежный пароль для PostgreSQL
CLICKHOUSE_PASSWORD=YOUR_STRONG_CLICKHOUSE_PASSWORD # Сгенерируйте надежный пароль для ClickHouse
SECRET_KEY_BASE=YOUR_SECRET_KEY_BASE # Сгенерируйте openssl rand -hex 64
TOTP_SALT=YOUR_TOTP_SALT # Сгенерируйте openssl rand -hex 32
[email protected] # Ваш email для первого пользователя Plausible
ADMIN_USER_PASSWORD=YOUR_ADMIN_PASSWORD # Надежный пароль для админа Plausible
Как сгенерировать ключи:
openssl rand -hex 64 # Для SECRET_KEY_BASE
openssl rand -hex 32 # Для TOTP_SALT
Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X).
3. Настройка конфигурации ClickHouse
Создайте директории и файлы конфигурации для ClickHouse. Это обеспечит правильную работу базы данных событий.
mkdir -p clickhouse
nano clickhouse/config.xml
Вставьте следующее содержимое в clickhouse/config.xml:
information
true
::
262144
10000000000
100
Сохраните и закройте. Затем создайте файл пользователей:
nano clickhouse/users.xml
Вставьте следующее содержимое в clickhouse/users.xml (замените YOUR_STRONG_CLICKHOUSE_PASSWORD на пароль из вашего .env файла):
default
::/0
YOUR_STRONG_CLICKHOUSE_PASSWORD
default
Сохраните и закройте.
4. Запуск Plausible с Docker Compose
Теперь запустите все сервисы Docker Compose. Флаг -d запускает их в фоновом режиме.
# Запуск всех сервисов Docker Compose
docker compose up -d
# Проверка статуса запущенных контейнеров
docker compose ps
Убедитесь, что все контейнеры имеют статус running и healthy. Если какой-то контейнер не запускается, проверьте логи:
docker compose logs plausible
docker compose logs plausible_db
docker compose logs plausible_events_db
5. Настройка Caddyfile
Caddy будет проксировать запросы к Plausible и автоматически управлять HTTPS. Удалите файл Caddyfile по умолчанию и создайте свой.
# Удаление дефолтного Caddyfile
sudo rm /etc/caddy/Caddyfile
# Создание нового Caddyfile
sudo nano /etc/caddy/Caddyfile
Вставьте следующее содержимое, заменив analytics.yourdomain.com на ваш домен:
analytics.yourdomain.com {
reverse_proxy 127.0.0.1:8000
header {
# HSTS (на 1 год) - обязательно для безопасности
Strict-Transport-Security "max-age=31536000; includeSubDomains"
}
}
Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X).
6. Запуск и проверка Caddy
Проверьте конфигурацию Caddy и перезапустите службу.
# Проверка конфигурации Caddyfile
sudo caddy validate --config /etc/caddy/Caddyfile
# Перезагрузка службы Caddy для применения изменений
sudo systemctl reload caddy
# Проверка статуса службы Caddy
sudo systemctl status caddy
Убедитесь, что Caddy работает и не выдает ошибок. В логах Caddy (sudo journalctl -u caddy --no-pager) вы должны увидеть, что сертификаты Let's Encrypt были успешно выпущены.
7. Проверка работоспособности
Откройте ваш домен (например, https://analytics.yourdomain.com) в браузере. Вы должны увидеть страницу входа Plausible Analytics.
Войдите, используя ADMIN_USER_EMAIL и ADMIN_USER_PASSWORD, которые вы указали в файле .env. После входа добавьте ваш первый сайт и скопируйте JS-сниппет для встраивания на ваш сайт.
Можно также проверить доступность локально с помощью curl, чтобы убедиться, что Plausible отвечает на порту 8000:
# Проверка доступности Plausible через localhost
curl http://127.0.0.1:8000
Вы должны получить HTML-код страницы Plausible. Если нет, проверьте логи Docker Compose.
Бэкапы и обслуживание
Настройка резервного копирования и регулярного обслуживания критически важна для любой продакшн-системы, включая Plausible Analytics.
Что бэкапить
Для Plausible Analytics необходимо регулярно бэкапить следующие компоненты:
- База данных PostgreSQL: Содержит учетные записи пользователей Plausible, настройки сайтов, домены и другую метаинформацию. Это самая важная часть.
- База данных ClickHouse: Хранит все собранные события (просмотры страниц, уникальные посетители и т.д.). Хотя Plausible может работать и без старых данных ClickHouse, восстановление полного объема аналитики требует ее резервного копирования.
- Файлы конфигурации Plausible: Файл
docker-compose.yml,.env, и папкаclickhouse/.
Простой скрипт автобэкапа
Мы создадим простой скрипт, который будет создавать дамп баз данных и архивировать конфигурационные файлы. Для хранения бэкапов рекомендуется использовать внешнее хранилище, а не тот же сервер.
Создайте файл backup_plausible.sh в директории /home/youruser/plausible/:
nano backup_plausible.sh
Вставьте следующее содержимое (замените YOUR_DOMAIN и DB_PASSWORD на ваши значения):
#!/bin/bash
# Путь к директории Plausible
PLAUSIBLE_DIR="/home/youruser/plausible"
# Директория для хранения бэкапов на сервере (временное хранение)
BACKUP_DIR="${PLAUSIBLE_DIR}/backups"
# Домен, используемый для Plausible
YOUR_DOMAIN="analytics.yourdomain.com"
# Загрузка переменных окружения
set -a
. "${PLAUSIBLE_DIR}/.env"
set +a
# Убедитесь, что директория для бэкапов существует
mkdir -p "${BACKUP_DIR}"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/plausible_backup_${TIMESTAMP}.tar.gz"
echo "Начинается резервное копирование Plausible Analytics..."
# 1. Бэкап PostgreSQL
echo "Дампинг PostgreSQL базы данных..."
docker compose exec -T plausible_db pg_dump -U plausible -d plausible > "${BACKUP_DIR}/plausible_db_${TIMESTAMP}.sql"
if [ $? -eq 0 ]; then
echo "PostgreSQL база данных успешно заархивирована."
else
echo "Ошибка при архивации PostgreSQL базы данных."
exit 1
fi
# 2. Бэкап ClickHouse (если данные большие, можно использовать clickhouse-backup или другие методы)
# Для простоты, копируем директорию данных (останавливая ClickHouse на время копирования)
echo "Бэкап ClickHouse данных (копирование)..."
docker compose stop plausible_events_db
tar -czvf "${BACKUP_DIR}/plausible_events_db_data_${TIMESTAMP}.tar.gz" -C "${PLAUSIBLE_DIR}/plausible_events_db_data" .
docker compose start plausible_events_db
if [ $? -eq 0 ]; then
echo "ClickHouse данные успешно заархивированы."
else
echo "Ошибка при архивации ClickHouse данных."
exit 1
fi
# 3. Архивирование конфигурационных файлов
echo "Архивирование конфигурационных файлов..."
tar -czvf "${BACKUP_DIR}/plausible_configs_${TIMESTAMP}.tar.gz" \
-C "${PLAUSIBLE_DIR}" docker-compose.yml .env clickhouse/
if [ $? -eq 0 ]; then
echo "Конфигурационные файлы успешно заархивированы."
else
echo "Ошибка при архивации конфигурационных файлов."
exit 1
fi
# 4. Объединение всех бэкапов в один tar.gz архив
echo "Создание единого архива бэкапов..."
tar -czvf "${BACKUP_FILE}" -C "${BACKUP_DIR}" plausible_db_${TIMESTAMP}.sql plausible_events_db_data_${TIMESTAMP}.tar.gz plausible_configs_${TIMESTAMP}.tar.gz
if [ $? -eq 0 ]; then
echo "Единый архив бэкапов создан: ${BACKUP_FILE}"
else
echo "Ошибка при создании единого архива."
exit 1
fi
# Удаление промежуточных файлов
rm "${BACKUP_DIR}/plausible_db_${TIMESTAMP}.sql"
rm "${BACKUP_DIR}/plausible_events_db_data_${TIMESTAMP}.tar.gz"
rm "${BACKUP_DIR}/plausible_configs_${TIMESTAMP}.tar.gz"
echo "Резервное копирование завершено."
# Здесь можно добавить команды для загрузки бэкапа на удаленное хранилище
# Например, через rsync, scp, s3cmd или Restic
# rsync -avz "${BACKUP_FILE}" user@remotehost:/path/to/remote/backups/
# s3cmd put "${BACKUP_FILE}" s3://your-s3-bucket/plausible/
# restic backup --repo /mnt/backup_repo "${BACKUP_FILE}"
Сделайте скрипт исполняемым:
chmod +x backup_plausible.sh
Куда складывать бэкапы
Никогда не храните бэкапы на том же сервере, что и оригинальные данные. Если сервер выйдет из строя, вы потеряете и данные, и бэкапы. Рекомендуемые места для хранения:
- Внешнее S3-совместимое хранилище: Облачные сервисы, такие как AWS S3, DigitalOcean Spaces, Backblaze B2, или MinIO на другом сервере. Это надежный и масштабируемый вариант.
- Отдельный VPS или dedicated сервер: Можно использовать другой, менее мощный VPS для хранения бэкапов с помощью
rsync,scpили специализированных инструментов, таких как Restic или BorgBackup. - Локальный компьютер: Для очень небольших проектов можно периодически скачивать бэкапы на ваш локальный компьютер.
Для автоматической загрузки на S3-совместимое хранилище можно использовать s3cmd или aws cli. Для Restic:
# Установка Restic
sudo apt install restic -y
# Инициализация репозитория (выполняется один раз)
restic init --repo s3:s3.eu-central-1.amazonaws.com/your-plausible-bucket --password-file /path/to/s3_password.txt
# Пример команды для бэкапа в скрипте:
# restic backup --repo s3:s3.eu-central-1.amazonaws.com/your-plausible-bucket "${BACKUP_FILE}" --password-file /path/to/s3_password.txt
Настройка Cron для автоматического бэкапа
Добавьте задачу в Cron, чтобы скрипт запускался регулярно (например, ежедневно).
crontab -e
Добавьте следующую строку в конец файла, чтобы скрипт запускался ежедневно в 3:00 ночи:
0 3 * /home/youruser/plausible/backup_plausible.sh >> /var/log/plausible_backup.log 2>&1
Сохраните и закройте. Убедитесь, что пользователь youruser имеет все необходимые права для выполнения скрипта и доступа к Docker.
Обновления: rolling vs. maintenance window
Регулярные обновления ПО важны для безопасности и получения новых функций.
- Обновление ОС: Рекомендуется выполнять раз в месяц или при выходе критических патчей. Используйте
sudo apt update && sudo apt upgrade -y. - Обновление Docker-образов: Для Plausible, PostgreSQL, ClickHouse.
- Rolling update (для Docker): Можно периодически выполнять
docker compose pullдля загрузки новых версий образов, а затемdocker compose up -d. Docker будет заменять контейнеры новыми версиями, сохраняя данные. Желательно делать это в период низкой нагрузки. - Maintenance window: Для более крупных обновлений или при смене мажорных версий Plausible/PostgreSQL/ClickHouse рекомендуется запланировать "окно обслуживания". Это означает, что вы временно останавливаете сервисы, делаете бэкап, обновляете
docker-compose.yml(если меняются версии образов или конфигурации), а затем запускаете снова.
- Rolling update (для Docker): Можно периодически выполнять
Пример обновления Docker-образов:
cd /home/youruser/plausible
# Остановка сервисов
docker compose down
# Загрузка последних версий образов
docker compose pull
# Запуск сервисов с обновленными образами
docker compose up -d
Всегда проверяйте официальную документацию Plausible для рекомендаций по обновлению перед выполнением.
Troubleshooting + FAQ
В этом разделе собраны типичные проблемы, которые могут возникнуть при установке и эксплуатации Plausible Analytics, а также ответы на часто задаваемые вопросы.
Plausible не запускается или недоступен по домену
Что проверить:
- DNS-записи: Убедитесь, что ваш домен (например,
analytics.yourdomain.com) правильно указывает на IP-адрес вашего VPS. Используйтеping analytics.yourdomain.com. - Порты Firewall (UFW): Убедитесь, что порты 80 (HTTP) и 443 (HTTPS) открыты. Выполните
sudo ufw status verbose. - Статус Docker-контейнеров: Проверьте, что все контейнеры Plausible, PostgreSQL и ClickHouse запущены и находятся в состоянии
healthy. Используйтеdocker compose psв директории Plausible. - Логи Docker-контейнеров: Если контейнер не запускается, проверьте его логи:
docker compose logs plausible,docker compose logs plausible_db,docker compose logs plausible_events_db. Ищите ошибки, связанные с подключением к БД, переменными окружения или нехваткой ресурсов. - Статус Caddy: Убедитесь, что Caddy запущен и не выдает ошибок.
sudo systemctl status caddyиsudo journalctl -u caddy --no-pager. Проверьте, что Caddy смог получить SSL-сертификат. - Конфигурация Caddyfile: Проверьте, что домен в Caddyfile соответствует вашему домену и что проксирование настроено на
127.0.0.1:8000. - Конфигурация
.env: Убедитесь, чтоBASE_URLв.envфайле Plausible соответствует вашему домену сhttps://.
Как фиксить: Исправьте соответствующие записи DNS, откройте порты в UFW, проверьте и исправьте ошибки в файлах .env, docker-compose.yml или Caddyfile, затем перезапустите Docker Compose (docker compose down && docker compose up -d) или Caddy (sudo systemctl reload caddy).
Ошибка "Database connection error" или "Plausible is unavailable"
Что проверить:
- Логи Plausible:
docker compose logs plausible. Ищите сообщения, связанные с подключением к PostgreSQL или ClickHouse. - Статус и логи PostgreSQL/ClickHouse: Убедитесь, что базы данных запущены и здоровы:
docker compose ps. Проверьте их логи:docker compose logs plausible_db,docker compose logs plausible_events_db. - Переменные окружения БД: Убедитесь, что
DATABASE_URLиCLICKHOUSE_DATABASE_URLв.envфайле Plausible настроены правильно, и пароли совпадают с теми, что указаны для PostgreSQL и ClickHouse.
Как фиксить: Исправьте пароли или URL-адреса в .env, затем перезапустите контейнер Plausible (docker compose restart plausible). Если проблема в базах данных, проверьте их конфигурацию и убедитесь, что они успешно стартуют.
Не приходят письма для сброса пароля или регистрации
Что проверить:
- Настройки SMTP в
.env: Убедитесь, что все переменныеSMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASSWORD,SMTP_MAIL_FROMнастроены правильно для вашего почтового провайдера. - Логи Plausible:
docker compose logs plausible. Ищите ошибки, связанные с отправкой почты. - Брандмауэр: Убедитесь, что порт, используемый для SMTP (обычно 587 или 465), открыт для исходящих соединений с вашего VPS.
Как фиксить: Проверьте данные для входа в SMTP-сервер. Если вы не уверены, обратитесь к документации вашего почтового провайдера. После изменений в .env перезапустите контейнер Plausible (docker compose restart plausible).
Какой VPS-конфиг минимально подойдёт для этой задачи?
Для минимальной установки Plausible Analytics с Docker, Caddy и PostgreSQL рекомендуется VPS с 2 ядрами CPU, 4 ГБ RAM и 80 ГБ SSD. Этого будет достаточно для обработки трафика в несколько сотен тысяч просмотров страниц в месяц. Важно, чтобы диск был SSD для обеспечения хорошей производительности базы данных. При значительном росте трафика или добавлении большого количества сайтов потребуется увеличение ресурсов, в первую очередь RAM и дискового пространства.
Что выбрать — VPS или dedicated для этой задачи?
Для большинства пользователей и проектов VPS является оптимальным выбором. Он предлагает достаточную производительность, гибкость и значительно более низкую стоимость по сравнению с dedicated сервером. Dedicated сервер стоит рассматривать только в случаях очень высокой нагрузки (миллионы просмотров страниц в день), когда требуется максимальная производительность, полная физическая изоляция или специфические аппаратные конфигурации, недоступные на VPS. Для типичного использования Plausible Analytics на VPS будет более чем достаточно ресурсов и возможностей для масштабирования.
Как обновить Plausible Analytics до новой версии?
Что проверить:
- Официальная документация Plausible: Всегда проверяйте официальный репозиторий GitHub Plausible Analytics на предмет последних версий и инструкций по обновлению.
- Изменения в
docker-compose.yml: Новые версии могут требовать обновления образов (например,plausible/analytics:v2.1), добавления новых переменных окружения или изменения в структуреdocker-compose.yml.
Как фиксить:
# Перейдите в директорию Plausible
cd /home/youruser/plausible
# Сделайте бэкап перед обновлением (крайне рекомендуется)
./backup_plausible.sh
# Отредактируйте docker-compose.yml, чтобы использовать новый образ Plausible
# Например, измените 'plausible/analytics:v2.0' на 'plausible/analytics:v2.1'
nano docker-compose.yml
# Загрузите новые образы
docker compose pull
# Остановите старые контейнеры и запустите новые
docker compose up -d
# Проверьте логи на предмет ошибок
docker compose logs plausible
Если обновление включает миграции базы данных, Plausible обычно выполняет их автоматически при запуске. Убедитесь, что все контейнеры снова находятся в состоянии healthy.
Выводы и следующие шаги
Поздравляем! Вы успешно установили и настроили Plausible Analytics на вашем VPS-сервере с использованием Docker, Caddy и PostgreSQL. Теперь у вас есть полностью функциональная, приватная и контролируемая система веб-аналитики, которая не собирает персональные данные и обеспечивает полный контроль над вашей информацией.
Ваш новый инстанс Plausible Analytics готов к работе, предоставляя вам ценные инсайты о посетителях ваших сайтов без компромиссов в отношении конфиденциальности. Вы получили не только инструмент, но и опыт развертывания комплексного веб-приложения на собственном сервере, что является ценным навыком для любого разработчика или владельца проекта.
Следующие шаги:
- Масштабирование: Если ваш трафик значительно возрастет, рассмотрите возможность увеличения ресурсов VPS (CPU, RAM, диск) или оптимизации конфигурации Plausible/ClickHouse.
- Мониторинг: Настройте систему мониторинга (например, Prometheus + Grafana) для отслеживания состояния вашего VPS, Docker-контейнеров и производительности Plausible.
- Дополнительные функции: Изучите возможности Plausible, такие как пользовательские события, цели и сегментация, чтобы глубже анализировать поведение пользователей.