Как установить инструмент веб-аналитики Umami
Ubuntu | Комментировать запись
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: Docker Compose, Let's Encrypt, NGINX, PostgreSQL, SSL, Ubuntu 20.04, Umami