diff --git a/README.md b/README.md
index 5f76274..2847138 100644
--- a/README.md
+++ b/README.md
@@ -72,10 +72,20 @@ ip link add link eth0 name eth0.200 type vlan id 200
## Как работает
-Плагин использует ExtJS `override` на `PVE.qemu.NetworkInputPanel` и добавляет поле Trunks в секцию Advanced. Оригинальные файлы Proxmox не модифицируются — загружается только новый JS-файл через index template.
+Плагин использует ExtJS `override` на `PVE.qemu.NetworkInputPanel` и добавляет поле Trunks в секцию Advanced. Сериализацию делает штатный `PVE.Parser.printQemuNetwork` (он уже умеет `trunks=`), плагин лишь поддерживает `me.network.trunks`. Исходные файлы pvemanagerlib не правятся — добавляется только новый JS-файл, подключённый в index template после `pvemanagerlib.js`.
+
+### Переживание обновлений
+
+JS-файл (`/usr/share/pve-manager/js/`) и `index.html.tpl` принадлежат пакету `pve-manager`, поэтому `apt upgrade` их затирает. Установщик поэтому:
+
+- кладёт копию плагина в `/usr/local/share/pve-trunks-plugin/`;
+- ставит идемпотентный `/usr/local/sbin/pve-trunks-reapply.sh` (восстанавливает JS и тег в шаблоне, перезапускает `pveproxy` только при реальном изменении);
+- регистрирует apt-hook `/etc/apt/apt.conf.d/99-pve-trunks-plugin`, дёргающий reapply в конце apt-транзакции.
+
+`install.sh` и `uninstall.sh` идемпотентны; перед правкой `index.html.tpl` делается бэкап `index.html.tpl.pve-trunks-bak`.
## Файлы
- `pve-trunks-plugin.js` — ExtJS override плагин
-- `install.sh` — установщик
-- `uninstall.sh` — удаление
+- `install.sh` — установщик (+ reapply-hook для апгрейдов)
+- `uninstall.sh` — удаление (вместе с reapply-машинерией)
diff --git a/install.sh b/install.sh
index ced34ee..1504334 100755
--- a/install.sh
+++ b/install.sh
@@ -1,42 +1,93 @@
#!/bin/bash
# PVE Trunks Plugin - Installer
-# Adds "Trunks" field to VM Network Device editor in Proxmox VE UI
+# Adds a "Trunks" field to the VM Network Device editor in the Proxmox VE UI.
#
# Usage: bash install.sh
+#
+# Both the plugin JS and the index template belong to the `pve-manager`
+# package, so an `apt upgrade` wipes them. This installer therefore also sets
+# up a reapply hook so the plugin survives Proxmox updates.
-set -e
+set -euo pipefail
PLUGIN_JS="pve-trunks-plugin.js"
PVE_JS_DIR="/usr/share/pve-manager/js"
INDEX_TPL="/usr/share/pve-manager/index.html.tpl"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
-SCRIPT_TAG=''
-# Check running as root
+# Persistent copy + reapply machinery (so upgrades can restore the plugin).
+STORE_DIR="/usr/local/share/pve-trunks-plugin"
+REAPPLY="/usr/local/sbin/pve-trunks-reapply.sh"
+APT_HOOK="/etc/apt/apt.conf.d/99-pve-trunks-plugin"
+SCRIPT_TAG=''
+
if [ "$(id -u)" -ne 0 ]; then
- echo "Error: run as root"
+ echo "Error: run as root" >&2
exit 1
fi
-# Check Proxmox
-if [ ! -d "$PVE_JS_DIR" ]; then
- echo "Error: Proxmox VE not found ($PVE_JS_DIR missing)"
+if [ ! -d "$PVE_JS_DIR" ] || [ ! -f "$INDEX_TPL" ]; then
+ echo "Error: Proxmox VE not found ($PVE_JS_DIR / $INDEX_TPL missing)" >&2
exit 1
fi
-# Copy plugin JS
-cp "$SCRIPT_DIR/$PLUGIN_JS" "$PVE_JS_DIR/$PLUGIN_JS"
-echo "Installed $PVE_JS_DIR/$PLUGIN_JS"
-
-# Patch index template if not already patched
-if ! grep -q "pve-trunks-plugin" "$INDEX_TPL"; then
- # Insert before closing