From e16a8032b7c808ed1ed3831a70b1a71421d2409b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 11 Jul 2026 15:40:19 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20VM=20reference=20=E2=80=94=20SSH,=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D1=8B,=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BF=D0=BB=D0=BE=D0=B9,=20.env,=20=D1=80=D0=BE=D1=83=D1=82?= =?UTF-8?q?=D0=B8=D0=BD=D0=B3,=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VM.md | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 VM.md diff --git a/VM.md b/VM.md new file mode 100644 index 0000000..e789a7c --- /dev/null +++ b/VM.md @@ -0,0 +1,130 @@ +# VM — contracts.kube5s.ru (5.172.178.213) + +## SSH + +```bash +ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 +``` + +## Сервисы + +| Сервис | Порт | systemd unit | Назначение | +|---|---|---|---| +| gunicorn (Flask UI) | 5001 | — (start.sh) | Веб-интерфейс | +| convert_server.py | 8766 | `contracts` | API: upload, classify, compare, /static | +| drhider_server.py | 8767 | `contracts-drhider` | Обфускация документов | +| nginx | 443 | `nginx` | Прокси + SSL (Certbot) | +| PostgreSQL | 5432 | — | БД `baza`, пользователь `super` | +| act_runner | — | `act_runner` | Gitea CI runner | + +## Деплой + +```bash +# Из папки contracts-flask/: +bash deploy/sync.sh +``` + +Скрипт копирует `deploy/compare/`, `deploy/drhider/`, `deploy/db/`, `deploy/convert_*.py` → `/home/naeel/contracts/` на ВМ, затем делает `sudo systemctl restart contracts contracts-drhider`. + +Nginx-конфиг — вручную: +```bash +scp -i ~/.ssh/naeel_vm_id_ed25519 deploy/nginx-contracts.conf naeel@5.172.178.213:/tmp/ +ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 sudo cp /tmp/nginx-contracts.conf /etc/nginx/sites-enabled/ +ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 'sudo nginx -t && sudo systemctl reload nginx' +``` + +## Команды на ВМ + +```bash +# Статус сервисов +systemctl status contracts contracts-drhider + +# Логи +journalctl -u contracts -f +journalctl -u contracts-drhider -f + +# Перезапуск +sudo systemctl restart contracts +sudo systemctl restart contracts-drhider + +# Nginx +sudo nginx -t && sudo systemctl reload nginx + +# БД +psql -U super -d baza + +# Порты +ss -tlnp | grep -E '5001|8766|8767|5432' +``` + +## .env + +Файл на ВМ: `/home/naeel/contracts/.env` + +```env +DB_HOST=127.0.0.1 +DB_PORT=5432 +DB_NAME=baza +DB_USER=super +DB_PASS= +LLM_API_URL=https://api.aillm.ru/v1/chat/completions +LLM_API_KEY=... +LLM_MODEL=gpt-oss-120b +``` + +Flask (`site/app.py`) читает `VM_API` (по умолчанию `https://contracts.kube5s.ru`). + +## Nginx-роутинг + +``` +contracts.kube5s.ru :443 + / → 127.0.0.1:5001 Flask UI + /api/drhider → 127.0.0.1:8767 DrHider обфускация + /api/* → 127.0.0.1:8766 convert_server + /static/ → 127.0.0.1:8766 + /upload → 127.0.0.1:8766 + /lucee/* → contractor.luceek8s.dev.nubes.ru (legacy) +``` + +## Структура БД (PostgreSQL `baza`) + +| Таблица | Назначение | +|---|---| +| `documents` | Загруженные документы | +| `contracts` | Договоры | +| `supplements` | Допсоглашения к договорам | +| `spec_current` | Текущая спецификация услуг | +| `spec_events` | История изменений спецификации | +| `prompts` | LLM-промпты (extract/diff) | +| `upload_chunks` | Чанки загрузки | + +## Файлы на ВМ + +``` +/home/naeel/contracts/ +├── .env +├── convert_server.py # API-сервер :8766 +├── convert_doc.py # Конвертер .doc → .docx +├── drhider/ +│ ├── drhider.py # Ядро обфускации +│ └── drhider_server.py # HTTP-сервер :8767 +├── compare/ +│ ├── process.py, llm.py, classify.py, ... +│ └── parse.py, grouping.py, upload.py +├── db/ +│ ├── connection.py # Пул коннектов +│ ├── documents.py, contracts.py, supplements.py +│ └── spec_current.py, spec_events.py, prompts.py +├── files/ # Загруженные документы +└── llm_prompt.py # Шаблоны промптов extract/diff +``` + +## Пути в проекте + +``` +contracts-flask/ +├── deploy/ → копируется на ВМ (sync.sh) +├── site/ → Flask UI (gunicorn на ВМ :5001) +├── Dockerfile → контейнеризация (не используется на ВМ) +└── .gitea/workflows/deploy.yaml → CI (act_runner) +```