UNRUIN
документация · v1.0

Панель

Панель

Что панель показывает, что она умеет менять и по каким правилам собраны её экраны.

unruin serve поднимает планировщик и на том же порту — веб-панель. Она вшита в бинарник: разворачивать отдельно нечего, наружу она не ходит ни за чем.

Адрес по умолчанию — http://127.0.0.1:8080, или там, куда её поставит UNRUIN_LISTEN.

Зачем она

Один вопрос, ответ на который виден за пять секунд с другого конца комнаты: всё ли зелёное? Всё остальное расставлено позади него.

  • Обзор — вердикт по всему парку одной фразой, затем Требует внимания: задания, с которыми не всё хорошо, худшее первым. У здорового парка это одна строка и больше ничего, что нужно читать.
  • Задания — список, затем одно задание: расписание, хранилища, недавние запуски и полный журнал любого из них.
  • Восстановление — экран, где всё уже подставлено, и лист для печати на случай, когда потеряна сама панель.
  • Серверы, Хранилища, Секреты — то хозяйство, куда заходят раз в месяц, а не каждый день; ровно поэтому оно живёт под разделителем.

У экранов есть адреса: #/jobs/<имя> и подэкраны /restore, /prune, /unlock, а также #/new. Оповещение о сбое может вести на задание, а не на панель вообще.

Правила, по которым собраны экраны

Их стоит знать: они объясняют, на что вы смотрите.

  • Цвет редок и всегда утверждает факт о данных. Зелёный — успех, янтарный — с оговорками, красный — сбой. Действия помечены цианом, и циан никогда не значит «хорошо».
  • Форма дублирует цвет. Круг, ромб, квадрат, пунктирное кольцо. Статус переживает распечатку и человека с дальтонизмом.
  • Никакой лексики движка. Вывод restic на экран не попадает. Сообщение о сбое говорит, какое хранилище, до чего дотянулись и что проверить. Единственное исключение — пакет, который вам действительно надо поставить: его называют по имени.
  • Сколько хранить показано следствием, а не формулой: «что у вас останется», а не keep-daily 7 keep-weekly 4.
  • Ухудшение честное. Устаревшие данные тускнеют, а не рисуются нулями; недоступный API так и говорит, вместо того чтобы показать пустой и на вид здоровый парк. Отсутствующее или закрытое хранилище секретов помечено плашкой — вместо формы, которая всё равно не сработает.

Управление конфигурацией из браузера

Когда правка разрешена, панель ведёт всю конфигурацию: задания, серверы и хранилища заводятся, меняются и удаляются из браузера. Задание добавляет мастер из четырёх шагов, и его вложенные слои умеют завести сервер и хранилище, не выбрасывая вас из потока.

Каждое изменение проходит одну и ту же последовательность:

  1. перечитать jobs.yaml с диска;
  2. применить изменение и проверить результат;
  3. прогнать туда-обратно (сериализация → разбор) — доказать, что файл по-прежнему загрузится;
  4. записать атомарно: временный файл, fsync, переименование, fsync каталога;
  5. подменить живую конфигурацию в работающем процессе.

Отвергнутое изменение возвращает ошибки и не трогает работающую конфигурацию. Падение на середине оставляет либо старый файл, либо новый — но не половину.

Две вещи API намеренно не делает: в конфигурацию он принимает ссылки на секреты, но не значения; а значения, сохранённые через него, можно заменить или удалить, но не прочитать обратно.

Правка из браузера переписывает jobs.yaml. Комментарии и порядок ключей не сохраняются. Если вы держите файл в git — а стоит, — коммитьте его время от времени.

Когда правка выключена

Правка под замком. Она разрешена, только если панель на loopback или настроен какой-то доступ, и запрещена начисто через UNRUIN_READONLY=1. В бою с конфигурацией из git рекомендуется именно UNRUIN_READONLY=1: панель читает и запускает, а любая запись возвращает честный 403. GET /api/health сообщает, в каком вы режиме, полем editable: true|false.

Полная таблица, включая ту конфигурацию, в которой Unruin отказывается стартовать, — вход и выставление наружу.

На телефоне

Ниже 900 пикселей то же приложение меняет раскладку, а не сжимается: левый рейл становится нижними вкладками, вердикт — стопкой карточек худшим вперёд, цели для пальца вырастают минимум до 44 пикселей, а журнал запуска едет вбок, вместо того чтобы переноситься в кашу.

Два экрана там не рисуются вовсе — хозяйство и мастер создания. Вводить ключ SSH и выражение cron с телефона в три часа ночи не нужно просить никого. Всё, чего телефон не умеет, сказано словами, а не показано серой кнопкой.

Что работает рядом с ней

serve — это не только панель. Тот же процесс ведёт:

  • планировщик, который тикает раз в UNRUIN_TICK (по умолчанию минута) и запускает подошедшие задания, соблюдая политику пропуска и наложения каждого;
  • уборку по расписанию (prune_schedule) — привилегированным доступом и в очереди по метке занятости хранилища;
  • предел времени запуска, чтобы зависшая цель не держала задание вечно;
  • оповещения по заданию, на те события, на которые оно подписано.

Компаньон на компьютере — другая вещь

Есть ещё небольшая программа в трее. Она намеренно не вторая панель: она отвечает на вопрос «есть ли копия этого на моей машине и насколько она свежая» и ничего не говорит про парк. См. компаньон на компьютере.

Бесплатно, целиком ваше, наружу ничего не уходит. Сайт статический: ни аналитики, ни куки, ни внешних запросов.