NKT (NetKnownsThat): open-source замена зоопарку инфраструктурных инструментов
- суббота, 17 октября 2026 г. в 00:00:08
"Я каждый день работаю с кучей инструментов для мониторинга и управления инфраструктурой и меня сильно раздражает то, что путь от момента первого запуска до нормального использования неоправданно длинный." - Владислав, инженер
Меня зовут Александр, я один из разработчиков NKT (NetKnownsThat) — нашего первого опенсоурс проекта
NKT - это один бинарник на Go (~29 МБ) с встроенным веб-интерфейсом на React+TypeScript+Ant Design. Без Python, Node.js и внешних зависимостей, всё внутри бинарника. Лицензия MIT, сторонние компоненты (noVNC, spice-html5) — со своими открытыми лицензиями. Инструмент анализа, мониторинга, управления от локального компьютера до кластера, от редактирования конфига до прогноза расхода ресурсов Docker-контейнера.
Так выглядит раздел Обзор на хосте

Взамен романа Жуля Верна сухие возможности:
киллер-фича № 1: истина только сейчас
Основной режим использования NKT — это хаб, который постоянно работает в памяти. При этом сам инструмент спроектирован так, чтобы его можно было с лёгкостью удалять и устанавливать: агент на хосте ничего не хранит о сервере — ни базы данных, ни кэша, ни инвентаря. Истина — это сама файловая система Linux и живые процессы. В режиме local NKT после первого запуска уже всё знает о хосте: парсит конфиги nginx, haproxy, docker, опрашивает живые сокеты, службы и фаерволл — и данные сразу доступны даже в режиме tui. Удалили NKT — на сервере не осталось никаких хвостов.
киллер-фича № 2: узкий Sudo — управления привилегиями с криптографией (Hub-sudo)
Это архитектурное решение, аналогов которому почти нет. Все привилегированные операции выполняются только по криптографически подписанным командам от хаба:
хаб генерирует команду и подписывает её приватным ключом хаба;
агент на хосте выполняет её через hub-sudo, только если подпись верна;
hub-sudo принимает команды лишь из заранее определённого списка: установка, обновление, служба, журнал, пароль админа, apt-прокси;
каждая подписанная команда содержит номер (nonce), предотвращающий повторное использование перехваченного запроса.
Итог: вектор атаки «скомпрометированный агент = root на сервере» устранён. Хаб физически не может выполнить на хосте ничего вне подписанного белого списка.
киллер-фича № 3: NKT сам находит порты, процессы, уязвимости и майнеры
В разделах Обзор и Карта ресурсов хоста это наглядно показано, при этом раздел Обзор хранит снапшот состояния и покажет вам что изменилось с момента последнего входа, это же правило работает с uptime под именем хоста. Раздел Уязвимости показывает CVE как на хосте так и в docker, lxd образах, а подраздел Вредоносное проанализирует наличие майнеров и признаков взлома и также можно воспользоваться ClamAV для сканирования, есть возможность обновления базы с хаба.
Всё это без настройки: NKT сразу после установки начинает сканировать хост и строить граф связей между сервисами.

киллер-фича № 4: ИИ как полноценный член команды
В некоторых разделах встречается иконка лампочки — это запрос к ИИ. Настройки, провайдеры и промпты живут в разделе хаба «О системе»; поддерживаются Anthropic, OpenAI-совместимые API и локальная LLM. Перед отправкой запроса реальные данные маскируются: секреты, токены и адреса вырезаются из промпта, поэтому наружу не уходит ничего чувствительного. А с локальной LLM анализ вообще не покидает ваш контур.
Мы заботимся о расходе токенов: каждый ответ сохраняется у находки. Жёлтая лампочка — запрос уже выполнялся, ответ сохранён и не тратит токены повторно. Синяя — подобный запрос уже делался в другом разделе, и готовый ответ подставляется оттуда. ИИ не просто объясняет проблему, он предлагает действие. В списке забаненных адресов fail2ban лампочка проверяет конкретный внешний IP и подсказывает, стоит ли держать его в бане.

киллер-фича № 5: Управление без интернета на хостах (Air-Gap)
Центральный хаб берёт на себя роль зеркала: кэшируются deb-пакеты, docker-образы и helm-чарты, а для развёртывания Kubernetes можно использовать собственные образы загруженные на хаб. Кластер можно поднять на хостах, у которых нет выхода в интернет вообще.
nkt-edge — лёгкий агент для минимального VPS: он принимает вебхуки и держит туннель до хаба, позволяя управлять сервером, спрятанным за NAT или чужим фаерволом.
киллер-фича № 6: All in one консоли (VNC, SPICE, Веб терминал)
Сторонние клиенты больше не нужны:
веб терминал с интеграцией tmux - сессия переживает закрытие браузера;
в веб терминале полностью переписаны режимы копирования, прокрутки и работы мышью;
графические консоли виртуальных машин (noVNC и spice-html5) прямо в браузере, трафик идёт через туннель хаба.
Защита от выстрела в ногу
Это не отдельная фича, а принцип, который мы старались применить во всех областях работы NKT:
резервный канал связи, если SSH до хоста недоступен;
адрес хаба закреплён в ignoreip fail2ban — сервера не забанят сами себя;
встроенный редактор конфигов работает как git: проверка перед применением, история версий, откат;
сухой прогон с чек-листом перед развёртыванием кластера;
опасные операции требуют подтверждения словом, а не одного клика.
это только верхушка айсберга — полный список возможностей в документации
Вместо заключения
И ещё одна деталь, нетипичная для опенсорса: документация написана на русском языке изначально, а английская версия — это перевод, а не исходник.
Мы долго спорили с коллегами, о чем должна быть первая статья на Хабре, кто-то говорил про дизайн интерфейсов, кто-то про историю создания проекта, кто-то про маркетинг. В итоге мы пришли к одному логическому заключению: все мы в написании статьи хотели одного — понравится публике и угодить рамкам. В моменте я осознал всю безумность этой задачи и сказал СТОП, ведь мы не писатели и за пару недель никак ими не станем. Мы просто разработчики программных продуктов и всё, что мы вложили в разработку NKT это опыт не только разработчика, но и опыт пользователя и это важный момент, который мы всегда учитываем при разработке продуктов.
Три принципа, которым мы следуем:
Быть пользователем своего продукта. Казалось бы, всё просто — но почему это правило многие настойчиво игнорируют?
Быть простым. Это очень сложно, особенно если это технические интерфейсы с большим количеством текста.
Быть актуальным. Мы искренне не понимаем, зачем не внедрять современные технологии там, где это уместно.
Мы не идеальны: есть и ошибки, и шероховатости. В планах — довести до паритета с вебом приложения для Android и iOS. Проект мы развиваем активно, потому что сами ежедневно используем NKT в работе, он прошёл путь от TUI с одним экраном, до того, как выглядит он сейчас. Это Infrastructure-as-Code с человеческим лицом и встроенным здравым смыслом.
Сегодня самый главный ресурс — это время, мы ценим в своей работе и стараемся максимально сократить путь от знакомства до использования. Ждём вас в нашем репозитории.
👉 GitHub: github.com/piqab/nkt
📚 Документация: piqab.github.io/nkt
Всегда рады комментариям