bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка Plausible Analytics на VPS: с Docker, Caddy и PostgreSQL

calendar_month Jul 16, 2026 schedule 21 мин. чтения visibility 8 просмотров
Установка Plausible Analytics на VPS: с Docker, Caddy и PostgreSQL
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка 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-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой 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-план со следующими характеристиками:

КритерийРекомендуемый минимумОптимально для роста
CPU2 ядра4 ядра
RAM4 ГБ8 ГБ
Диск80 ГБ SSD160 ГБ 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
Aanalytics (или @ если основной домен)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 (если меняются версии образов или конфигурации), а затем запускаете снова.

Пример обновления Docker-образов:


cd /home/youruser/plausible
# Остановка сервисов
docker compose down
# Загрузка последних версий образов
docker compose pull
# Запуск сервисов с обновленными образами
docker compose up -d

Всегда проверяйте официальную документацию Plausible для рекомендаций по обновлению перед выполнением.

Troubleshooting + FAQ

В этом разделе собраны типичные проблемы, которые могут возникнуть при установке и эксплуатации Plausible Analytics, а также ответы на часто задаваемые вопросы.

Plausible не запускается или недоступен по домену

Что проверить:

  1. DNS-записи: Убедитесь, что ваш домен (например, analytics.yourdomain.com) правильно указывает на IP-адрес вашего VPS. Используйте ping analytics.yourdomain.com.
  2. Порты Firewall (UFW): Убедитесь, что порты 80 (HTTP) и 443 (HTTPS) открыты. Выполните sudo ufw status verbose.
  3. Статус Docker-контейнеров: Проверьте, что все контейнеры Plausible, PostgreSQL и ClickHouse запущены и находятся в состоянии healthy. Используйте docker compose ps в директории Plausible.
  4. Логи Docker-контейнеров: Если контейнер не запускается, проверьте его логи: docker compose logs plausible, docker compose logs plausible_db, docker compose logs plausible_events_db. Ищите ошибки, связанные с подключением к БД, переменными окружения или нехваткой ресурсов.
  5. Статус Caddy: Убедитесь, что Caddy запущен и не выдает ошибок. sudo systemctl status caddy и sudo journalctl -u caddy --no-pager. Проверьте, что Caddy смог получить SSL-сертификат.
  6. Конфигурация Caddyfile: Проверьте, что домен в Caddyfile соответствует вашему домену и что проксирование настроено на 127.0.0.1:8000.
  7. Конфигурация .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"

Что проверить:

  1. Логи Plausible: docker compose logs plausible. Ищите сообщения, связанные с подключением к PostgreSQL или ClickHouse.
  2. Статус и логи PostgreSQL/ClickHouse: Убедитесь, что базы данных запущены и здоровы: docker compose ps. Проверьте их логи: docker compose logs plausible_db, docker compose logs plausible_events_db.
  3. Переменные окружения БД: Убедитесь, что DATABASE_URL и CLICKHOUSE_DATABASE_URL в .env файле Plausible настроены правильно, и пароли совпадают с теми, что указаны для PostgreSQL и ClickHouse.

Как фиксить: Исправьте пароли или URL-адреса в .env, затем перезапустите контейнер Plausible (docker compose restart plausible). Если проблема в базах данных, проверьте их конфигурацию и убедитесь, что они успешно стартуют.

Не приходят письма для сброса пароля или регистрации

Что проверить:

  1. Настройки SMTP в .env: Убедитесь, что все переменные SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_MAIL_FROM настроены правильно для вашего почтового провайдера.
  2. Логи Plausible: docker compose logs plausible. Ищите ошибки, связанные с отправкой почты.
  3. Брандмауэр: Убедитесь, что порт, используемый для 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 до новой версии?

Что проверить:

  1. Официальная документация Plausible: Всегда проверяйте официальный репозиторий GitHub Plausible Analytics на предмет последних версий и инструкций по обновлению.
  2. Изменения в 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, такие как пользовательские события, цели и сегментация, чтобы глубже анализировать поведение пользователей.

Поделиться этой записью:

установка plausible analytics на vps: с docker, caddy и postgresql
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.