Живой лог показывает каждый запрос, который проходит через ноду, в реальном времени: кто пришёл, на какой домен, что ответил бекенд и сколько это заняло. Это самый быстрый способ понять, что происходит с трафиком прямо сейчас, — без доступа к бекенду и без разбора файлов.

Лог не записывается на диск: нода отдаёт строки только тем, кто в этот момент открыл страницу просмотра. Мы не видим и не храним ваш трафик — лог живёт только на вашей ноде.

Как включить#

По умолчанию лог выключен. Он включается переменными окружения в файле /opt/wafclient/.env на ноде.

  1. Подключитесь к ноде по SSH и добавьте в /opt/wafclient/.env:
LOGROUTE=/my-secret-log
LOGUSER=admin
LOGPASS=strong-password
  1. Перезапустите службу:
systemctl restart privateflare
  1. Откройте в браузере адрес лога на любом домене, который обслуживает эта нода:
https://ваш-домен.com/my-secret-log

Браузер запросит логин и пароль — введите значения LOGUSER и LOGPASS.

ПеременнаяОписаниеПо умолчанию
LOGROUTEАдрес страницы лога. Если не задана — лог выключенвыключен
LOGUSERЛогинlog
LOGPASSПарольlog
LOGFORMATФормат строк: json или текстовыйтекстовый

Важно: страница лога доступна на любом домене ноды. Задайте собственный пароль и неочевидный адрес вместо /log — значения по умолчанию общеизвестны.

Страница просмотра#

На странице новые запросы появляются сразу, без обновления:

  • Индикатор слева показывает состояние соединения: зелёный — лог поступает. При обрыве страница переподключается автоматически.
  • Фильтр оставляет только строки с указанным текстом — например, домен, IP или код ответа.
  • Autoscroll прокручивает лог к новым строкам. Отключите, чтобы спокойно изучить нужный фрагмент.

На странице хранятся последние 2000 строк. Сессия просмотра действует 24 часа, после чего страницу нужно открыть заново.

Формат строк#

Текстовый (по умолчанию)#

Формат близок к access-логу Nginx:

203.0.113.7 - DE [04/Oct/2026:12:30:15 +0000] "GET https://example.com/landing HTTP/2.0" 200 "https://google.com/" "Mozilla/5.0 ..." rt=0.142 uct=0.118
ПолеЗначение
203.0.113.7IP посетителя
DEСтрана посетителя
[04/Oct/2026:12:30:15 +0000]Время запроса
"GET https://example.com/landing HTTP/2.0"Метод, полный адрес и протокол
200Код ответа
"https://google.com/"Referer
"Mozilla/5.0 ..."User-Agent
rtПолное время обработки запроса, в секундах
uctВремя ответа бекенда, в секундах. -, если запрос не дошёл до бекенда

JSON#

Задайте LOGFORMAT=json, если лог читает скрипт или внешняя система:

{"time":"2026-10-04T12:30:15Z","status":200,"duration_ms":142,"backend_ms":118,"ip":"203.0.113.7","geo":"DE","method":"GET","host":"example.com","path":"/landing","ua":"Mozilla/5.0 ...","proto":"HTTP/2.0","tls":true}
ПолеЗначение
timeВремя запроса
statusКод ответа
duration_msПолное время обработки запроса, в миллисекундах
backend_msВремя ответа бекенда, в миллисекундах. null, если запрос не дошёл до бекенда
ipIP посетителя
geoСтрана посетителя
methodHTTP-метод
hostДомен
pathПуть запроса
uaUser-Agent
protoПротокол
tlstrue — запрос пришёл по HTTPS

Сравнивая duration_ms и backend_ms (или rt и uct), легко понять, где теряется время: на бекенде или на пути до него.

Что не попадает в лог#

  • Запросы служебного бота PrivateFlare (проверки доступности доменов) — чтобы не засорять лог.
  • Запросы, сделанные до открытия страницы: лог не хранит историю.

Как выключить#

Удалите строку LOGROUTE из /opt/wafclient/.env и перезапустите службу:

systemctl restart privateflare

Лог самой службы#

Сообщения клиента о запуске и ошибках пишутся в системный журнал. Посмотреть их можно командой:

journalctl -u privateflare -f