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 для продолжения установки.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/1-install-deps.webp?resize=833%2C512&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/1-install-deps.webp?resize=833%2C512&ssl=1)
После установки зависимостей необходимо убедиться, что каждая зависимость доступна в системе.
Проверьте службу postgresql с помощью приведенной ниже команды, чтобы убедиться, что служба запущена и включена.
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
Ниже в терминале будет показан результат, свидетельствующий о том, что postgresql запущен и включен.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/2-check-postgresql.webp?resize=800%2C190&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/2-check-postgresql.webp?resize=800%2C190&ssl=1)
Далее проверьте работу службы nginx, выполнив следующую команду.
sudo systemctl is-enabled nginx
sudo systemctl status nginx
В терминале будет выведен аналогичный вывод, свидетельствующий о том, что служба nginx запущена и включена.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/3-check-nginx.webp?resize=755%2C242&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/3-check-nginx.webp?resize=755%2C242&ssl=1)
Наконец, проверьте работу certbot, выполнив следующую команду. В результате будет найден двоичный исполняемый файл certbot и проверена текущая версия certbot, установленная в вашей системе.
which certbot
certbot --version
Выведенный результат покажет, что Certbot 2.1 установлен по адресу /usr/bin/certbot.ent certbot той версии, которая установлена в вашей системе.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/4-check-certbot.webp?resize=351%2C152&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/4-check-certbot.webp?resize=351%2C152&ssl=1)
Настройка брандмауэра
После установки зависимостей необходимо настроить 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».
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/5-start-enable-ufw.webp?resize=717%2C228&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/5-start-enable-ufw.webp?resize=717%2C228&ssl=1)
Наконец, проверьте состояние UFW с помощью приведенной ниже команды.
sudo ufw status
Выходной сигнал active указывает на то, что UFW запущен и включен, вы также должны увидеть, что профили OpenSSH и WWW Full добавлены в UFW.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/6-check-ufw.webp?resize=490%2C217&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/6-check-ufw.webp?resize=490%2C217&ssl=1)
Создание базы данных и пользователя 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;
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/7-create-user-daatbase.webp?resize=695%2C245&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/7-create-user-daatbase.webp?resize=695%2C245&ssl=1)
Теперь выполните следующие запросы для проверки списка доступных баз данных и пользователей на сервере PostgreSQL.
du
l
Если база данных и пользователь созданы, то будет представлен следующий вывод:
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/8-check-user-database.webp?resize=842%2C390&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/8-check-user-database.webp?resize=842%2C390&ssl=1)
Введите quit для выхода из сервера PostgreSQL.
После создания базы данных и пользователя выполните следующую команду для входа в PostgreSQL с пользователем fathom и базой данных fathomdb. При появлении запроса введите пароль пользователя базы данных.
sudo -u postgres psql -U fathom -h 127.0.0.1 -d fathomdb
После подключения к серверу PostgreSQL выполните следующий запрос для проверки соединения.
conninfo
После выполнения команды ниже будет показан вывод, свидетельствующий о том, что вы подключены к базе данных fathomdb с пользователем fathom.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/9-verify-user-connection.webp?resize=867%2C292&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/9-verify-user-connection.webp?resize=867%2C292&ssl=1)
Введите 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.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/10-download-fathom.webp?resize=728%2C245&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/10-download-fathom.webp?resize=728%2C245&ssl=1)
Конфигурирование 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 ''
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/11-setup-user-directory.webp?resize=708%2C183&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/11-setup-user-directory.webp?resize=708%2C183&ssl=1)
Затем перейдите в каталог /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, а в терминал будет выведен следующий вывод:
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/12-install-fathom.webp?resize=743%2C322&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/12-install-fathom.webp?resize=743%2C322&ssl=1)
Нажмите 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
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/14-fathom-systemd.webp?resize=667%2C205&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/14-fathom-systemd.webp?resize=667%2C205&ssl=1)
Проверьте работу службы fathom с помощью приведенной ниже команды, чтобы убедиться, что служба запущена и включена.
sudo systemctl is-enabled fathom
sudo systemctl status fathom
Если fathom запущен и включен, то будет представлен следующий вывод.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/15-verify-fathom.webp?resize=761%2C268&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/15-verify-fathom.webp?resize=761%2C268&ssl=1)
Добавление пользователя-администратора 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. После создания пользователя вы должны получить подтверждение, как показано ниже:
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/16-create-admin-user-fathom.webp?resize=1024%2C240&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/16-create-admin-user-fathom.webp?resize=1024%2C240&ssl=1)
Настройка 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
При правильном синтаксисе в терминал должен быть выведен вывод «синтаксис в порядке — тест пройден успешно».
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/17-nginx-fathom.webp?resize=806%2C208&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/17-nginx-fathom.webp?resize=806%2C208&ssl=1)
Далее выполните следующую команду для перезапуска службы 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.
Введите адрес электронной почты администратора и пароль, затем нажмите кнопку Войти.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/18-fathom-login.webp?resize=557%2C312&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/18-fathom-login.webp?resize=557%2C312&ssl=1)
Нажмите кнопку Создать сайт, чтобы создать первый трекер.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/19-add-site.webp?resize=569%2C229&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/19-add-site.webp?resize=569%2C229&ssl=1)
Вы должны увидеть код трекера, сгенерированный Fathom.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/20-site-code-track.webp?resize=558%2C468&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/20-site-code-track.webp?resize=558%2C468&ssl=1)
Ниже приведена подробная информация об аналитике сайта Fathom.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/21-site-created.webp?resize=1024%2C679&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/10/21-site-created.webp?resize=1024%2C679&ssl=1)
Отсюда вы можете добавлять и устанавливать новые трекеры для своих сайтов.
Заключение
В заключение можно сказать, что вы завершили установку веб-аналитики Fathom, ориентированной на конфиденциальность, на сервер Debian 12 с сервером баз данных PostgreSQL и Nginx в качестве обратного прокси. Вы также защитили свою установку с помощью SSl/TLS сертификатов от Letsencrypt и настроили UFW (Uncomplicated Firewalld) на сервере Debian. Вы можете добавить новый трекер и реализовать его на своих сайтах.