For Node.js
Node.js apps,
properly hosted
Express, Fastify, Hono, NestJS — any Node app, on a real VM, fronted by a global CDN. No serverless gotchas, no per-invocation pricing, no platform-specific build steps.
# bootstrap-node.sh
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt-get install -y nodejs
git clone git@github.com:me/api .
npm ci && npm run build
sudo systemctl enable --now api
# Provision the VM
$ edge compute create \
--image ubuntu-24-04 --plan small \
--script ./bootstrap-node.sh
# CDN out front
$ edge cdn create api.example.com ...
Why Node teams pick Edge
A long-running Node process is still the fastest, simplest, cheapest deployment for most apps.
Any Node framework, any runtime
Express, Fastify, Hono, NestJS, Koa, Adonis, plain http — if it runs on Node, it runs on an Edge VM. Bun and Deno work too.
Long-running process, no cold starts
A real Node process on a real VM. Consistent latency, no per-invocation pricing, no surprise cold-start spikes.
S3-compatible storage
Use the AWS SDK or any S3 client to push uploads and downloads through Edge Storage. Same code in dev and prod.
Image transforms via URL
Hand off resizing, cropping and format conversion to Edge Image Optimization. Your Node process stays small and fast.
Global CDN, zero egress
Front static assets and cacheable routes through the Edge CDN. Your Node app only sees the dynamic traffic that needs it.
Plain Linux deploys
systemd, pm2, Docker, Kamal — pick your poison. The Edge CLI provisions the VM, you decide how to ship to it.
Reference architecture
How a Node app maps to Edge
Node process on a VM, optional state in Postgres or Redis, S3 for blobs, CDN for everything cacheable.
Runs your Node process under systemd, pm2 or Docker
S3-compatible bucket for uploads, exports, and snapshot backups
Caches static files and edge-cacheable API responses
Resize, crop and AVIF/WebP convert via URL
Anycast DNS for production, staging and previews
# Hono on Node, with Edge Storage SDK
import { Hono } from 'hono'
import { S3Client } from '@aws-sdk/client-s3'
const s3 = new S3Client({
endpoint: 'https://storage.edge.run',
region: 'us-east-1',
})
const app = new Hono()
app.get('/', c => c.text('Hello, Edge'))
serve({ fetch: app.fetch, port: 3000 })
Common questions
Express, Fastify, Hono, NestJS — which is best?
All of them work. We have no opinion on your framework choice; the deployment story is identical because they're all Node processes behind a reverse proxy on a VM.
Can I use TypeScript?
Yes — compile in CI, run the JS output on the VM. Or run `tsx` / `ts-node` directly if you prefer (with the obvious startup-time trade-off).
What about Bun or Deno?
Both work. Install the runtime in your bootstrap script, set up the systemd service to invoke it, deploy as normal. The rest of the stack (Storage, CDN, DNS) is runtime-agnostic.
How do I scale horizontally?
Provision more VMs and front them with the CDN, or with a small Caddy/Nginx load balancer on a separate VM. Your Node app stays stateless; state lives in Postgres / Redis / Storage.
By Stack
Other stacks on Edge
Ship your Node app on Edge
30-day trial. Any framework, any runtime, any deploy strategy.