Пакеты, диски и файлы, оборудование, система
Пакеты
- Поиск пакетов apt с ранжированием по совпадению, установка нескольких одной транзакцией; описание пакета — по наведению.
- Установленные пакеты — сеткой с поиском и удалением.
- Доступные обновления и
apt-get upgradeв живом окне терминала — намеренно без-y, с подтверждением. - Пакеты snap и flatpak: список, обновление, удаление.
Диски и файлы
- Файловые системы с занятостью (псевдо-ФС скрыты), подкачка, физические диски и разделы.
- Что занимает место: размеры подкаталогов по клику, уровень за уровнем.
- Файлы — проводник по разрешённым корням, из которых показываются только существующие (
/home,/srv,/opt,/tmp,/var/www; список настраиваетсяNKT_FILES_ROOTS): папки, переименование, удаление, скачивание; загрузка файлов и целых папок через диалог или перетаскиванием с общим прогрессом (галочка «без скрытых», включена по умолчанию, не грузит скрытое —.git,.env— и то, что перечислено в.gitignoreзагружаемой папки; неудачный файл повторяется до трёх раз, оставшиеся — кнопкой «повторить неудачные»); распаковка zip/tar на месте;git cloneзаданием, в том числе приватных репозиториев (токен по HTTPS или deploy-ключ хоста по SSH). - Загрузка с планом. Перед записью — окно «Что изменится»: какие файлы новые, какие заменят существующие (у текстовых — дифф «на хосте → загружаемый»), какие совпадают (их не загружают), какие защищены. У каждого файла — галочка. Загрузка ничего не удаляет на хосте.
- Защищённые файлы папки — шаблоны, которые загрузка по умолчанию не перезаписывает:
.env,.env.*,*.local.*,local_settings.*,wp-config.php,config.local.*, каталогиuploads/,storage/,media/,data/. Список правится кнопкой «Защищённые» (с диффом и историей); перезаписать защищённый файл можно только явной галочкой в плане. - История загрузок. Каждая загрузка — запись: кто, когда, куда, комментарий, какие файлы добавлены и заменены. Прежние версии заменённых файлов сохраняются; «Откатить» заданием возвращает их и убирает добавленное (файлы, изменённые после загрузки, не трогаются). У любого файла — «История версий» с диффом и откатом.
- Хранилище истории — занятость и лимиты: 200 МБ больших файлов на загрузку (текстовые хранятся всегда), 1 ГБ всего, 30 дней; сверх — вытесняется самое старое. Версии удаляются вручную: по одной, всю историю файла, загрузку целиком, всё старше выбранного срока. С 80% заполнения — находка в «Проблемах» и оповещение хаба.
- Правка текстовых файлов — как в «Конфигурациях»: номера строк, комментарий к правке, дифф «на диске → черновик» перед записью, защита от затирания чужой правки и вкладка «История версий» — кто, когда и зачем менял, дифф любой версии с текущим файлом, откат (тоже версией). Если файл — конфигурация известного сервиса (скажем, compose-файл в
/srv), запись идёт с проверкой сервисом и откатом при ошибке, а история общая с «Конфигурациями».
Оборудование
Машина, процессор, память, батареи, температуры (lm-sensors), PCI- и USB-устройства.
ИБП
Источник бесперебойного питания — через NUT (Network UPS Tools): nkt ставит и настраивает его сам, а читает состояние через upsc. Сервер NUT (upsd) слушает только 127.0.0.1 — наружу порт не открывается, хаб узнаёт о ИБП из обычного опроса хоста.
Карточка «ИБП» вверху раздела: состояние (от сети / от батареи / батарея садится / нет связи), заряд, нагрузка, сколько продержится на батарее, модель, драйвер, входное и выходное напряжение, флаги NUT и график за сутки (заряд, нагрузка, входное напряжение).
«Найти ИБП» — проверка без изменений:
- ИБП на USB по кодам производителя и изделия (Megatec/Cypress
0665:5161— Ippon, SVEN, Powercom и прочие ИБП, с которыми работает UPSilon 2000; APC, Eaton, CyberPower и другие — драйверusbhid-ups), COM-порты; - переходники USB-COM (Prolific PL2303, CH340, FTDI, CP210x) и порт, который им дало ядро (
/dev/ttyUSB0): ИБП с COM-портом часто подключён через них; - UPSilon 2000: работающие процессы (
rupsd,upsilon) с PID, каталог (/etc/upsilon), порт из его настроек, автозапуск — служба systemd,init.d, строка вrc.localили cron. Он держит порт ИБП, и драйвер NUT рядом с ним не заработает; - с чем подключать: порт из настроек UPSilon, иначе порт переходника, иначе ИБП на USB, иначе COM-порт;
- стоит ли NUT и описан ли в нём ИБП.
«Подключить ИБП» (администратор) — драйвер и порт уже выбраны по найденному; у usbhid-ups поле порта неактивно — этот драйвер только для ИБП, видимых как USB HID, а ИБП на COM или через переходник — nutdrv_qx или blazer_ser. Фоновым заданием с журналом: останавливает процессы UPSilon и выключает его автозапуск (службу — systemctl disable, строку в rc.local или cron — комментирует, копия файла — в резервной), ставит пакет nut, upsd только на 127.0.0.1, и пробует по очереди: выбранный драйвер на выбранном порту → тот же порт другим драйвером Megatec (nutdrv_qx / blazer_ser) → nutdrv_qx по USB, на каждый — до 40 с. Вариант не ответил — в журнал то, что сказал драйвер. Ни один не подошёл — всё возвращается как было: прежний /etc/nut из резервной копии (/var/lib/netknownsthat/nut-backup-…), автозапуск UPSilon, и сам UPSilon запускается той же командой, что работал. Галочка «Выключать этот хост, когда батарея садится» включает upsmon; без неё — только наблюдение и оповещения.
Файлы NUT (ups.conf, upsd.conf, upsmon.conf, nut.conf) правятся в «Конфигурациях» — с диффом и историей; upsd.users (в нём пароль) — нет.
Находки и оповещения. ИБП на батарее — находка «пропало питание»; на батарее и заряд ниже порога или времени осталось меньше — критичная «батарея садится»; нет связи с ИБП, перегрузка, «заменить батарею» — тоже находки. «Пороги оповещений» — заряд (по умолчанию 30%) и время (5 мин), правка с диффом и историей. Хаб пишет события «пропало питание», «питание вернулось», «батарея ИБП садится», «нет связи с ИБП» и шлёт их в Telegram, Slack и вебхуки; в списке хостов хаба у хоста с ИБП — значок-молния: зелёный — от сети, оранжевый — от батареи, красный — садится или нет связи.
Системные настройки
- Имя машины, часовой пояс (с поиском), NTP, состояние автоматических обновлений безопасности.
- Локали: все известные системе с поиском, генерация выбранных, назначение основной.
- Синхронизация времени: какая служба стоит (systemd-timesyncd, chrony, ntpsec), с кем сверяется, stratum и расхождение; выбор серверов NTP; «синхронизировать сейчас»; установка службы, если её нет.
- NetworkManager: соединения, устройства, Wi-Fi-сети, подключение с паролем.

- Перезагрузка хоста — карточка всегда здесь (выделена, когда перезагрузка требуется, например после обновления ядра); та же кнопка — в плашке «Требуется перезагрузка» на «Обзоре» и в «Пакетах». Окно перед перезагрузкой показывает, сколько работает сейчас (контейнеры Docker и Podman, инстансы LXD, машины, службы) и списком — что само не поднимется: контейнеры без политики перезапуска
alwaysилиunless-stopped, машины без автозапуска, инстансы LXD безboot.autostart, работающие, но выключенные из автозапуска службы. Кнопка «Перезагрузить» — только после галочки подтверждения; перезагрузка начинается через несколько секунд (ответ успевает дойти, в том числе через хаб) и пишется в журнал действий. На хабе хост на время станет «недоступен», затем придёт «перезагрузился».
Терминал
Полноценная оболочка на хосте в браузере (NKT_TERMINAL_ENABLED=true, по умолчанию выключен — это прямой доступ к shell). tmux-сессии переживают закрытие вкладки; открепление в отдельное окно; панель: копирование, очистка, размер шрифта, поиск. tmux и dbus-помощники ставятся кнопкой, если их нет.