From 9384e516edcf1c83b68046db34f306d6c14bacdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Tue, 2 Jun 2026 14:20:24 +0300 Subject: [PATCH] docs: deploy-vm + copilot-instructions --- .github/copilot-instructions.md | 27 +++++++++++++++++ docs/deploy-vm.md | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 .github/copilot-instructions.md create mode 100644 docs/deploy-vm.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..bf2ae35 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,27 @@ +# IP WhiteList — Copilot Instructions + +## Ключевые правила +1. Отвечать кратко. Вопрос = СТОП. +2. Не трогать рабочий код без «делай». +3. Не лезть в БД / kubectl / сервер без прямого указания. +4. После любой правки — VERSION++ в package.json. +5. Git только локально: add + commit + push. + +## Репа +- https://gitea.services.ngcloud.ru/Nail/ipwhitelist-app.git + +## Стек +- Node.js + Express + EJS +- PostgreSQL +- REST API /api/v1/* (Bearer JWT) +- UI-слой (сессии, SSR через EJS) + +## Тесты +- `node tests/api.js` — API (Bearer JWT, 121 тест) +- `node tests/integration.js` — интеграционные (сессии, HTML-формы) + +## Важные файлы +- `docs/ТЗ.md` — техническое задание +- `docs/ТЗ-плюс.md` — уточнения от заказчика +- `docs/keycloak-auth-reference.md` — справка по Keycloak/OIDC +- `Files/token.txt` — креды (токены + БД) diff --git a/docs/deploy-vm.md b/docs/deploy-vm.md new file mode 100644 index 0000000..2b762b3 --- /dev/null +++ b/docs/deploy-vm.md @@ -0,0 +1,51 @@ +# Деплой на ВМ (отладка) + +> 2026-06-02. Временное решение пока NodeJS-платформа не готова. + +## Git — без изменений + +Локально → `git add` + `git commit` + `git push` → gitea.services.ngcloud.ru/Nail/ipwhitelist-app.git + +## Схема деплоя + +``` +Локально (правки) → git push → gitea + ↓ + git pull на ВМ + ↓ + pm2 restart ipwhitelist + ↓ + https://italo.kube5s.ru (nginx → :3000) +``` + +## ВМ + +- IP: `5.172.178.213` +- SSH: `ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213` +- Nginx: `/etc/nginx/conf.d/italo.kube5s.ru.conf` → `proxy_pass http://127.0.0.1:3000` +- PM2: `pm2 start server.js --name ipwhitelist` + +## PostgreSQL + +Локальный на ВМ. `.env`: `DB_HOST=localhost`. + +## Отличия от боевого деплоя + +| Параметр | ВМ (отладка) | K8s (бой) | +|---|---|---| +| DB_HOST | `localhost` | `postgresqlk8s-master...svc.cluster.local` | +| Аутентификация | Mock (DEV_MODE=true) | OIDC Keycloak | +| URL | `https://italo.kube5s.ru` | `https://wipl...` (платформа) | +| SSL | Let's Encrypt (kube5s.ru) | Платформа | +| Деплой | rsync + git pull | Платформа (git clone) | + +## Передача заказчику + +После отладки: +1. Репа: `https://gitea.services.ngcloud.ru/Nail/ipwhitelist-app.git` +2. Схема БД: `sql/schema.sql` +3. Документация: `docs/` + - `ТЗ.md` — техзадание + - `ТЗ-плюс.md` — уточнения + - `keycloak-auth-reference.md` — OIDC-интеграция +4. Тесты: `node tests/api.js` (121 тест)