Skip to content
All guides

ship

Land on any host

Land installs Dock the same way on a cloud VM or a rack. It does not create the VM for you.

buraaq land user@HOST --cloud hetzner
buraaq ship HOST

--cloud is aws, azure, gcp, hetzner, or bare. It only changes the firewall reminder. Land writes target/land/land.sh, env.example, and a systemd unit (with EnvironmentFile for secrets). It installs libpq5 when missing. Dock copies ~/.buraaq/dock/env into every launched ship. It can SSH-install Dock when you pass user@HOST.

On a host

A landed Keel ship is a native process: HTTP 8080 and TLS 8443. Postgres stays on the host environment (BURAAQ_DATABASE_URL). Keel reconnects if the pooler drops idle. Ship the binary; leave the rest of the box alone.

A Windows .bur will not run on Linux. Pack on the host OS, or emit IR (buraaq build --release --emit-ir --target linux) and link with clang on the host. buraaq ship HOST --bundle FILE.bur pushes a ship you already packed.

Local equivalent

buraaq up

Pack + local Dock + run, no SSH.

Firewall reminder

Open what the app needs (8080 / 8443) and only expose 7422 if you intend remote buraaq ship. Prefer SSH tunnel + loopback dock on public machines.

Postgres and certs

Land does not provision a database or an ACME certificate. Put BURAAQ_DATABASE_URL on the host. Put cert.pem / key.pem on the host or pack them with the app. Managed Postgres (including Neon with sslmode=require) is a URL, not a framework.

Same ISA

Compile the ship on an OS that matches the host. Cross-shipping Windows → Linux is not a feature of this toolchain.

Test only hosts you are authorized to use. Security notes.