Skip to content
All guides

ship

Advanced shipping

Once pack / dock / land work, this page is the production grain.

Same OS, same ISA

Pack on the OS that will run the ship. Cross-shipping Windows → Linux is not a feature. If you have mixed fleets, you have two build machines (or two CI jobs), not one "multi-arch Dockerfile."

# on the Linux builder
buraaq pack
buraaq ship linux-host

# on the Windows builder
buraaq pack
buraaq ship windows-host

Environment and secrets

The dock starts the process with the host environment. Set BURAAQ_DATABASE_URL (and anything else) on the server: systemd Environment=, a .env the unit loads, or the shell that launched buraaq dock --public.

Do not put production passwords in buraaq.pkg. Packing cert.pem is convenient for a lab; production usually mounts certs beside the extract directory or terminates TLS in front.

Ports and firewalls

PortExpose to the world?
8080 / 8443Yes, if this host is the edge (or only to the reverse proxy)
7422Only if you buraaq ship over the network. Prefer SSH tunnel + loopback dock

--cloud on buraaq land only changes the reminder text (aws, azure, gcp, hetzner, bare). It does not open security groups for you.

Rollback by hash

Every launch extracts under a digest directory:

~/.buraaq/dock/live/<app>/

Keep previous .bur files. buraaq ship HOST with an older bundle is the rollback: Dock kills the old pid and starts the verified archive. There is no replica set. One process per app name.

Guest ship HOST PUTs the bundle. ship --status / ship --stop are thinner than this page: keep the previous .bur and ship it again to roll back.

vs Docker Compose / Kubernetes (honest)

You wantedIn Docker-landIn Buraaq
Sidecar DBcompose servicePostgres on the host or a managed instance
HealthHEALTHCHECKGET /api/health on Keel
Scale-outreplicasMore hosts, more docks, more ships: you place them
Multi-tenant isolationnamespacesDo not: use separate machines

Ship is the simple native path: compile, hash, copy, exec. Orchestration at cluster scale is a different product. Buraaq would rather be fast and obvious than a second Kubernetes.

Release-fast ships

buraaq pack release-builds. For the last percent on a hot API loop:

buraaq build --release-fast

Then pack/launch the binary you measured. Gate B numbers used --release vs C++ -O2 (performance); --release-fast is -O3 + thin LTO when you have a profile that cares.