First run
On first launch the principals table is empty. The control plane enters setup mode and Studio opens the setup wizard.
Setup token
One-time setup key:
- In the control-plane log (
docker compose logs control-plane) - Inside the
viewnova-configvolume at/etc/viewnova/setup-token
Request header: x-vion-setup-token.
Wizard steps
In Studio, language choice is tr / en (localStorage key vion.locale).
| Mode | Steps |
|---|---|
| Quick | welcome → admin → database → network → summary → apply |
| Advanced | + deploy → runtime → historian → identity |
| Step | Fields | Environment key |
|---|---|---|
| welcome | Setup token (≥16), language, mode | — |
| admin | username, password ×2 | VION_BOOTSTRAP_ADMIN_* |
| database | PostgreSQL URL (+ Test) | VION_DATABASE_URL |
| network | HTTP bind; TLS automatic / import / insecure | VION_HTTP_BIND, VION_ALLOW_INSECURE_HTTP |
| deploy | node id, role, HA peers | VION_NODE_ID, VION_NODE_ROLE, VION_HA_PEERS |
| runtime | gRPC URL, app token | VION_RUNTIME_GRPC_URL, VION_RUNTIME_APP_TOKEN |
| historian | type, spool directory | VION_HISTORIAN, VION_SPOOL_DIR |
| identity | OIDC issuer, break-glass TOTP | VION_OIDC_ISSUER, VION_BREAK_GLASS_TOTP_SECRET |
On completion, POST /api/v1/setup/complete writes vion.toml. When VION_RESTART_POLICY=supervised, the process restarts with exit code 75.
Local addresses
| Service | URL |
|---|---|
| Studio / setup | http://127.0.0.1:8080/ |
| Control plane health | http://127.0.0.1:8080/health |
| OpenAPI | http://127.0.0.1:8080/api/v1/openapi.yaml |
| Runtime health | http://127.0.0.1:8081/health |
| Runtime gRPC | 127.0.0.1:50051 |
TIP
In the Compose development environment, VION_ALLOW_INSECURE_HTTP=true is enabled. Do not use this in production.
Next step: First project.