From a0b66bb602fe384f944b700c1039b68bfbbef3e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 4 Jun 2026 16:36:45 +0300 Subject: [PATCH] docs: wowater.md + README 0.5.23 --- README.md | 6 ++--- docs/wowater.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 docs/wowater.md diff --git a/README.md b/README.md index 424d76a..298fe72 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# IP WhiteList v0.5.22 +# IP WhiteList v0.5.23 Self-service портал для управления доверенными IPv4-адресами клиентов облачного провайдера. Записи исключаются из блокировки системами фильтрации во время DDoS-атак. -**[Техническое задание](docs/ТЗ.md)** · **[DevOps — production deploy](docs/devops-deploy.md)** +**[[ТЗ](docs/ТЗ.md)]** · **[[DevOps — production deploy](docs/devops-deploy.md)]** · **[[Кратко (без воды)](docs/wowater.md)]** --- @@ -13,7 +13,7 @@ Self-service портал для управления доверенными IPv - **Валидация** на сервере: маски `/22`–`/32`, запрет 14 приватных/служебных диапазонов, запрет дубликатов и пересечений, нормализация host-битов - **Лимиты:** глобальный (по умолчанию 15) и индивидуальный на компанию (настраивает админ) - **Агрегированный экспорт** CIDR-списка для систем фильтрации (`GET /export`) -- **Мульти-компания:** один пользователь может управлять несколькими компаниями (clientId через запятую) +- **Мульти-компания:** через IAM API — переключение между компаниями пользователя - **Аудит:** все изменения фиксируются — кто, когда, что было и что стало - **Администрирование:** просмотр всех компаний, управление лимитами, журнал аудита diff --git a/docs/wowater.md b/docs/wowater.md new file mode 100644 index 0000000..1a72630 --- /dev/null +++ b/docs/wowater.md @@ -0,0 +1,69 @@ +# WOWATER — развёртывание ipwhitelist-app (без воды) + +> Для опытных DevOps. Минимум текста, только команды. + +## 1. PostgreSQL + +```bash +sudo apt install -y postgresql +DB_PASS=$(openssl rand -base64 24) +sudo -u postgres psql -c "CREATE USER ipwhitelist WITH PASSWORD '${DB_PASS}';" +sudo -u postgres psql -c "CREATE DATABASE ipwhitelist OWNER ipwhitelist;" +``` + +## 2. Node.js + код + +```bash +curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash - +sudo apt install -y nodejs +git clone https://gitea.services.ngcloud.ru/Nail/ipwhitelist-app.git /opt/ipwhitelist +cd /opt/ipwhitelist +npm install --production +sudo -u postgres psql -d ipwhitelist -f sql/schema.sql +``` + +## 3. .env + +```bash +cp .env.example .env && chmod 600 .env +``` + +Заполнить: `DB_PASS`, `SESSION_SECRET`, `KC_CLIENT_ID`, `KC_CLIENT_SECRET`, `APP_URL`, `IAM_API_URL`. + +`DEV_MODE` → `false`. + +## 4. nginx + Let's Encrypt + +```nginx +server { + listen 443 ssl; + server_name ваш-домен.ru; + ssl_certificate /etc/letsencrypt/live/.../fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/.../privkey.pem; + + location / { + proxy_pass http://127.0.0.1:3000; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} +``` + +## 5. PM2 + +```bash +npm i -g pm2 +pm2 start server.js --name ipwhitelist +pm2 save && pm2 startup +``` + +## 6. Keycloak OIDC + +Создать Confidential client в Keycloak (realm `cloud`): +- `Valid Redirect URIs`: `https://ваш-домен.ru/callback` +- `Client Authentication`: On +- Записать `KC_CLIENT_ID` и `KC_CLIENT_SECRET` в `.env` + +Готово. `pm2 restart ipwhitelist`.