Как установить Plausible Analytics

Plausible Analytics – это приложение для веб-аналитики с открытым исходным кодом, написанное на Elixir и ориентированное на простоту и конфиденциальность. Оно хранит данные о посетителях вашего сайта в базах данных PostgreSQL и ClickHouse.

Следуя этому руководству, вы установите Plausible, используя Docker Compose, а затем настроите Nginx как обратный прокси для Plausible. В конце мы покажем, как включить безопасные соединения HTTPS с помощью Certbot и SSL-сертификатов от центра сертификации Let’s Encrypt.

Требования

  • Подготовленный сервер (мы используем Ubuntu 20.04) с включенным брандмауэром UFW. Пожалуйста, прочтите наше руководство по начальной настройке сервера Ubuntu 20.04, чтобы узнать больше.
  • Установленный Docker. Для этого следуйте первому пункту руководства Установка и использование Docker в Ubuntu 20.04. Вы можете выполнить и второй пункт, если хотите, чтобы ваш пользователь без полномочий root мог запускать команды docker, не используя sudo
  • Установленный Docker Compose. Установить его можно, просто следуя первому пункту из инструкции по установке Docker Compose в Ubuntu 20.04

Чтобы включить SSL, вам понадобится доменное имя, ссылающееся на общедоступный IP-адрес вашего сервера. Это может быть что-то вроде example.com или plausible.example.com.

Когда все предварительные требования выполнены, можно переходить к первому пункту руководства, где мы будем скачивать и запускать Plausible.

1: Установка Plausible Analytics при помощи Docker Compose

Plausible предоставляет Git-репозиторий со всеми файлами конфигурации, необходимыми для самостоятельного размещения программного обеспечения. Клонируем репозиторий на ваш сервер, обновляем два файла конфигурации, затем запускаем Plausible и контейнеры базы данных.

Залогиньтесь на вашем сервере.

Сначала с помощью команды cd перейдите в каталог /opt:

$ cd /opt

Затем используйте команду git для клонирования репозитория из GitHub в новый каталог под названием plausible внутри /opt:

$ sudo git clone https://github.com/plausible/hosting plausible

Это перенесет все необходимые конфигурации в новый каталог  /opt/plausible. Перейдите в него:

$ cd plausible

Первый файл, который нужно отредактировать, – plausible-conf.env. В нём есть несколько переменных конфигурации, которые нужно задать.

Прежде чем открывать файл для редактирования, сгенерируйте новый случайный хеш:

$ openssl rand 64 | base64 -w 0 ; echo

Команда  openssl используется для генерации 64 случайных символов, а команда base64 для их кодирования в base64. Скопируйте результат в буфер обмена и откройте конфиг:

$ sudo nano $plausible-conf.env

Файл содержит пять переменных, которые вам нужно задать:

ADMIN_USER_EMAIL=your_email_here
ADMIN_USER_NAME=admin_username
ADMIN_USER_PWD=admin_password
BASE_URL=https://your_domain_here
SECRET_KEY_BASE=paste_your_random_characters_here

Введите свой e-mail, имя пользователя, пароль и базовый URL-адрес, а затем вставьте случайные символы, сгенерированные при помощи openssl. Помните, что пароль должен содержать не менее шести символов.

Сохраните файл (CTRL+O, потом ENTER в nano) и закройте редактор (CTRL+X).

Вы можете добавить больше параметров в этот файл, но это – необходимый минимум для начала работы. Дополнительную информацию о настройке Plausible при помощи plausible-conf.env можно найти в официальной документации Plausible Analytics.

Теперь обновим файл docker-compose.yml. Он используется командой docker-compose для настройки и запуска нескольких контейнеров Docker. Нужно изменить одну опцию в этом файле – IP, к которому привязан Plausible.

$ sudo nano $docker-compose.yml

Найдите раздел c контейнером Plausible (начинается с plausible:). Там ищите значение ports: и задайте его следующим образом:

ports:
  - 127.0.0.1:8000:8000

Это гарантирует, что Plausible слушает только интерфейс localhost и не является общедоступным. Несмотря на то, что у вас настроен брандмауэр UFW, из-за некоторых причуд в работе сети Docker, если вы не сделали это, ваш Plausible контейнер будет доступен для публики через порт 8000. А нам нужно, чтобы он был доступен только через прокси Nginx, который вы настроите дальше.

Сохраните и закройте файл docker-compose.yml, затем используйте docker-compose для загрузки, настройки и запуска контейнеров:

$ sudo docker-compose up --detach

Контейнер приложения, все поддерживающие его почтовые контейнеры и контейнеры базы данных должны заработать. Вы можете убедиться в этом, используя команду curl, чтобы получить домашнюю нового контейнера Plausible, запущенного на localhost:

curl http://localhost:8000

<html><body>You are being <a href="/login">redirected</a>.</body></html>

Если терминал выдает какой-то HTML, это значит, что сервер запущен и работает.

