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
| Port | Expose to the world? |
|---|---|
| 8080 / 8443 | Yes, if this host is the edge (or only to the reverse proxy) |
| 7422 | Only 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 wanted | In Docker-land | In Buraaq |
|---|---|---|
| Sidecar DB | compose service | Postgres on the host or a managed instance |
| Health | HEALTHCHECK | GET /api/health on Keel |
| Scale-out | replicas | More hosts, more docks, more ships: you place them |
| Multi-tenant isolation | namespaces | Do 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.
