Skip to main content
Percher is still being built, but you can try it out with a free account right now!
← All deploy guides
Deploy guide · runtime = "node"

Ship Express in ~2 minutes.

Express.js is the established Node web framework. Percher detects `express` in your `package.json` and ships it on the Node runtime with the same multi-stage Dockerfile every other Node app uses.

Why Percher fits

  • Long-running process model is exactly what Express expects — no Lambda-style cold-start workarounds.
  • Middleware that uses local files (sessions on disk, file uploads to local tmp) works as written; the container has a writable filesystem.

Quick start

bunx percher create my-app --template express
cd my-app
bunx percher publish

The first command scaffolds a working Express project plus a percher.toml. Publish builds and deploys it, then prints the live URL.

percher.toml

The canonical config for a Express app on Percher. bunx percher init generates this automatically when it detects Express in your project.

[app]
name = "my-api"
runtime = "node"
framework = "express"

[web]
port = 3000
health = "/health"

Common gotchas

  • `app.listen(process.env.PORT)` — hardcoding `3000` works locally but not when Percher changes the port.
  • If you mount sessions or uploads to disk, remember the container's filesystem is ephemeral across deploys; use PocketBase file storage or an external object store for anything that must persist.

Related docs

Ready to deploy Express?

Start on the Free plan. No credit card, live in ~2 minutes.

Sign up free →