diff --git a/README.md b/README.md index afbcb98..7e54203 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,28 @@ make dev # docker compose: db + redis + app с hot-reload (cargo Приложение поднимется на `http://localhost:8080` (`/health`, `/health/ready`). Остальные команды — `make help`. +## Создание первого Owner-аккаунта админки + +Единственный способ попасть в `/admin/login` (React-админка) — учётка с ролью +`owner`, логин+пароль (не Telegram). Создаётся one-shot CLI-флагом +`--create-owner` (нужен только `DATABASE_URL`, ни ключей, ни токенов; +пароль вводится скрыто в консоли, не через аргумент/env — не оседает в +истории шелла): + +```bash +# Локально/дев (бинарник собран, .env заполнен): +./netrunner-control-plane --create-owner --username admin + +# На проде (задеплоено через docker-compose.prod.yml) — выполнить на самом +# VPS из /root/netrunner-core: +docker compose -f docker-compose.prod.yml run --rm app \ + ./netrunner-control-plane --create-owner --username admin +``` + +`docker compose run` (не `up`) — контейнер разовый, не публикует порт 8080, +не конфликтует с уже работающим `app`. Логин уже занят — упадёт с понятной +ошибкой, а не тихо перезапишет существующего владельца. + ## Nodes, Cyberhack, биллинг — текущее состояние - **`GET /nodes/routing`** отдаёт полный `TunnelConfig`: `tunnel_*`-поля,