latestOpenAPI 3.1.02026-08-19151182242.8 KB

b75b478564cc

Internal

Self-enroll a node using a provisioning token (no API key)

post/v1/nodes/enroll

Request body

cpuCoresinteger
cpuModelstring
hardwareFingerprintstring required
hostnamestring
identityPubkeystring

Node ed25519 identity public key (base64 raw, 32 bytes). The collision-safe node anchor: the box generates this once, keeps the private key at /etc/vectorlay/identity.key, and signs every enroll with it. Required by the server: an enroll without it is refused (401 BAD_SIGNATURE).

machineIdstring

Stable per-box identity (SMBIOS product_uuid / serial / cloud instance-id). Primary global node-identity key; fingerprint is the fallback when empty.

nebulaPubkeystring required

Node Nebula public key PEM (from nebula-cert keygen)

ramGbinteger
runtimestring

Node runtime, detected on the box by enroll.sh from the host shape: qemu (VFIO/KVM passthrough VM host) on baremetal, runc (GPU-container Pod node) on a cloud guest. The control plane refuses an enroll whose runtime is absent or contradicts hostShape (matched case-insensitively).

signaturestring

base64 ed25519 signature proving possession of identityPubkey over the identity-critical enroll fields (token hash, identity pubkey, nebula pubkey hash, fingerprint, machineId, hostname, signedAt). Required by the server: an enroll without it is refused (401 BAD_SIGNATURE).

signedAtinteger

Unix seconds when the enroll body was signed. Required by the server: an unsigned enroll is refused (401 BAD_SIGNATURE); rejected if more than 300s from server time.

tokenstring required

Provisioning token (vtk_...)

Response

Enrolled

dataPlaneCastring required

CertIssuer CA the gateway pins; optional

dataPlaneCertstring required

node data-plane mTLS cert (gateway tunnel); optional

dataPlaneKeystring required

node data-plane mTLS key; optional

datacenterstring required
gatewayAddrstring required

host:port the node-agent dials (QUIC/UDP); optional

gatewayServerNamestring required

expected CN on the gateway server cert; optional

nebulaCastring required
nebulaCertstring required
nebulaOverlayIpstring required
nodeAgentTokenstring

durable node token for the node-agent self-update fetch (GET /v1/nodes/agent); optional

nodeIdstring required
nomadCastring required
nomadClientCertstring required
nomadClientKeystring required
nomadIntroTokenstring required
nomadPoolstring required
nomadServersstring[] required

server Nebula RPC addrs (ip:4647)