Skip to content

Пакеты, диски и файлы, оборудование, система ​

Пакеты ​

  • Поиск пакетов 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-помощники ставятся кнопкой, если их нет.