Как установить инструмент веб-аналитики Umami

Umami – это написанное на Node.js приложение для веб-аналитики с открытым исходным кодом. Оно сосредоточено на простоте, удобном дизайне, скорости работы и на конфиденциальности. Umami может хранить данные о посетителях вашего сайта в БД MySQL или PostgreSQL.

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

Требования

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

Чтобы включить SSL, вам понадобится доменное имя, связанное с внешним IP-адресом вашего сервера (например, example.com или umami.example.com).

Читайте также: Введение в DNS: основные термины, компоненты и понятия

1: Установка Umami и PostgreSQL с помощью Docker Compose

Для начала нам нужно клонировать репозиторий Umami с Git, обновить конфигурационный файл docker-compose.yml, а затем запустить контейнеры Umami и PostgreSQL.

Загрузим репозиторий в каталог /opt. Используйте команду cd, чтобы перейти туда:

cd /opt

И используйте команду git, чтобы клонировать репозиторий с GitHub:

sudo git clone https://github.com/mikecao/umami.git

Эта команда перенесет все программное обеспечение и конфигурационные файлы в /opt/umami. Теперь перейдите в новый каталог umami:

cd umami

На данный момент нам нужно обновить файл docker-compose.yml нашего проекта. Этот файл используется командой docker-compose для настройки и одновременного запуска нескольких контейнеров Docker. Нам нужно изменить в этом файле два параметра: IP-адрес, к которому привязывается Umami, и случайный хэш, используемый в качестве соли при шифровании данных.

Но прежде чем открыть docker-compose.yml для редактирования, давайте сгенерируем новый случайный хэш, который вставим в файл:

openssl rand -base64 32

Команда вернет:

tCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=

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

sudo nano docker-compose.yml

Найдите параметр HASH_SALT, удалите стандартный заполнитель и вставьте вместо него случайный хеш, который только что сгенерировали:

. . .
      HASH_SALT: replace-me-with-a-random-string
. . .

Затем найдите раздел конфигурации ports:. По умолчанию там находится значение “3000:3000”. Добавьте к нему 127.0.0.1:.

. . .
    ports:
      - "127.0.0.1:3000:3000"
. . .

Теперь мы можем быть уверены, что Umami прослушивает только интерфейс localhost и закрыт для общего доступа. Если вы не сделаете этого шага, из-за некоторых особенностей работы сети Docker ваш контейнер Umami будет доступен в интернете по порту 3000 несмотря на то, что у вас настроен брандмауэр UFW.

После внесения этих изменений в конфигурации сохраните файл (в nano Ctrl+O, затем нажмите Enter) и закройте редактор (Ctrl+X).

Теперь используйте команду docker-compose для запуска двух контейнеров:

sudo docker-compose up --detach

Флаг –detach позволяет docker-compose создавать контейнеры, отделенные от сеанса терминала:

. . .
Creating umami_db_1 ... done
Creating umami_umami_1 ... done

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

curl localhost:3000

Вы увидите в терминале большой кусок HTML-кода, а это значит, что сервер Umami запущен и работает:

<!DOCTYPE html><html><head><meta charSet="utf-8"/> . . .

Пора настроить Nginx в качестве обратного прокси-сервера Umami.

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

Разместив веб-сервер типа Nginx перед сервером Node.js, вы повысите производительность за счет более эффективного кеширования, сжатия и обслуживания статических файлов. Мы собираемся установить Nginx и настроить его для проксирования запросов к Umami (то есть он позаботится о передаче запросов от ваших пользователей к приложению Umami и обратно).

Сначала обновите список пакетов, а затем установите 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 . Мы назовем наш файл просто umami.conf, но вы можете использовать другое имя:

sudo nano /etc/nginx/sites-available/umami.conf

Вставьте следующие строки в новый файл конфигурации, обязательно заменив your_domain_here доменом, который вы настроили ранее (umami.example.com, например):

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

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

    location / {
      proxy_pass http://localhost:3000;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

На данный момент эта конфигурация предназначена только для HTTP, так как клиент Certbot займется настройкой SSL на следующем этапе. Конфигурация определяет места для логирования, а также передает весь трафик на http://localhost:3000 (копию Umami, которую мы запустили на предыдущем шаге).

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

sudo ln -s /etc/nginx/sites-available/umami.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

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

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

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

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

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

sudo apt install certbot python3-certbot-nginx

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

sudo certbot --nginx -d your_domain_here

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

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

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

Congratulations! You have successfully enabled https://umami.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=umami.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/umami.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/umami.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, если ранее вы выбрали вариант перенаправления HTTPS на HTTPS.

Ваш сайт в безопасности. Теперь вы можете войти в систему с учетными данными по умолчанию (пользователь admin, пароль umami). Пожалуйста, сразу сделайте это и следуйте официальной документации, чтобы заменить пароль более надежным.

Итак, вы успешно установили и защитили программное обеспечение Umami. В заключение этого руководства вы найдете ссылки на документацию, которые помогут вам начать работу с Umami.

Заключение

В этом мануале вы запустили приложение Umami на основе БД PostgreSQL с помощью Docker Compose, а затем настроили обратный прокси-сервер Nginx и защитили его с помощью SSL-сертификатов Let’s Encrypt.

Кроме того, вы также должны были войти в систему и обновить пароль по умолчанию. Если нет, сделайте это сейчас.

После этого перейдите к официальной документации, чтобы узнать, как добавить свой веб-сайт в Umami, а затем начните сбор данных, настроив отслеживание сайта.

Tags: , , , , , ,

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