# Быстрый запуск Примеры команд для **PowerShell**. Репозиторий: корень `EvoBGP`, Docker Compose лежит в `deploy\compose`. ## Требования - **Docker** с поддержкой Compose v2 — для готового стека. - **Go 1.22+** (версию см. в `go.mod`) — для локального запуска бинарников из исходников. - **Node.js** и npm — для разработки веб-интерфейса в `web/`. - **PostgreSQL** — если запускаете API вне Compose; строка подключения в `EVOBGP_DATABASE_URL`. ## Вариант 1: Docker, профиль microvps Один процесс `evobgp-all` (HTTP API + in-process заглушки воркеров), PostgreSQL, BIRD2, `evobgp-agent`. ```powershell cd deploy\compose docker compose --profile microvps up -d --build ``` Ожидаемые сервисы: - **API:** `http://localhost:8080` (внутри контейнера `EVOBGP_HTTP_ADDR=:8080`). - **BGP:** порт **179/tcp** проброшен с контейнера BIRD (для отладки; в проде часто нужен `network_mode: host` или отдельная сеть — см. комментарии в `docker-compose.yaml`). Проверка живости (без ключа): ```powershell Invoke-RestMethod -Uri "http://localhost:8080/v1/health" ``` Остановка: ```powershell docker compose --profile microvps down ``` Полная очистка томов (осторожно, удалит данные БД): ```powershell docker compose --profile microvps down -v ``` ## Вариант 2: Docker, профиль reference Эталонное разбиение: отдельные контейнеры `evobgp-api`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, NATS JetStream, веб UI за nginx, опционально Prometheus. ```powershell cd deploy\compose docker compose --profile reference up -d --build ``` Полезные порты: | Порт | Назначение | |------|------------| | 8080 | HTTP API (`evobgp-api`) | | 3000 | Веб UI (`evobgp-web` → nginx, прокси на API) | | 4222 | NATS | | 9090 | Prometheus (в compose) | | 179 | BGP (BIRD2) | **Важно:** процессы `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy` в текущей версии кода — **заглушки** (логирование и периодический тик). Реальная очередь задач и брокер подключаются в будущих итерациях; API и БД при этом уже работают. ## Вариант 3: Локально без Docker (только API) 1. Поднимите PostgreSQL и создайте БД (или используйте существующую). 2. Установите переменные окружения в текущей сессии PowerShell: ```powershell $env:EVOBGP_DATABASE_URL = "postgres://user:pass@localhost:5432/evobgp?sslmode=disable" $env:EVOBGP_HTTP_ADDR = ":8080" # Ключи обязательны для защищённых маршрутов (пример формата см. access.md) $env:EVOBGP_API_KEYS = "op|YOUR_TENANT_ID|operator" ``` 3. Запуск только HTTP API: ```powershell cd <корень-клона-репозитория> go run .\cmd\evobgp-api ``` Или монолит **microVPS** (тот же API плюс горутины заглушек scheduler/ingest/render/deploy): ```powershell go run .\cmd\evobgp-all ``` При старте в лог выводится **публичный ключ бандла** (base64) — его нужно передать на сторону `evobgp-node` для проверки подписи. При включённом демо-сиде (`EVOBGP_SEED_DEMO` не равен `0`, поведение по умолчанию) сервер также печатает подсказку с примером `EVOBGP_API_KEYS`. Для разработки без настройки ключей (только демо-данные): ```powershell $env:EVOBGP_DEV_INSECURE = "1" go run .\cmd\evobgp-api ``` Запросы с заголовком `Authorization: Bearer dev` получают роль operator в демо-tenant. **Не включайте в продакшене.** ## Вариант 4: Веб-интерфейс (разработка) ```powershell cd web npm install npm run dev ``` Укажите в окружении API список разрешённых origin для CORS (пример для Vite на порту 5173): ```powershell $env:EVOBGP_CORS_ORIGINS = "http://localhost:5173,http://127.0.0.1:5173" ``` В эталонном Compose для `evobgp-api` уже заданы origin для 5173 и 3000 — см. `deploy/compose/docker-compose.yaml`. ## Пересборка HTML из OpenAPI После правок `docs/openapi.yaml`: ```powershell .\scripts\build-openapi-html.ps1 ``` Подробности — [OPENAPI-GITEA.md](OPENAPI-GITEA.md). ## Дальше - [access.md](access.md) — как выдать ключи и настроить ноду. - [architecture.md](architecture.md) — состав сервисов и пакетов.