Теперь давайте настроим nginx как обратный прокси для Plausible, чтобы он перенаправлял внешние запросы на localhost:8000.

2: Установка и настройка Nginx

Размещение веб-сервера Nginx перед вашим сервером elixir может повысить производительность за счет более эффективного кеширования, сжатия и обслуживания статических файлов. Установим Nginx и настроим его так, чтобы запросы к прокси-серверу были обращены в Plausible, то есть он позаботится о передаче запросов от ваших пользователей в Plausible и обратно.

Для начала обновите список пакетов, а затем установите Nginx, используя команду apt:

$ sudo apt update
$ sudo apt install nginx

Разрешите внешний трафик на порты 80 и 443 (HTTP и HTTPS) используя профиль приложения UFW “Nginx Full”:

$ sudo ufw allow "Nginx Full"

Rule added
Rule added (v6)

Затем откройте новый файл конфигурации Nginx в каталоге /etc/nginx/sites-available. Мы назвали наш plausible.conf, но вы можете использовать другое имя:

$ sudo nano /etc/nginx/sites-available/plausible.conf

Скопируйте это в новый конфиг, обязательно заменив your_domain_here –  доменом, который ведет на ваш Plausible сервер. Домен может быть, например, plausible.example.com.

server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/plausible.access.log;
    error_log   /var/log/nginx/plausible.error.log;

    location / {
      proxy_pass http://localhost:8000;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

В текущем виде этот конфиг актуален только для HTTP, мы позволим клиенту Certbot позаботиться о настройке SSL в следующем разделе. Остаток конфига устанавливает места для логирования, а потом передает весь трафик на http://localhost:8000, функционал Plausible, который мы запустили в предыдущем разделе.

Сохраните и закройте файл, затем подключите конфиг, направив его в /etc/nginx/sites-enabled/:

$ sudo ln -s /etc/nginx/sites-available/plausible.conf /etc/nginx/sites-enabled/

Используйте nginx -t , чтобы проверить правильность синтаксиса в файле конфига:

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

И, наконец, перезагрузите сервис nginx, чтобы подтянуть новый конфиг:

$ sudo systemctl reload nginx

Теперь ваш сайт Plausible доступен по обычному протоколу HTTP. Загрузите http://your_domain_here.

Теперь, когда ваш сайт настроен и работает по HTTP, самое время защитить соединение с помощью Certbot и сертификатов Let’s Encrypt.

3: Установка Certbot и настройка SSL-сертификатов

Благодаря Certbot и бесплатному центру сертификации Let’s Encrypt, чтобы добавить SSL-шифрование в наше приложение Plausible потребуется всего две команды.

Сначала установите Certbot и его плагин для Nginx:

$ sudo apt install certbot python3-certbot-nginx

Затем запустите certbot в режиме –nginx и укажите тот же домен, который использовали в конфиге Nginx server_name:

$ sudo certbot --nginx -d your_domain_here

Вам предложат принять условия использования Let’s Encrypt и ввести адрес электронной почты.

После этого у вас спросят, хотите ли вы перенаправить весь HTTP-трафик на HTTPS. Выбор за вами, обычно это рекомендуется сделать, поскольку так безопаснее.

После этого Let’s Encrypt подтвердит ваш запрос, и Certbot загрузит сертификат:

Congratulations! You have successfully enabled https://plausible.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=plausible.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/plausible.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/plausible.example.com/privkey.pem
   Your cert will expire on 2021-12-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Certbot автоматически перезапустит Nginx, чтобы получить новый конфиг и сертификаты. Обновите сайт, он автоматически переключится на HTTPS, если вы выбрали опцию перенаправления.

Теперь ваш сайт защищен, и вы можете безопасно залогиниться с данными пользователя по умолчанию. Затем вам будет предложат подтвердить регистрацию, а верификационный код будет отправлен по электронной почте на указанный адрес.

По умолчанию электронное письмо отправляется прямо с вашего сервера, что может вызывать проблемы из-за мер защиты от спама. Если вы не получили письмо, проверьте папку со спамом. Если и там его нет, вам придется отладить параметры SMTP в файле plausible-conf.env. Подробную информацию о настройке почты см. в официальной документации Plausible self-hosting.

После успешного входа в систему вы увидите запрос на первичную настройку вашего веб-сайта с помощью Plausible. Вы успешно установили и обезопасили Plausible Analytics.

Заключение

При помощи этого руководства вы запустили приложение Plausible Analytics и связанные с ним вспомогательные контейнеры при помощи Docker Compose. Затем настроили обратный прокси-сервер Nginx и защитили его с помощью SSL-сертификатов Let’s Encrypt.

Теперь вы готовы настроить отслеживание вашего веб-сайта, добавив на него треккинговый скрипт Plausible Analytics.

См. официальную документацию по Plausible Analytics для дополнительной информации об использовании ПО и настройке вашего сайта.

Tags: , , ,

Добавить комментарий