docs: wowater.md + README 0.5.23
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
# IP WhiteList v0.5.22
|
# IP WhiteList v0.5.23
|
||||||
|
|
||||||
Self-service портал для управления доверенными IPv4-адресами клиентов облачного провайдера.
|
Self-service портал для управления доверенными IPv4-адресами клиентов облачного провайдера.
|
||||||
Записи исключаются из блокировки системами фильтрации во время DDoS-атак.
|
Записи исключаются из блокировки системами фильтрации во время 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-битов
|
- **Валидация** на сервере: маски `/22`–`/32`, запрет 14 приватных/служебных диапазонов, запрет дубликатов и пересечений, нормализация host-битов
|
||||||
- **Лимиты:** глобальный (по умолчанию 15) и индивидуальный на компанию (настраивает админ)
|
- **Лимиты:** глобальный (по умолчанию 15) и индивидуальный на компанию (настраивает админ)
|
||||||
- **Агрегированный экспорт** CIDR-списка для систем фильтрации (`GET /export`)
|
- **Агрегированный экспорт** CIDR-списка для систем фильтрации (`GET /export`)
|
||||||
- **Мульти-компания:** один пользователь может управлять несколькими компаниями (clientId через запятую)
|
- **Мульти-компания:** через IAM API — переключение между компаниями пользователя
|
||||||
- **Аудит:** все изменения фиксируются — кто, когда, что было и что стало
|
- **Аудит:** все изменения фиксируются — кто, когда, что было и что стало
|
||||||
- **Администрирование:** просмотр всех компаний, управление лимитами, журнал аудита
|
- **Администрирование:** просмотр всех компаний, управление лимитами, журнал аудита
|
||||||
|
|
||||||
|
|||||||
@@ -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`.
|
||||||
Reference in New Issue
Block a user