Fathom — это веб-аналитика, ориентированная на конфиденциальность и предоставляющая чистые и четкие данные о ваших сайтах. Fathom создана как альтернатива Google Analytics, но при этом не вторгается в частную жизнь пользователей и не компрометирует данные о посетителях. Он соответствует требованиям GDPR и не требует установки баннеров cookie.
Fathom выпускается в двух версиях: с открытым исходным кодом, которую можно установить на свой сервер, и в версии pro, которую можно приобрести на официальном сайте Fathom. Среди известных пользователей аналитики сайта Fathom — IBM, Laravel, GitHub, Hoshicord, BOSCH, McLaren, VueJS и многие другие.
В этом руководстве мы пошагово рассмотрим установку Fathom Privacy Focused Web Analytics на сервер Debian 12. Мы рассмотрим установку Fathom с использованием PostgreSQL в качестве базы данных и Nginx в качестве обратного прокси. Кроме того, мы защитим Fathom с помощью сертификатов SSL/TLS от Letsencrypt.
Предварительные условия
Прежде чем приступить к работе, убедитесь, что у вас есть следующее:
- Сервер Debian 12.
- Пользователь, не являющийся пользователем root, с правами администратора.
- Доменное имя, указывающее на IP-адрес сервера.
Установка зависимостей
Fathom — это веб-аналитика, ориентированная на конфиденциальность, построенная на базе Golang и Preact. Он поддерживает такие базы данных, как PostgreSQL, MySQL и SQLite, и может работать с обратным прокси-сервером Nginx. Теперь вам предстоит установить зависимости пакетов для Fathom, такие как PostgreSQL, Nginx, Certbot и UFW (Uncomplicated Firewall).
Сначала выполните приведенную ниже команду apt для обновления репозитория Debian.
sudo apt update
Теперь установите зависимости, выполнив следующую команду. С ее помощью вы установите сервер PostgreSQL, веб-сервер Nginx, Certbot, плагин Nginx Certbot и UFW (Uncomplicated Firewall).
sudo apt install postgresql nginx certbot python3-certbot-nginx ufw
Введите y для продолжения установки.
После установки зависимостей необходимо убедиться, что каждая зависимость доступна в системе.
Проверьте службу postgresql с помощью приведенной ниже команды, чтобы убедиться, что служба запущена и включена.
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
Ниже в терминале будет показан результат, свидетельствующий о том, что postgresql запущен и включен.
Далее проверьте работу службы nginx, выполнив следующую команду.
sudo systemctl is-enabled nginx
sudo systemctl status nginx
В терминале будет выведен аналогичный вывод, свидетельствующий о том, что служба nginx запущена и включена.
Наконец, проверьте работу certbot, выполнив следующую команду. В результате будет найден двоичный исполняемый файл certbot и проверена текущая версия certbot, установленная в вашей системе.
which certbot
certbot --version
Выведенный результат покажет, что Certbot 2.1 установлен по адресу /usr/bin/certbot.ent certbot той версии, которая установлена в вашей системе.
Настройка брандмауэра
После установки зависимостей необходимо настроить UFW для защиты машины Debian. Для этого необходимо открыть порты для протоколов SSH, HTTP и HTTPS.
Выполните следующую команду, чтобы открыть порты для протоколов SSH, HTTP и HTTPS. Профиль OpenSSH откроет порт 22/tcp, а профиль WWW Full откроет HTTP и HTTPS — порты 80 и 443.
sudo ufw allow OpenSSH
sudo ufw allow "WWW Full"
Теперь выполните приведенную ниже команду для запуска и включения UFW в системе Debian.
sudo ufw enable
Введите y, чтобы продолжить подтверждение. После успешного завершения вы должны получить сообщение «Firewall is active and enabled on system startup».
Наконец, проверьте состояние UFW с помощью приведенной ниже команды.
sudo ufw status
Выходной сигнал active указывает на то, что UFW запущен и включен, вы также должны увидеть, что профили OpenSSH и WWW Full добавлены в UFW.
Создание базы данных и пользователя PostgreSQL
На следующем этапе необходимо создать новую базу данных PostgreSQL и пользователя, с которым будет работать Fathom. Для этого необходимо войти на сервер PostgreSQL с помощью командной строки psql.
Выполните следующую команду для входа на сервер PostgreSQL.
sudo -u postgres psql
Создайте новую базу данных fathomdb и пользователя fathom с помощью следующих запросов к PostgreSQL. не забудьте изменить пароль в следующем запросе.
CREATE USER fathom WITH CREATEDB CREATEROLE PASSWORD 'password';
CREATE DATABASE fathomdb OWNER fathom;
Теперь выполните следующие запросы для проверки списка доступных баз данных и пользователей на сервере PostgreSQL.
du
l
Если база данных и пользователь созданы, то будет представлен следующий вывод:
Введите quit для выхода из сервера PostgreSQL.
После создания базы данных и пользователя выполните следующую команду для входа в PostgreSQL с пользователем fathom и базой данных fathomdb. При появлении запроса введите пароль пользователя базы данных.
sudo -u postgres psql -U fathom -h 127.0.0.1 -d fathomdb
После подключения к серверу PostgreSQL выполните следующий запрос для проверки соединения.
conninfo
После выполнения команды ниже будет показан вывод, свидетельствующий о том, что вы подключены к базе данных fathomdb с пользователем fathom.
Введите quit еще раз, чтобы выйти из сервера PostgreSQL.
Загрузка бинарного файла Fathom
Fathom написан на языках Golang и Preact и доступен в виде одного двоичного файла, который можно легко загрузить и установить на свою систему.
Посетите страницу Fathom на GitHub и возьмите URL-адрес загрузки бинарного пакета Fathom. Затем загрузите его с помощью команды wget, приведенной ниже. В данном примере будет загружен Fathom 1.3.1.
wget https://github.com/usefathom/fathom/releases/download/v1.3.1/fathom_1.3.1_linux_amd64.tar.gz
После загрузки извлеките бинарный пакет Fathom в каталог /usr/local/bin/fathom и сделайте его исполняемым с помощью следующей команды.
tar -C /usr/local/bin -xzf fathom_1.3.1_linux_amd64.tar.gz
chmod +x /usr/local/bin/fathom
Наконец, выполните следующую команду, чтобы проверить расположение двоичного файла fathom и текущую версию fathom, которую вы загрузили.
which fathom
fathom --version
Следующий вывод показывает, что Fathom 1.3.1 установлен по адресу /usr/local/bin/fathom.
Конфигурирование Fathom
На следующем этапе вы настроите Fathom:
- Интеграции Fathom с базой данных PostgreSQL.
- Запуск Fathom в фоновом режиме в качестве службы systemd.
- Добавление пользователя-администратора для установки Fathom.
Интеграция с PostgreSQL в качестве базы данных
Fathom поддерживает множество баз данных, таких как SQLite (по умолчанию), MySQL и MariaDB. В этом разделе вы настроите каталог установки Fathom и интегрируете Fathom с сервером баз данных PostgreSQL.
Выполните следующую команду для создания нового системного пользователя fathom, который будет использоваться для запуска установки Fathom.
sudo useradd -r -d /opt/fathom fathom
Теперь создайте новый домашний каталог /opt/fathom и измените право собственности на пользователя fathom. Каталог /opt/fathom будет использоваться для хранения данных установки Fathom.
sudo mkdir -p /opt/fathom
sudo chown -R fathom:fathom /opt/fathom
После этого выполните приведенную ниже команду, чтобы сгенерировать случайный секрет для Fathom. Обязательно скопируйте полученный результат, поскольку он понадобится для защиты Fathom.
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 20 ; echo ''
Затем перейдите в каталог /opt/fathom.
cd /opt/fathom
Затем создайте новый каталог /opt/fathom/data и новый файл /opt/fathom/data/.env с помощью следующей команды.
sudo -u fathom mkdir -p /opt/fathom/data
sudo -u fathom nano /opt/fathom/data/.env
Вставьте следующую конфигурацию и не забудьте изменить данные об имени, пользователе и пароле базы данных PostgreSQL.
FATHOM_GZIP=true
FATHOM_DEBUG=true
FATHOM_DATABASE_DRIVER="postgres"
FATHOM_DATABASE_NAME="fathomdb"
FATHOM_DATABASE_USER="fathom"
FATHOM_DATABASE_PASSWORD="password"
FATHOM_DATABASE_HOST="127.0.0.1"
FATHOM_DATABASE_SSLMODE="disable"
FATHOM_SECRET="BWTtur9A1qWtXG6656q4"
После завершения работы сохраните файл и выйдите из него.
Наконец, выполните следующую команду, чтобы убедиться, что конфигурация Fathom выполнена успешно.
cd /opt/fathom/data
sudo -u fathom fathom server
После выполнения команды Fathom должен быть запущен на localhost с портом по умолчанию 8080, а в терминал будет выведен следующий вывод:
Нажмите Ctrl+c, чтобы завершить процесс.
Запуск Fathom в фоновом режиме как службы Systemd
В следующем разделе будет создан новый служебный файл systemd, который будет использоваться для запуска Fathom в фоновом режиме. Это позволит легко управлять Fathom с помощью утилиты systemctl.
Создайте новый служебный файл systemd /etc/systemd/system/fathom.service с помощью следующей команды редактора nano.
sudo nano /etc/systemd/system/fathom.service
Вставьте в файл следующую конфигурацию.
[Unit]
Description=Starts the fathom server
Requires=network.target
After=network.target
[Service]
Type=simple
User=fathom
Restart=always
RestartSec=3
WorkingDirectory=/opt/fathom/data
ExecStart=/usr/local/bin/fathom server
[Install]
WantedBy=multi-user.target
После завершения работы сохраните и закройте файл.
Далее выполните следующую команду systemctl для перезагрузки менеджера systemd и применения сделанных изменений.
sudo systemctl daemon-reload
После перезагрузки systemd manage выполните приведенную ниже команду systemctl для запуска и включения службы fathom. В результате Fathom будет работать в фоновом режиме на localhost с портом по умолчанию 8080.
sudo systemctl start fathom
sudo systemctl enable fathom
Проверьте работу службы fathom с помощью приведенной ниже команды, чтобы убедиться, что служба запущена и включена.
sudo systemctl is-enabled fathom
sudo systemctl status fathom
Если fathom запущен и включен, то будет представлен следующий вывод.
Добавление пользователя-администратора Fathom
Теперь, когда Fathom работает в фоновом режиме как служба, необходимо создать пользователя-администратора для вашей установки Fathom. Это можно сделать с помощью командной строки fathom.
Чтобы создать пользователя Fathom, можно запустить командную строку fathom из каталога данных fathom.
Переместите текущий рабочий каталог в каталог /opt/fathom/data.
cd /opt/fathom/data
Выполните следующую команду для создания пользователя-администратора для вашей установки Fathom. Обязательно измените адрес электронной почты и пароль с помощью следующей команды.
sudo -u fathom fathom user add --email="[email protected]" --password="password"
Команда будет использовать файл .env для подключения к серверу PostgreSQL. После создания пользователя вы должны получить подтверждение, как показано ниже:
Настройка Nginx в качестве обратного прокси-сервера
На этом конфигурирование Fathom завершено. На следующем этапе вы настроите Nginx в качестве обратного прокси-сервера для установки Fathom. Прежде чем продолжить, убедитесь, что на IP-адрес сервера указывает доменное имя.
Создайте новую конфигурацию блока сервера Nginx /etc/nginx/sites-available/fathom, используя приведенную ниже команду редактора nan.
sudo nano /etc/nginx/sites-available/fathom
Вставьте следующую конфигурацию и не забудьте изменить имя домена в опции server_name.
server {
listen 80;
server_name analytics.hwdomain.io;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}
По окончании работы сохраните и выйдите из файла.
Теперь выполните следующую команду для активации файла блока сервера /etc/nginx/sites-available/fathom и проверки синтаксиса Nginx.
sudo ln -s /etc/nginx/sites-available/fathom /etc/nginx/sites-enabled/
sudo nginx -t
При правильном синтаксисе в терминал должен быть выведен вывод «синтаксис в порядке — тест пройден успешно».
Далее выполните следующую команду для перезапуска службы Nginx и применения сделанных изменений. После выполнения этой команды установка Fathom должна быть доступна с вашего доменного имени.
sudo systemctl restart nginx
Наконец, выполните следующую команду certbot для защиты установки Fathom с помощью сертификатов SSL/TLS от Letsencrypt. Не забудьте изменить доменное имя и адрес электронной почты на свои данные.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d analytics.hwdomain.io
После завершения процесса ваши сертификаты SSL/TLS будут доступны в каталоге /etc/letsencrypt/live/domain.com. Кроме того, файл блока сервера Nginx /etc/nginx/sites-available/fathom будет настроен на HTTPS автоматически с помощью плагина Certbot Nginx.
Доступ к Fathom
Запустите предпочтительный веб-браузер и перейдите на доменное имя вашей установки Fathom, например, http://analytics.hwdomain.io/. Вы должны быть автоматически перенаправлены на HTTPS-соединение, и перед вами откроется страница входа в систему Fathom.
Введите адрес электронной почты администратора и пароль, затем нажмите кнопку Войти.
Нажмите кнопку Создать сайт, чтобы создать первый трекер.
Вы должны увидеть код трекера, сгенерированный Fathom.
Ниже приведена подробная информация об аналитике сайта Fathom.
Отсюда вы можете добавлять и устанавливать новые трекеры для своих сайтов.
Заключение
В заключение можно сказать, что вы завершили установку веб-аналитики Fathom, ориентированной на конфиденциальность, на сервер Debian 12 с сервером баз данных PostgreSQL и Nginx в качестве обратного прокси. Вы также защитили свою установку с помощью SSl/TLS сертификатов от Letsencrypt и настроили UFW (Uncomplicated Firewalld) на сервере Debian. Вы можете добавить новый трекер и реализовать его на своих сайтах.