Об этом проекте

Theia — приватная серверная аналитика Обзор Theia предоставляет статистику трафика сайта без использования клиентского JavaScript. Она в реальном времени отслеживает access-логи nginx, анализирует каждую строку для извлечения пути, реферера, пользовательского агента, IP, кода статуса и объёма переданных байт, хэширует IP-адреса ради конфиденциальности и сохраняет результаты в локальную базу данных SQLite. Поскольку вся обработка происходит на сервере, данные защищены от ad-blocker-ов и не зависят от сторонних сервисов. Установка Быстрая установка: скачайте скрипт установки через curl или wget и запустите с sudo bash. Скрипт определяет архитектуру, устанавливает бинарный файл в /usr/local/bin/theia, добавляет пользовательский формат логов nginx для отслеживания нескольких доменов (необязательно), создаёт systemd-сервис и подготавливает /var/lib/theia для хранения данных. Также поддерживается ручная установка — склонировать репозиторий, собрать через go build, скопировать бинарный файл, создать директорию данных и установить предоставленный systemd unit. Запуск демона Демон непрерывно читает access-лог nginx и записывает обработанные записи в базу данных SQLite. Пример команды: sudo theia daemon --log-path /var/log/nginx/access.log --db-path /var/lib/theia/theia.db Ключевые флаги: --log-path (по умолчанию /var/log/nginx/access.log) и --db-path (по умолчанию ./theia.db). Статистика через CLI Подкоманда stats читает базу данных и выводит сводную таблицу или JSON-вывод. Типичное использование: theia stats --db-path /var/lib/theia/theia.db Опции позволяют изменять период просмотра (--days), фильтровать по хосту (--host), выбирать формат вывода (--format json|table) и настраивать количество топ-записей (--top). HTTP API сервис Команда serve запускает защищённый bearer-токеном HTTP/JSON (или CSV) API на 127.0.0.1:8081. Его можно проксировать через nginx для внешнего доступа. Аутентификация может быть задана через токен-файл, переменную окружения или командную строку. Доступные эндпоинты: GET /api/v1/stats – данные временного ряда GET /api/v1/stats/paths – топ путей GET /api/v1/stats/referrers – топ рефереров GET /api/v1/stats/status-codes – разбивка по кодам статусов Основные параметры запроса: host, from, to, format, group_by, top. Completion для оболочки Команда theia completion определяет текущую оболочку и предлагает установить скрипты автодополнения для bash, zsh или fish. Управление сервисом Theia запускается как systemd unit. Используйте стандартные systemctl-команды для старта, остановки, перезапуска, просмотра статуса и отслеживания логов. Как это работает внутри 1. В реальном времени отслеживает файл лога nginx. 2. Анализирует каждую строку на предмет релевантных полей. 3. Хэширует IP + user-agent + дату для сохранения анонимности. 4. Автоматически определяет ботов и запросы статических активов. 5. Асинхронно записывает записи в SQLite (режим WAL), позволяя параллельное чтение. 6. Периодическая очистка удаляет почасовую статистику старше 60 дней. Меры безопасности Демону требуются права root или sudo для чтения access-логов nginx. Токен API следует хранить в файле, а не передавать в командной строке, чтобы избежать раскрытия через список процессов. Рекомендуется настроить rate limiting и правила fail2ban для шумных сканеров (см. docs/nginx-hardening.md). Ограничения * Собираются только счётчики просмотров страниц; нет клиентских событий. * Возможна потеря данных при внезапных сбоях. * Нет встроенного веб-дашборда — пользователи могут потреблять вывод CLI, HTTP API или выполнять прямые запросы к SQLite. Лицензия Apache License 2.0.