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

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення Plausible

calendar_month Jul 16, 2026 schedule 21 хв. читання visibility 21 переглядів
Установка 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 не використовує файли cookie, не збирає персональні дані та повністю відповідає вимогам GDPR, CCPA та PECR. Це ідеальне рішення для тих, хто хоче отримувати цінні дані про відвідувачів сайту, не порушуючи їхню приватність і не ускладнюючи свою інфраструктуру.

У підсумку ви отримаєте власний інстанс Plausible Analytics, доступний за вашим доменним ім'ям (наприклад, analytics.yourdomain.com), повністю контрольований і працюючий на вашому VPS. Усі дані зберігатимуться на вашому сервері, забезпечуючи максимальну конфіденційність та безпеку. Ви зможете додавати необмежену кількість сайтів для відстеження та переглядати статистику в зручному та інтуїтивно зрозумілому інтерфейсі.

Альтернативи: хмарні сервіси проти самостійного хостингу на 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 для рекомендацій щодо оновлення перед виконанням.

Вирішення проблем + 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.