Deploy guide · runtime = "bun"
Deploy Bun HTTP on Percher
Bun's built-in `Bun.serve` HTTP server runs on Percher's Bun runtime — same Bun image used to build everything else on the platform. Right for tiny services where you don't want any framework, just a fast handler.
Why Percher fits
- Native HTTPS via Bun's fetch means external API calls (OpenAI, Stripe, etc.) work without `HTTPS_PROXY` configuration; Bun honors the env var natively.
- Cold builds finish in ~10–15 s — there's no Node-vs-Bun mismatch to wrangle since the build and runtime are both Bun.
Quick start
bunx percher create my-app --template bun
cd my-app
bunx percher publishThe first command scaffolds a working Bun HTTP project plus a `percher.toml`. Publish builds and deploys it; the live URL prints on completion.
percher.toml
The canonical config for a Bun HTTP app on Percher. `bunx percher init` generates this automatically when it detects Bun HTTP in your project.
[app]
name = "my-server"
runtime = "bun"
[web]
port = 3000
health = "/health"
Common gotchas
- `Bun.serve({ port: Number(process.env.PORT) || 3000 })` — read the port from env; Percher injects it.
- Bun's `bun:sqlite` works inside the container, but the data is ephemeral across deploys. For anything you need to keep, use PocketBase or an external database.
Related docs
Ready to deploy Bun HTTP?
Free plan, no credit card. Live in under a minute.
Sign up free