Перейти к содержимому

Анонимная телеметрия установок

Чтобы понимать, сколько инсталляций активно и какие версии используются, бот может раз в сутки отправлять один полностью обезличенный «heartbeat». Телеметрия задумана как self-hosted friendly: её легко выключить, она не содержит персональных данных и не мешает работе бота.

Каждый сигнал — это случайный непривязанный идентификатор установки плюс грубые факты об окружении:

Поле Пример Назначение
installation_id f47ac10b-... (UUIDv4) Случайный идентификатор установки. Генерируется один раз, хранится в БД. Не выводится из токена, домена или ID администраторов.
app_version v3.4.6+gabc1234 Полная версия сборки.
app_version_tag v3.4.6 Релизный тег для разбивки по версиям.
build_provenance official / custom Маркер происхождения образа. official ставится только официальной сборкой проекта; локальные сборки и форки считаются custom.
image_modified false / true Удобный булевый флаг для разбивки: false только у официальных образов, true у локальных/форк-сборок.
os / arch linux / x86_64 Платформа.
python_version 3.12.7 Версия рантайма.
locale ru Язык по умолчанию.
payment_providers ["stars", "yookassa"] Идентификаторы включённых платёжных провайдеров (без ключей и секретов).
users_bucket 51-200 Число пользователей в виде диапазона, не точное значение.
webapp_enabled / panel_configured true Флаги конфигурации.

Время приёма (last_seen) проставляет коллектор. «Активные установки» = уникальные installation_id, от которых сигнал приходил за последние ~48 часов; «разбивка по версиям» = последняя версия на каждую установку.

Никогда не отправляются: токен бота, домены, URL вебхуков, ключи платёжных систем и Remnawave, ID или данные пользователей, точное число пользователей, какой-либо контент, registry образа или URL форка.

Достаточно любого из способов:

  • .env: TELEMETRY_ENABLED=False, затем перезапуск.
  • Веб-админка: Admin → System → «Анонимная статистика установки». Переключатель применяется без перезапуска (читается из БД на каждом тике).
  • Сборка/образ: оставить пустыми TELEMETRY_ENDPOINT или TELEMETRY_API_KEY — без точки доставки беакон не запускается.

Беакон шлёт POST {TELEMETRY_ENDPOINT}/capture/ в формате PostHog ({api_key, event, distinct_id, properties}). Доставка строго fire-and-forget: таймаут 10 секунд, любые ошибки проглатываются и логируются на уровне debug — телеметрия не может задержать или уронить воркер. При нескольких репликах воркера за интервал отправляет только одна (через Redis-lock).

Переменная По умолчанию Назначение
TELEMETRY_ENABLED True Главный переключатель (opt-out). Дублируется тогглом в админке.
TELEMETRY_ENDPOINT https://eu.i.posthog.com Хост приёма PostHog. Пусто — телеметрия выключена.
TELEMETRY_API_KEY пусто Project API key PostHog (phc_...). Это write-only ключ ingest, его безопасно зашивать в образ. Пусто — телеметрия выключена.
TELEMETRY_INTERVAL_HOURS 24 Интервал между сигналами.