# Образец конфигурации healthlog. # # Реальный config.toml не коммитится (в нём токены), права 0600. # Все поля необязательны: без файла сервис поднимается на умолчаниях, что # удобно для локального запуска. Умолчание каждого поля указано ниже. [server] addr = ":8080" # адрес прослушивания; ":8080" — все интерфейсы (нужно, чтобы телефон достучался по локальной сети) read_timeout = "5m" # на всё чтение запроса вместе с телом; Go-duration. Щедро: экспорт истории — десятки мегабайт по мобильной сети # ВНИМАНИЕ: write_timeout в Go покрывает НЕ только отправку ответа. Он ставится # до вызова обработчика и потому включает чтение тела: значение меньше # read_timeout молча обрывает медленную загрузку. Маршрут приёма поэтому держит # собственный бюджет (read_timeout + write_timeout), а это значение остаётся # защитой от застрявшей записи ответа на остальных маршрутах. write_timeout = "30s" # на отправку ответа прочих маршрутов; Go-duration [auth] # Токены проверяются как `Authorization: Bearer <токен>`. # Health Auto Export умеет слать произвольные заголовки — токен задаётся в # настройках автоматизации. # ПУСТОЙ СПИСОК = ПРОВЕРКА ВЫКЛЮЧЕНА. Так можно в доверенной локальной сети; # сервис предупреждает об этом на старте записями `write auth disabled` и # `read auth disabled`. # # Цена у контуров РАЗНАЯ, и это стоит помнить: открытый приём означает мусор во # входе, открытое чтение — выгрузку всей истории здоровья любому, кто нашёл # порт. Перед выкладкой наружу `read_tokens` обязан быть непуст. write_tokens = [] # токены на приём данных read_tokens = [] # токены на чтение: каталог `GET /api/v1/metrics` и точки `GET /api/v1/metrics/{name}` [storage] # ВНИМАНИЕ: умолчания в коде (./healthlog.db и ./raw) остались от прежней # раскладки, а данные с 2026-08-01 живут в ./data. Запуск без конфига заведёт # ПУСТУЮ базу в корне репозитория рядом с настоящей. Умолчания подтянутся к # ./data первой же задачей, трогающей конфиг; до тех пор запускай с этим файлом. db_path = "./data/healthlog.db" # файл SQLite; каталог должен существовать archive_dir = "./data/raw" # корень сырого архива; создаётся при старте [ingest] # ВНИМАНИЕ: параметр РЕТРОАКТИВЕН. Тем же пределом читаются тела из архива при # пересборке (`healthlog reindex`), поэтому понижение выбрасывает из # пересобранной витрины все уже принятые тела крупнее нового значения — они # начнут отказывать на каждом прогоне. Понижать только вместе с проверкой, что # таких тел в архиве нет. max_body_mb = 64 # максимальный размер тела запроса, МиБ; целое > 0. Больше — 413 [log] level = "info" # debug | info | warn | error format = "json" # json | text (text удобен при локальной отладке)