Files
ipwhitelist-app/docs/devops-deploy.md
T

102 lines
2.7 KiB
Markdown

# Деплой ipwhitelist для DevOps
> Репозиторий: `https://gitea.services.ngcloud.ru/Nail/ipwhitelist-app.git`
## Быстрый старт
```bash
# 1. Установить Node.js v20+
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs git
# 2. Скачать
git clone https://gitea.services.ngcloud.ru/Nail/ipwhitelist-app.git
cd ipwhitelist-app
npm install
# 3. Создать .env (см. ниже)
cp .env.example .env
nano .env
# 4. Создать БД PostgreSQL
sudo -u postgres psql -c "CREATE USER super WITH PASSWORD '...';"
sudo -u postgres psql -c "CREATE DATABASE ipwhitelist OWNER super;"
psql -h localhost -U super -d ipwhitelist -f sql/schema.sql
# 5. Запустить
npm start
# ИЛИ через PM2:
npm i -g pm2
pm2 start server.js --name ipwhitelist
```
## .env (все параметры)
```bash
# ── База данных PostgreSQL ──
DB_HOST=localhost
DB_PORT=5432
DB_NAME=ipwhitelist
DB_USER=super
DB_PASS=ваш_пароль
DB_SSLMODE=disable
# ── Режим разработки (оставить true пока нет Keycloak) ──
DEV_MODE=true
DEFAULT_LIMIT=15
# ── Сессия (сменить на случайные строки) ──
SESSION_SECRET=случайная_строка_32_символа
CSRF_SECRET=другая_случайная_строка_32_символа
# ── Порт ──
PORT=3001
# ── Админ (clientId администратора) ──
ADMIN_CLIENT_ID=WZ01112
# ── Keycloak (не заполнять пока нет) ──
# KC_CLIENT_ID=ipwhitelist
# KC_CLIENT_SECRET=секрет
# KC_BASE_URL=https://keycloak.nubes.ru/realms/cloud
# APP_URL=https://ваш-домен.ru
```
## nginx
```nginx
server {
listen 80;
server_name ваш-домен.ru;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## Keycloak (когда появится)
Нужно будет вписать в `.env`:
```
DEV_MODE=false
KC_CLIENT_ID=ipwhitelist
KC_CLIENT_SECRET=...
KC_BASE_URL=https://keycloak.nubes.ru/realms/cloud
APP_URL=https://ваш-домен.ru
```
И в админке Keycloak зарегистрировать клиента (см. `docs/deploy-keycloak.md`).
## Проверка
| URL | Что должно быть |
|---|---|
| `https://ваш-домен.ru/healthz` | `OK` |
| `https://ваш-домен.ru/export` | Список CIDR (text/plain) |
| `https://ваш-домен.ru/` | Страница входа (при DEV_MODE) |