Skip to content

For Nuxt

Nuxt SSR without the platform tax

Build with Nitro's node-server preset, run .output on a real VM and cache _nuxt/ across 988 locations. Image optimisation, S3 storage and SSL come with it. Per-request pricing doesn't.

Free to sign up. No egress fees on any product.

Why Nuxt on Edge

Every Nuxt feature, none of the proprietary glue

Nitro was built to run anywhere. Give it a real VM, a CDN and a bucket, and it behaves exactly as the docs say.
  • Nitro's node-server preset

    nuxi build writes a plain Node server to .output/. Run it on any Edge VM. No proprietary runtime and no cold starts.
  • @nuxt/image at the CDN

    A small custom provider sends <NuxtImg> to the CDN. Variants are resized and converted to AVIF or WebP on request, then cached.
  • S3-compatible storage

    Uploads, generated files and anything too big for the build go in an Edge Storage bucket. The AWS SDK works unchanged.
  • Global CDN, zero egress

    _nuxt/ bundles and public/ assets cache in 988 locations. SSR falls through to your VM, and nothing is billed per GB.
  • Any CI you like

    Build in GitHub Actions or GitLab CI and ship with the Edge CLI. No platform-specific YAML to learn.
  • Agent-deployable

    Ask your coding agent to deploy the app to a domain. The agent API wires up the VM, DNS, CDN and SSL.

Reference architecture

How Nuxt maps to Edge

A standard Node SSR set-up: Nitro on a VM, the CDN in front and a bucket behind. Nothing proprietary to unpick later.
  • Compute

    Runs the Nitro server (node .output/server/index.mjs) behind Nginx.

  • Storage

    Holds media, uploads and overflow assets. Any S3 client works.

  • CDN

    Caches the _nuxt/ bundle, public/ and any cacheable routes worldwide.

  • Image optimisation

    Backs @nuxt/image: resize, fit and AVIF/WebP, applied at the edge.

  • DNS

    Anycast DNS for the apex, www and per-environment subdomains.

  • Shield

    Checks form posts from a Nitro server route. No CAPTCHA widget.

  • Assist

    One script tag in app.vue adds answers grounded in your pages.

Deploy

From nuxi build to live in five steps

Standard Nuxt tooling throughout. Do it by hand once, then move the same commands into CI.
  1. 01

    Build with the node-server preset

    The output is a self-contained Node server. Try it locally before it goes anywhere.

    shell
    $ npx nuxi build --preset node-server
    $ ls .output
    nitro.json  public  server
    $ node .output/server/index.mjs     # listening on :3000
  2. 02

    Register an Edge image provider

    Keep <NuxtImg> and <NuxtPicture>. Route rules like swr work as documented on a VM.

    nuxt.config.ts
    export default defineNuxtConfig({
      modules: ['@nuxt/image'],
      image: {
        provider: 'edge',
        providers: {
          edge: {
            provider: '~/providers/edge.ts',
            options: { baseURL: 'https://shop.acme.com' },
          },
        },
      },
      routeRules: { '/blog/**': { swr: 3600 } },
    })
  3. 03

    Map modifiers to CDN parameters

    Width, height, fit and quality become URL parameters. The CDN transforms on the first request and caches the result.

    providers/edge.ts
    import { joinURL } from 'ufo'
    import type { ProviderGetImage } from '@nuxt/image'
    
    export const getImage: ProviderGetImage = (src, opts) => {
      const { modifiers, baseURL } = opts
      const { width, height, fit, quality = 75 } = modifiers
      const q = new URLSearchParams({ format: 'auto' })
      q.set('quality', String(quality))
      if (width) q.set('width', String(width))
      if (height) q.set('height', String(height))
      if (fit) q.set('fit', fit)
      return { url: `${joinURL(baseURL, src)}?${q}` }
    }
  4. 04

    Create a VM and start Nitro

    The nodejs library script installs Node 22, PM2 and an Nginx reverse proxy on first boot.

    shell
    $ edge compute create --name nuxt --size s-2vcpu-4gb \
        --image ubuntu-24 --region london --script nodejs
    
    $ rsync -a .output/ root@<vm-ip>:/srv/shop/
    $ ssh root@<vm-ip> "pm2 start /srv/shop/server/index.mjs"
  5. 05

    Front it with the CDN

    SSL is issued automatically. --jit-image switches on the transforms your provider asks for.

    shell
    $ edge cdn create --name acme-shop
    $ edge cdn domains add cdn-9c2e41 \
        --domain shop.acme.com \
        --origin https://<vm-ip> \
        --jit-image

Prefer to hand it off? Give the job to your AI agent or have our engineers do it.

What it costs

One VM, one CDN, one bucket

No function invocations, no image-transform meter and no bandwidth line. Just the three things a Nuxt app actually uses.
  • Nothing billed per render or per image
  • Image optimisation included with the CDN
  • Billed hourly from a prepaid balance, with optional hard caps
  • Plain Node and S3, so you can move whenever you like
See compute pricing

Estimated monthly bill on Edge

~500k page views · 4.5M requests · 25 GB of media

USD
  • Compute$19.24Standard VM · 2 vCPU · 4 GiB · 80 GB NVMe
  • CDN$1.004.5M requests: first 500k free, 4M × $0.25 per million
  • Storage$0.3025 GB: first 5 GB free, 20 GB × $0.015
  • DNS$0.00Zone, records and environment subdomains
  • Egress$0.00
Total$20.54

FAQ

Nuxt on Edge, answered

Something else? Ask an engineer.
Does the Nitro node-server preset work?
Yes. nuxi build produces a standard Node bundle in .output/. Run node .output/server/index.mjs under PM2 or systemd, behind Nginx or Caddy, on any Edge VM.
Can I use other Nitro presets?
Use node-server. The Cloudflare and Vercel presets target those platforms' runtimes. The Node preset keeps the runtime in your hands and runs anywhere Linux does.
How do route rules and SWR caching work?
routeRules with swr or isr work on a single VM exactly as documented. With several VMs, point Nitro's cache storage at a shared driver such as Redis so every instance serves the same copy. The CDN handles static assets for everyone.
Do I need a paid @nuxt/image provider?
No. A dozen-line custom provider maps width, height, fit and quality onto the CDN's URL parameters. You pay CDN request prices, with no per-image fee.
What about preview environments?
Create a VM per branch from CI, point a test.network subdomain at it and delete it when the pull request closes. VMs bill by the hour, so a Standard VM running for a weekend costs about $1.27.

Ship Nuxt on Edge

Bring an existing Nuxt app or start from nuxi init. We'll help you size the VM.

Free tiers hard-cap. Nothing bills until you add a card.