РазделОбновление
Обновление панели
Версия выпускается тегом; всё остальное делает CI. Тег v0.8.18 собирает .deb и
.rpm под amd64 и arm64, подписывает список контрольных сумм ключом ed25519 из
секрета репозитория и публикует релиз; текст аннотированного тега становится
описанием релиза.
make keygen # один раз: ключ подписи (приватный — в секрет MONOPANEL_RELEASE_KEY)
make release VERSION=0.8.18 # тег + push, дальше CI собирает и публикует
make packages VERSION=0.8.18 # то же локально, без публикацииНа сервере:
mp update settings --repo owner/name # --token-stdin для приватного репозитория
mp update # что установлено и что доступно
mp update apply # скачать, проверить подпись, установить, перезапуститься
mp update trust # каким ключом проверяется подпись
mp update trust --key <ключ форка> # свой ключ вместо встроенного; --off выключает проверкуПубличный ключ подписи релизов вшит в панель и в install.sh, так что подпись
проверяется по умолчанию — и при первой установке (если есть openssl 1.1.1+), и при
каждом обновлении. Ключ можно сверить с тем, что печатает workflow release-key:
eoGfJciXIG9upyFNJQR7rIsXtSs506DkiXT5kiBUyhg=Проверка обновлений идёт по расписанию (по умолчанию раз в сутки), --auto-apply ставит
обновление без участия человека. Устанавливает не сама панель: агент запускает
transient-юнит monopanel-update.service, который переживает перезапуск API и агента
и возвращает прежний бинарник, если новая версия не отвечает. Неподписанный релиз
не установится, пока проверка не выключена явно. Медленный канал не помеха: у загрузки
пакета нет общего таймаута, обрывается только застывший поток.