From e93a7e9f600b88d2d6d64599bf1be94d47906e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Thu, 14 May 2026 15:56:57 +0300 Subject: [PATCH] docs: add upgrade steps; no-store cache for admin static Co-authored-by: Cursor --- README.md | 20 ++++++++++++++++++++ server.js | 11 ++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1cdb8df..8d42397 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,26 @@ cd /opt/amnezia-admin && chmod +x scripts/install.sh && sudo SKIP_DOWNLOAD=1 bas После установки: **админ-панель** `http://IP:8080` (или ваш `HOST_PORT`), **страница с поддержкой проекта** `http://IP/` на порту лендинга (по умолчанию **80**). Кнопка на лендинге ведёт на админку с тем же `HOST_PORT`. +Футер с ссылками (**Kaskad WebUI**, Boosty, Ozon СБП, Telegram) в админке находится **внизу страницы** — прокрутите ниже таблицы. + +### Обновление до новой версии + +Коммиты на GitHub **сами не попадают** в уже запущенный контейнер: нужно заново **скачать код и пересобрать образ**. + +Проще всего — та же команда, что при установке (данные в `DATA_DIR`, пароль сохранится): + +```bash +curl -fsSL https://raw.githubusercontent.com/andrey271192/Amnezia_web/main/scripts/install.sh | sudo bash +``` + +Если проект уже лежит в `/opt/amnezia-admin` через git и вы подтянули изменения (`git pull`), пересоберите без повторной загрузки архива: + +```bash +cd /opt/amnezia-admin && sudo SKIP_DOWNLOAD=1 HOST_PORT=8080 bash scripts/install.sh +``` + +Подставьте свой `HOST_PORT`, если панель не на `8080`. После обновления сделайте в браузере **жёсткое обновление** страницы (Ctrl+Shift+R / ⌘+Shift+R), если интерфейс всё ещё старый. + --- ## Удаление одной командой diff --git a/server.js b/server.js index 84749c0..9e1e4f8 100644 --- a/server.js +++ b/server.js @@ -592,7 +592,16 @@ app.post("/api/clients/delete", requireAuth, async (req, res) => { const pub = path.join(__dirname, "public"); if (fs.existsSync(pub)) { - app.use(express.static(pub)); + app.use( + express.static(pub, { + setHeaders(res, filePath) { + const lower = filePath.toLowerCase(); + if (lower.endsWith(".html") || lower.endsWith(".js") || lower.endsWith(".css")) { + res.setHeader("Cache-Control", "no-store"); + } + }, + }), + ); } app.use((_req, res) => {