Установка Fathom Analytics на Ubuntu 18.04
Что такое Fathom
Fathom — это простая self-hosted платформа веб-аналитики с минимальным трекингом и фокусом на конфиденциальности. Кратко: собирает основные метрики сайта без хранения личных данных пользователей.
Основные понятия
- Self-hosted: вы управляете сервером и данными.
- Reverse proxy: прокси, который принимает внешние запросы и перенаправляет их на внутренний порт (здесь — Nginx → Fathom на порту 9000).
Требования
- Сервер с Ubuntu 18.04.
- Статический IP, в примере: 192.168.0.103.
- Установлен и настроен root или пользователь с sudo.
- Рекомендуется резервная копия перед началом.
Начало работы — обновление системы
Перед установкой обновите пакеты и перезагрузите сервер, если потребуется:
apt-get update -y
apt-get upgrade -yЗатем перезагрузите сервер:
rebootУстановка Nginx и MariaDB
Установите Nginx и MariaDB:
apt-get install nginx mariadb-server -yЗапустите и включите сервисы:
systemctl start nginx
systemctl start mariadb
systemctl enable nginx
systemctl enable mariadbВажно: в продакшене MariaDB должна быть защищена сильным паролем и доступом только с доверенных хостов.
Настройка MariaDB
Защитите MariaDB и установите root-пароль:
mysql_secure_installationТипичные ответы (пример):
Enter current password for root (enter for none):
Set root password? [Y/n]: N
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: YВойдите в MariaDB и создайте базу и пользователя для Fathom:
mysql -u root -pВнутри MariaDB:
CREATE DATABASE fathom;
CREATE USER 'fathomuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON fathom.* TO 'fathomuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;Примечание: замените ‘password’ на надёжный пароль перед развёртыванием в продакшен.
Установка Fathom
Скачайте последний бинарный релиз Fathom для Linux (amd64):
wget https://github.com/usefathom/fathom/releases/download/latest-development/fathom-linux-amd64Переместите бинарь и сделайте его исполняемым:
mv fathom-linux-amd64 /usr/local/bin/fathom
chmod 755 /usr/local/bin/fathomСоздайте файл окружения .env в домашней директории (например, /root/.env или в директории сервиса):
nano /root/.envДобавьте следующие переменные (обязательно поменяйте FATHOM_DATABASE_PASSWORD и FATHOM_SECRET на безопасные значения):
FATHOM_SERVER_ADDR=9000
FATHOM_DEBUG=true
FATHOM_DATABASE_DRIVER="mysql"
FATHOM_DATABASE_NAME="fathom"
FATHOM_DATABASE_USER="fathomuser"
FATHOM_DATABASE_PASSWORD="password"
FATHOM_DATABASE_HOST="localhost"
FATHOM_DATABASE_SSLMODE=""
FATHOM_SECRET="random-secret-string"Важно: хранение секретов в открытом .env удобно для тестирования, но не безопасно для продакшена. Рассмотрите использование manager-а секретов или прав доступа к файлу 600.
Создайте администратора Fathom:
fathom --config=/root/.env user add admin@example.com --password=admin@123Пример вывода при успешном создании пользователя:
INFO[0000] Fathom 1.1.0
INFO[0000] Configuration file: /root/.env
INFO[0000] Connected to mysql database: fathomuser:password@tcp(localhost)/fathom?loc=Local&parseTime=true
INFO[0000] Created user admin@example.comЗапустите сервер Fathom для теста:
fathom --config=/root/.env serverОжидаемый фрагмент лога:
INFO[0000] Connected to mysql database: fathomuser:password@tcp(localhost)/fathom?loc=Local&parseTime=true
INFO[0002] Applied N database migrations!
INFO[0002] Server is now listening on :9000Если всё в порядке, продолжайте к созданию systemd-сервиса.
Сохранение изображений (ALT тексты)





