Об этом проекте
ΛNΛLOG — это минималистичный инструмент аналитики, созданный для самостоятельного хостинга. Он вдохновлён проектом piratepx и акцентирует внимание на небольшом, понятном функционале, а не на обширном наборе возможностей. Проект состоит из веб-панели управления и сервера на Node.js. События записываются через простой API и отображаются в веб-интерфейсе. В README приведён скриншот панели и короткое демонстрационное видео.
Хранилище данных может быть изменено. Переменная ANALOG_DATABASE_PROVIDER позволяет выбрать один из четырёх бэкендов: MongoDB, PostgreSQL, Redis или SQLite. В README указаны рекомендуемые облачные провайдеры, такие как MongoDB, Supabase, Render, CockroachDB, Upstash и Turso. Также отмечено, что для PostgreSQL рекомендуется использовать пул соединений. Соединения с SQLite используют libsql и могут ссылаться на локальный файл по URL вида file:.
Конфигурация осуществляется через переменные окружения. Среди важных параметров: выбор провайдера базы данных и URL-адреса подключения, порт сервера, токен ANALOG_TOKEN для защиты запросов, флаг ANALOG_PROTECT_POST, требующий токен при POST-запросах, ANALOG_STATIC_SERVER, позволяющий серверу Node.js также обслуживать собранный фронтенд, и ANALOG_DATABASE_REQUEST_ITEM_COUNT, определяющий количество элементов, запрашиваемых за один вызов базы данных. Переменные фронтенда используют префикс VITE, поскольку приложение собрано с помощью Vite. Они управляют заголовком страницы, отображаемым временным диапазоном (минимум 10, максимум 30), запуском очистки данных во время GET-запросов и очередностью выполнения API-запросов вместо параллельного получения.
В README описаны варианты развёртывания: локальная разработка с помощью npm install и npm run dev, Dockerfile с аргументами сборки и переменными среды времени выполнения, а также облачные сервисы Koyeb, Netlify, Render и Vercel с соответствующими конфигурационными файлами (netlify.toml, render.yaml, vercel.json). Netlify и Vercel поддерживают планирование ежедневной функции очистки через cron, однако в README указано, что планировщик может не работать из-за ограничений среды выполнения.
API ориентирован на маршрут /api/events. POST-запрос отправляет имя события в теле и возвращает OK; если установлены ANALOG_PROTECT_POST и ANALOG_TOKEN, запрос должен содержать заголовок Authorization с токеном, предварительно добавленным к слову "Basic". GET-запрос возвращает данные событий в виде массивов чисел, ключевых по имени события. Он принимает необязательный параметр cursor для постраничных запросов к базе данных (если не указан, все данные извлекаются сразу) и необязательный параметр clean-up для запуска очистки данных во время запроса. При использовании cursor ответ содержит данные и значение nextCursor. Если задана переменная ANALOG_TOKEN, URL панели управления требует параметр запроса token, например hostname/?token=ANALOG_TOKEN.
В целом, ΛNΛLOG представляет собой легковесную альтернативу для базовой трекинга событий, с гибкими бэкендами хранения данных и простыми путями развертывания.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.