Панель
Панель
Что панель показывает, что она умеет менять и по каким правилам собраны её экраны.
unruin serve поднимает планировщик и на том же порту — веб-панель. Она вшита в
бинарник: разворачивать отдельно нечего, наружу она не ходит ни за чем.
Адрес по умолчанию — http://127.0.0.1:8080, или там, куда её поставит
UNRUIN_LISTEN.
Зачем она
Один вопрос, ответ на который виден за пять секунд с другого конца комнаты: всё ли зелёное? Всё остальное расставлено позади него.
- Обзор — вердикт по всему парку одной фразой, затем Требует внимания: задания, с которыми не всё хорошо, худшее первым. У здорового парка это одна строка и больше ничего, что нужно читать.
- Задания — список, затем одно задание: расписание, хранилища, недавние запуски и полный журнал любого из них.
- Восстановление — экран, где всё уже подставлено, и лист для печати на случай, когда потеряна сама панель.
- Серверы, Хранилища, Секреты — то хозяйство, куда заходят раз в месяц, а не каждый день; ровно поэтому оно живёт под разделителем.
У экранов есть адреса: #/jobs/<имя> и подэкраны /restore, /prune,
/unlock, а также #/new. Оповещение о сбое может вести на задание, а не на
панель вообще.
Правила, по которым собраны экраны
Их стоит знать: они объясняют, на что вы смотрите.
- Цвет редок и всегда утверждает факт о данных. Зелёный — успех, янтарный — с оговорками, красный — сбой. Действия помечены цианом, и циан никогда не значит «хорошо».
- Форма дублирует цвет. Круг, ромб, квадрат, пунктирное кольцо. Статус переживает распечатку и человека с дальтонизмом.
- Никакой лексики движка. Вывод restic на экран не попадает. Сообщение о сбое говорит, какое хранилище, до чего дотянулись и что проверить. Единственное исключение — пакет, который вам действительно надо поставить: его называют по имени.
- Сколько хранить показано следствием, а не формулой: «что у вас останется»,
а не
keep-daily 7 keep-weekly 4. - Ухудшение честное. Устаревшие данные тускнеют, а не рисуются нулями; недоступный API так и говорит, вместо того чтобы показать пустой и на вид здоровый парк. Отсутствующее или закрытое хранилище секретов помечено плашкой — вместо формы, которая всё равно не сработает.
Управление конфигурацией из браузера
Когда правка разрешена, панель ведёт всю конфигурацию: задания, серверы и хранилища заводятся, меняются и удаляются из браузера. Задание добавляет мастер из четырёх шагов, и его вложенные слои умеют завести сервер и хранилище, не выбрасывая вас из потока.
Каждое изменение проходит одну и ту же последовательность:
- перечитать
jobs.yamlс диска; - применить изменение и проверить результат;
- прогнать туда-обратно (сериализация → разбор) — доказать, что файл по-прежнему загрузится;
- записать атомарно: временный файл, fsync, переименование, fsync каталога;
- подменить живую конфигурацию в работающем процессе.
Отвергнутое изменение возвращает ошибки и не трогает работающую конфигурацию. Падение на середине оставляет либо старый файл, либо новый — но не половину.
Две вещи 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) — привилегированным доступом и в очереди по метке занятости хранилища; - предел времени запуска, чтобы зависшая цель не держала задание вечно;
- оповещения по заданию, на те события, на которые оно подписано.
Компаньон на компьютере — другая вещь
Есть ещё небольшая программа в трее. Она намеренно не вторая панель: она отвечает на вопрос «есть ли копия этого на моей машине и насколько она свежая» и ничего не говорит про парк. См. компаньон на компьютере.