Примечание: пути к изображениям сохранены без изменений. ALT-тексты переведены и описаны более конкретно.
Systemd-сервис для Fathom
Создайте unit-файл:
nano /etc/systemd/system/fathom.serviceВставьте конфигурацию:
[Unit]
Description=Fathom server management service unit
Requires=network.target
After=network.target
[Service]
Type=simple
User=root
Restart=always
RestartSec=3
WorkingDirectory=/root
ExecStart=/usr/local/bin/fathom --config=/root/.env server
[Install]
WantedBy=multi-user.targetЗагрузите systemd и включите сервис:
systemctl daemon-reload
systemctl enable fathom
systemctl start fathomПроверьте статус и логи:
systemctl status fathom
journalctl -u fathom -fКритерии приёмки
- Сервис Fathom активен и работает (Active: active (running)).
- В логах видна строка “Server is now listening on :9000”.
- Веб-интерфейс откликается через прокси Nginx (см. ниже).
Конфигурация Nginx как reverse proxy
Создайте виртуальный хост:
nano /etc/nginx/sites-available/fathomПростой конфиг для локального IP (HTTP):
server {
listen 80;
listen [::]:80;
server_name 192.168.0.103;
location / {
proxy_pass http://localhost:9000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Проверьте синтаксис и включите сайт:
nginx -t
rm -rf /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/fathom /etc/nginx/sites-enabled/
systemctl restart nginxТеперь интерфейс доступен по адресу: http://192.168.0.103
Важно: для продакшена используйте доменное имя и HTTPS.
Настройка HTTPS (Let’s Encrypt) — рекомендации
- Зарегистрируйте домен и укажите A-запись на ваш публичный IP.
- Установите certbot и плагин для Nginx:
apt-get install certbot python3-certbot-nginx -y- Получите сертификат (пример для example.com):
certbot --nginx -d example.com -d www.example.comCertbot автоматически обновит конфиг Nginx и добавит перенаправление с HTTP на HTTPS. Если вы используете внутренний IP (192.168.x.x), Let’s Encrypt выдаст ошибку — используйте самоподписанный сертификат или обратитесь к внутреннему PKI.
Резервное копирование и восстановление базы данных
Резервное копирование базы:
mysqldump -u root -p fathom > fathom-backup-$(date +%F).sqlВосстановление:
mysql -u root -p fathom < fathom-backup-YYYY-MM-DD.sqlРегулярные бэкапы и хранение на отдельном хранилище критичны для восстановления после сбоев.
Отладка и распространённые проблемы
- Если Fathom не стартует — проверьте переменные окружения (.env) и доступ к базе.
- “Connected to mysql database” отсутствует — проверьте права пользователя и пароль.
- Nginx возвращает 502 — убедитесь, что Fathom слушает на порту 9000 и systemd не упал.
- Используйте команды:
systemctl status fathom,journalctl -u fathom -f,ss -ltnp | grep 9000.
Рекомендации по безопасности и приватности
- Не используйте слабые пароли в .env. Установите права 600 на файл с секретами.
- Разрешите доступ к административной панели только с доверенных IP (через Nginx или firewall).
- Для соответствия требованиям конфиденциальности (GDPR) документируйте, какие данные вы храните и как долго.
Альтернативные подходы
- Контейнеризация: можно развернуть Fathom в Docker-контейнере и управлять сервисом через Docker Compose.
- Облачные managed-решения: если вы не хотите поддерживать сервер, рассмотрите SaaS-версии или альтернативные self-hosted (Matomo, Plausible, Ackee).
Контрольные списки по ролям
Администратор:
- Обновить систему и создать бэкап перед началом.
- Настроить firewall (ufw) и разрешить только нужные порты.
DevOps:
- Автоматизировать запуск через systemd и бэкапы (cron или systemd timers).
- Настроить мониторинг сервиса и алерты.
Разработчик / аналитик:
- Добавить сайт в Fathom и верифицировать трекинг-код.
- Проверить основные отчёты: топ-страницы, источники трафика, среднее время на сайте.
Короткая шпаргалка по командам
- Обновление системы:
apt-get update -y && apt-get upgrade -y - Проверка Nginx:
nginx -t - Логи Fathom:
journalctl -u fathom -f - Резервное копирование MariaDB:
mysqldump -u root -p fathom > backup.sql
Краткое резюме
Fathom — удобная и приватная self-hosted аналитика. На Ubuntu 18.04 её можно запустить за счёт скачивания бинаря, настройки MariaDB, создания systemd-сервиса и проксирования через Nginx. Для продакшена обязательно включите HTTPS, настройте надёжные пароли, регулярные бэкапы и ограничение доступа.
Важно
- Не используйте пароли по умолчанию в .env в продакшене.
- Для публичного доступа обязательно используйте домен и TLS-сертификат.
Дополнительные ресурсы и шаги
- Рассмотрите перенос на контейнеры (Docker) для удобства деплоя.
- Настройте ротацию логов и мониторинг доступности.
Конец статьи.
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить