diff --git a/.env.example b/.env.example index fd12d24..0366a95 100644 --- a/.env.example +++ b/.env.example @@ -1,16 +1,27 @@ -# База данных -DB_HOST=your-db-host.svc.cluster.local +# ── База данных PostgreSQL ── +DB_HOST=localhost DB_PORT=5432 -DB_NAME=postgres -DB_USER=your-user -DB_PASS=your-password -DB_SSLMODE=require +DB_NAME=ipwhitelist +DB_USER=super +DB_PASS=сменить_пароль +DB_SSLMODE=disable -# Сервер -PORT=3000 - -# Лимиты +# ── Режим разработки (true = без Keycloak, mock-логин) ── +DEV_MODE=true DEFAULT_LIMIT=15 -# Режим разработки (true = без Keycloak, читать X-Dev-User из заголовка) -DEV_MODE=true +# ── Сессия (сменить на случайные строки) ── +SESSION_SECRET=сменить_на_случайную_строку +CSRF_SECRET=сменить_на_случайную_строку + +# ── Порт сервера ── +PORT=3001 + +# ── Администратор (clientId) ── +ADMIN_CLIENT_ID=WZ01112 + +# ── Keycloak (оставить пустым пока нет OIDC) ── +# KC_CLIENT_ID= +# KC_CLIENT_SECRET= +# KC_BASE_URL=https://keycloak.nubes.ru/realms/cloud +# APP_URL=https://ваш-домен.ru diff --git a/docs/devops-deploy.md b/docs/devops-deploy.md new file mode 100644 index 0000000..1a5bf61 --- /dev/null +++ b/docs/devops-deploy.md @@ -0,0 +1,101 @@ +# Деплой 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) |