Fathom — это веб-аналитика, ориентированная на конфиденциальность, которая предоставляет чистые и лаконичные данные о ваших веб-сайтах. Это простая программа для анализа веб-сайтов, которая предоставляет подробные отчеты и метрики о ваших сайтах. Fathom создан как альтернатива Google Analytics, но он не нарушает конфиденциальность пользователей и не ставит под угрозу данные посетителей. Она соответствует требованиям GDPR и не требует использования баннеров с уведомлениями о файлах cookie.
Fathom доступна в двух версиях: версия с открытым исходным кодом, которую можно установить на свой сервер, и профессиональная версия, которую можно приобрести на официальном сайте 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.

Настройка брандмауэра
После установки зависимостей вы настроите 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, чтобы продолжить подтверждение. В случае успеха вы должны увидеть сообщение «Брандмауэр активен и включен при запуске системы».

Наконец, проверьте статус 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 выполните команду 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.local;
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
Если синтаксис правильный, на терминале должно появиться сообщение «syntax is ok — test is successful» должен отобразиться в вашем терминале.

Затем выполните следующую команду, чтобы перезапустить службу 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.local
По завершении процесса ваши сертификаты SSL/TLS будут доступны в каталоге /etc/letsencrypt/live/domain.com . Кроме того, файл блока сервера Nginx /etc/nginx/sites-available/fathom автоматически настраивается на HTTPS с помощью плагина Certbot Nginx.
Доступ к Fathom
Запустите предпочитаемый веб-браузер и перейдите по доменному имени вашей установки Fathom, например http://analytics.local/. Вы должны быть автоматически перенаправлены на HTTPS-соединение и увидеть страницу входа в Fathom.
Введите адрес электронной почты и пароль администратора, затем нажмите Войти.
Нажмите Создать сайт чтобы создать первый трекер.
Заключение
В заключение, вы завершили установку Fathom, веб-аналитики, ориентированной на конфиденциальность, на сервере Debian 12 с сервером базы данных PostgreSQL и Nginx в качестве обратного прокси. Вы также защитили свою установку с помощью сертификатов SSl/TLS от Letsencrypt и настроили UFW (Uncomplicated Firewalld) на вашем сервере Debian. Вы можете добавить новый трекер и внедрить его на своих веб-сайтах.