Обновление панели из интерфейса и режим обновления в установщике
Установщик стал идемпотентным: на уже настроенной машине он определяет установленную версию, останавливает службу, меняет бинарник и поднимает её обратно, не трогая конфиг, миры и учётные записи. Зависимости при обновлении не переустанавливаются — это лишние минуты apt. Кнопки «Обновить» и «Перезапустить панель» появились на вкладке «Настройки» вместе с текущей версией и описанием нового релиза. Панель работает от непривилегированного пользователя и не может ни заменить свой бинарник в /usr/local/bin, ни дёрнуть systemctl. Вместо того чтобы расширять её права, установщик кладёт root-скрипт pzmanager-admin и разрешает сервисному пользователю через sudoers ровно эту одну команду. Скрипт сверяет sha256 скачанного бинарника с checksums.txt релиза. Если правила sudo нет, кнопки не будет — панель покажет команду для терминала. Перед обновлением и перезапуском игровой сервер останавливается штатным quit: иначе его погасил бы systemd уже в момент рестарта, и ожидание растянулось бы на таймаут остановки. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
ротацией, скачиванием и восстановлением (перед восстановлением
|
||||
автоматически снимается страховочная копия).
|
||||
- **Установка и обновление** сервера через SteamCMD прямо из панели.
|
||||
- **Обновление самой панели** — кнопкой из интерфейса или одной командой в
|
||||
терминале.
|
||||
|
||||
## Как это устроено
|
||||
|
||||
@@ -81,8 +83,9 @@ curl -fsSL https://gitea.hsrv.site/mrleo1nid/pzmanager/raw/branch/main/deploy/ge
|
||||
└── backups/ архивы
|
||||
```
|
||||
|
||||
**Обновление** — та же команда: конфиг, миры и учётные записи не трогаются,
|
||||
меняется только бинарник.
|
||||
**Обновление** — та же команда или кнопка в панели (вкладка «Настройки» →
|
||||
«Версия панели»). Конфиг, миры и учётные записи не трогаются, меняется только
|
||||
бинарник.
|
||||
|
||||
Дальше:
|
||||
|
||||
@@ -187,6 +190,36 @@ Mod ID, который нужен серверу, лежит внутри сам
|
||||
`server_name`, `admin_password` и `java_memory` превращаются в первый профиль
|
||||
при первом запуске.
|
||||
|
||||
## Обновление
|
||||
|
||||
Панель показывает свою версию и следит за релизами в репозитории: вкладка
|
||||
«Настройки» → «Версия панели». Если вышла новая версия, там появляется кнопка
|
||||
**«Обновить до …»**.
|
||||
|
||||
Обновление из интерфейса устроено так. Сама панель работает от
|
||||
непривилегированного пользователя и не может ни заменить свой бинарник в
|
||||
`/usr/local/bin`, ни дёрнуть `systemctl`. Поэтому установщик кладёт рядом
|
||||
маленький root-скрипт `/usr/local/bin/pzmanager-admin` и разрешает сервисному
|
||||
пользователю ровно его одну команду:
|
||||
|
||||
```
|
||||
pzserver ALL=(root) NOPASSWD: /usr/local/bin/pzmanager-admin
|
||||
```
|
||||
|
||||
Скрипт качает бинарник нужной архитектуры, сверяет sha256 с `checksums.txt`
|
||||
релиза, подменяет файл и перезапускает службу. Панель к этим файлам доступа не
|
||||
имеет — она может только попросить выполнить `update` или `restart`.
|
||||
|
||||
Если правило sudo не установлено (панель поставлена вручную или в системе нет
|
||||
`sudo`), кнопка не появится, а рядом будет показана команда для терминала:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://gitea.hsrv.site/mrleo1nid/pzmanager/raw/branch/main/deploy/get.sh | sudo bash
|
||||
```
|
||||
|
||||
Обновление и перезапуск панели останавливают игровой сервер — панель делает
|
||||
это сама, штатной командой `quit`, чтобы мир успел сохраниться.
|
||||
|
||||
## Доступ снаружи
|
||||
|
||||
Панель управляет сервером, поэтому наружу её лучше не выставлять голой. Два
|
||||
|
||||
Reference in New Issue
Block a user