Домашняя страница сервера — единая закладка, с которой открываются все приложения сервера. Вместо того чтобы запоминать адреса каждого агента и инструмента, вы заходите на одну страницу и видите их карточки. Это статичная панель: MultiAgent сам собирает её из своей базы и загружает на сервер, а Nginx отдаёт её в корне /. Отдельный контейнер для неё не нужен — достаточно установленного Nginx, а своё состояние страница не хранит вовсе.
Собственного входа у страницы нет. Всё, что нужно, решает центральный вход: когда он активен, корень закрывается вместе с остальными защищёнными приложениями, а когда выключен — страница открыта. Так одна учётная запись открывает и панель, и все приложения с неё.
Вкладка «Домашняя страница»
Вкладка расположена сразу справа от вкладки Nginx — сначала устанавливается Nginx, иначе устанавливать панель некуда. На вкладке — установка, кнопка применения (повторная сборка и загрузка), публичный адрес страницы, число карточек и выбор языка; полей для логина и пароля нет — страница статичная, и своего входа у неё нет.
Что на панели
Карточки — это то, что MultiAgent ведёт из своей базы. По одной карточке на каждого агента, продукт и инструмент с адресом, с реальными логотипами проектов: агенты несут логотип Agent, приложения — логотип своего шаблона, инструменты — свой. Если логотипа нет, карточка получает квадратик с первой буквой названия. Подпись карточки приложения лишена слова «App»: «Analytics App» становится «Analytics» — так карточка говорит, что это за приложение, а не что это приложение. Это только подпись на панели: сама запись в интерфейсе сохраняет полное имя.
- Значки дополнительных ссылок — в правом верхнем углу карточки агента или приложения выводятся значки, которые вы задали на вкладке «Ссылки»: наведите курсор, чтобы увидеть подсказку с названием;
- Строка кнопок в углу — общие действия живут не карточками, а кнопками-значками в правом верхнем углу панели, поверх сетки. Слева направо: «Git» — только пока на сервере запущен Forgejo, ведёт на его публичную подпапку; «Вход по QR-коду» — только пока включён центральный вход; и всегда крайняя справа «Выйти» — завершает сессию центрального входа, выходит из всех агентов и продуктов (их токены удаляются) и возвращает на панель. Это один клик, чтобы завершить все сессии сервера сразу, не выходя из каждой подсистемы по отдельности. Кнопки в углу не считаются приложениями: в число карточек на вкладке они не входят;
- Один и тот же адрес — карточка открывается в той же вкладке, а кнопка «назад» в браузере возвращает к панели.
Вход по QR-коду
Кнопка «Вход по QR-коду» открывает страницу с большим кодом, а под ним — той же ссылкой для копирования (один клик кладёт её в буфер). На телефоне достаточно навести камеру на код или открыть присланную ссылку: устройство войдёт в центральный вход и сразу попадёт на панель — пароль набирать не нужно. Ссылку можно скопировать и отправить человеку: он войдёт так же, без пароля.
Код одноразовый и живёт 24 часа. Он действует, пока им не воспользовались: после первого входа ссылка перестаёт работать, а неиспользованная — истекает через сутки. На сервере одновременно хранится до десяти живых кодов, и каждое открытие страницы показывает следующий по очереди — тот, что вы только что видели, не повторится. Значит, можно выдать вход нескольким людям или устройствам, и вход одного не отменяет остальные.
Если код уже использован или просрочен, страница сообщает об этом и предлагает ссылку на панель — новый код выдаёт кнопка «Ссылка для входа» в шапке карточки сервера. Вернуться на панель со страницы кода можно кнопкой «Главная» в её углу.
Страница выхода устроена так же: сначала она спрашивает подтверждение, и до ответа ничего не завершается. Выглядит она как сама панель — тот же фон, — а кнопки разные: «Отмена» обычная и возвращает назад, ничего не трогая, «Выйти» красная и завершает сессии.
Панель всегда актуальна
Менять страницу вручную не нужно: MultiAgent пересобирает её при каждом изменении состава приложений — развернули агента или инструмент, переименовали запись, добавили ссылку, поставили или сняли центральный вход. Сборка идёт и в конце каждого применения Nginx — даже если сама конфигурация маршрутов не изменилась. Поэтому упущенное обновление не остаётся навсегда: панель догоняет текущее состояние при следующем применении. Ручная кнопка применения делает то же самое сразу, когда нужно наверстать упущенное. Загрузка экономная: если на сервере уже лежит та же страница, файл заново не отправляется.
Язык надписей на странице выбирается на вкладке — английский или русский. Без явного выбора страница говорит на языке самого MultiAgent; сохранение выбора сразу пересобирает панель, никаких дополнительных действий не требуется.
Если на сервере прежде стояла старая домашняя страница, установка аккуратно уберёт её и поставит новую — все шаги видны в ленте прогресса.
Доступ и приоритеты
Панель отдаётся в корне сервера, а подпапки приложений всегда имеют приоритет: агент со слагом settings будет отдан по /settings/, а сама домашняя страница продолжит работать в корне. Если Nginx остановлен, страдает только корень — подпапки приложений продолжают работать.
Значок на вкладке браузера у самого MultiAgent всегда один и тот же: ни одно событие его не меняет. О том, что накопились задачи, ждущие решения, сообщает только число перед названием вкладки, а не картинка.