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
Score any POST with one fetch — Express, Fastify or Hono, free
AI answer box grounded in your pages — one script tag in the layout
# 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.
Drop-in services
Works with this stack out of the box
No rebuild, no migration — Shield is one HTTP check and Assist is one script tag. Add either to what you're already running.
Edge Shield
Bot protection
Score any POST with one fetch — Express, Fastify, Hono, anything.
Free for most sites — no puzzles, no widget to style
Explore Shield →Edge Assist
AI answers
Serve the widget from your layout; answers come from your site’s own pages.
Free tier: 250 answered questions a month
Explore Assist →By Stack
Other stacks on Edge
Ship your Node app on Edge
Start free. Any framework, any runtime, any deploy strategy.