Skip to content
All guides

ship

Dock

Dock is the host agent. It is a live accept loop on :7422. It receives .bur files and runs them as child processes. Measured: GET /v1/health → {"ok":true}; PUT /v1/apps/:name → 201.

Start

Loopback (safer default):

buraaq dock

On a real server:

buraaq dock --public

That binds 0.0.0.0:7422. Prefer a TLS reverse proxy in front if the dock is on the internet. This control plane is HTTP + bearer token, not TLS. App traffic is still TLS via Keel (8443).

Guest dock is loopback or --public. There is no --bind flag on this binary.

Token

First start creates %USERPROFILE%\.buraaq\dock\token (or ~/.buraaq/dock/token). Copy that token to the machine that runs buraaq ship HOST:

$env:BURAAQ_DOCK_TOKEN = Get-Content $env:USERPROFILE\.buraaq\dock\token

Sources, in order:

  1. BURAAQ_DOCK_TOKEN
  2. The token file above

Protocol

Control plane is HTTP/1.1 on port 7422.

MethodPathRole
GET/v1/healthLiveness (no token)
GET/v1/appsList (token)
GET/v1/apps/:nameOne app (token)
PUT/v1/apps/:nameUpload .bur and run (token)
DELETE/v1/apps/:nameStop (token)

Auth: Authorization: Bearer <token>.

Push from your laptop

$env:BURAAQ_DOCK_TOKEN = "the-same-token"
buraaq ship 192.168.1.20

That packs, PUTs the .bur to 192.168.1.20:7422, and the dock starts the new process (old pid is killed).

Guest ship HOST packs and PUTs. ship --status / ship --stop are thinner than this table: list and stop exist on the HTTP plane; the CLI path that is measured is PUT.

Keep Postgres and TLS certs on the server (or pack certs with the app). The dock inherits the server environment when it starts the process.