5.2 KiB
Быстрый запуск
Примеры команд для 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.
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).
Проверка живости (без ключа):
Invoke-RestMethod -Uri "http://localhost:8080/v1/health"
Остановка:
docker compose --profile microvps down
Полная очистка томов (осторожно, удалит данные БД):
docker compose --profile microvps down -v
Вариант 2: Docker, профиль reference
Эталонное разбиение: отдельные контейнеры evobgp-api, evobgp-scheduler, evobgp-ingest, evobgp-render, evobgp-deploy, NATS JetStream, веб UI за nginx, опционально Prometheus.
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)
- Поднимите PostgreSQL и создайте БД (или используйте существующую).
- Установите переменные окружения в текущей сессии 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"
- Запуск только HTTP API:
cd <корень-клона-репозитория>
go run .\cmd\evobgp-api
Или монолит microVPS (тот же API плюс горутины заглушек scheduler/ingest/render/deploy):
go run .\cmd\evobgp-all
При старте в лог выводится публичный ключ бандла (base64) — его нужно передать на сторону evobgp-node для проверки подписи. При включённом демо-сиде (EVOBGP_SEED_DEMO не равен 0, поведение по умолчанию) сервер также печатает подсказку с примером EVOBGP_API_KEYS.
Для разработки без настройки ключей (только демо-данные):
$env:EVOBGP_DEV_INSECURE = "1"
go run .\cmd\evobgp-api
Запросы с заголовком Authorization: Bearer dev получают роль operator в демо-tenant. Не включайте в продакшене.
Вариант 4: Веб-интерфейс (разработка)
cd web
npm install
npm run dev
Укажите в окружении API список разрешённых origin для CORS (пример для Vite на порту 5173):
$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:
.\scripts\build-openapi-html.ps1
Подробности — OPENAPI-GITEA.md.
Дальше
- access.md — как выдать ключи и настроить ноду.
- architecture.md — состав сервисов и пакетов.