Nuxt hosting in Europe

Push a Nuxt app and it builds in Paris. Generated, it is a static site on Bunny.net's CDN. With our Nitro preset, the pages you do not prerender render on a server in Paris.

Your pages in, your addresses out.

The Nuxt step of a real build of our Nuxt 4 example on deploybase. Pages with a prerender rule are written as files and served by the CDN. Everything else, server/api included, goes to your Nitro server, and a static file always wins.

Pages and server routes of a Nuxt example built on deploybase, the addresses they answer at and how each is served: two pages prerendered in 4.36 seconds, the rest rendered by the server.
A Nuxt 4 example nuxt build 4 routes prerendered in 4.36 s
  • app/pages/index.vue / Prerendered, from the CDN
  • app/pages/about.vue /about Prerendered, from the CDN
  • app/pages/now.vue /now Rendered on each request
  • app/pages/swr.vue /swr Rendered, then cached 60 s
  • server/api/echo.ts /api/echo Your server, any method
  • server/api/cached.get.ts /api/cached Your server, cached handler
Nitro preset: deploybase 18 files to the CDN · server 138 files SSR output detected (nitro 2.13.5, catch-all)

One line in nuxt.config, and route rules you already know.

The same example's config. The preset is the only line written for us; the route rules decide what is prerendered and what runs per request. Prerender everything that does not change per request.

nuxt.config.ts
  1. export default defineNuxtConfig({
  2. compatibilityDate: '2026-10-01',
  3. nitro: {
  4. preset: '@deploybase/nitro-preset', The one line for us. Skip it for a static site.
  5. },
  6. runtimeConfig: {
  7. greeting: 'not set', Set by NUXT_GREETING at runtime.
  8. },
  9. routeRules: {
  10. '/': { prerender: true }, Served from the CDN; never starts the server.
  11. '/about': { prerender: true },
  12. '/swr': { swr: 60 }, Cached in the server's memory, per instance.
  13. },
  14. });

What a request costs.

One request to each kind of address on the example's live site, measured on 31 October 2026. The server scales to zero when it goes quiet, so the first request after a pause waits for it to start; the next one does not.

Response times for four requests to the live Nuxt example: a prerendered page and a warm server route in 0.54 seconds, an on-demand page with the server asleep in 10.19 seconds, a missing asset in 0.24 seconds.
nuxt-ssr-demo curl, one request each 31 Oct 2026
  • / Prerendered page, from the CDN 0.54 s
  • /now On-demand page, server asleep 10.19 s
  • /api/echo Server route, server awake 0.54 s
  • /_nuxt/missing.js Missing asset, your 404 0.24 s

How long a build takes here.

The median build on deploybase, from build start to live, across every framework and every team. Counted on 25 September 2026.

Mean, pulled up by a few long builds
78 s
Builds timed
1,641
Builds that succeed
81.5 %
Time limit per build
15 min Free, 30 min paid

Failed builds are left out of the times: they measure how long we took to give up. There is no figure for Nuxt alone yet; at our size it could point at one customer. The live numbers are on /open.

What Nuxt does here that we cannot yet.

  • Edge caching of server responses Every on-demand response is sent with Cache-Control: private, no-store, whatever your code sets. swr and cache route rules work, but in the server's memory, so each instance keeps its own copy. Prerender what can be cached.
  • Storage, tasks and sockets useStorage() lives in memory and is gone when the server scales to zero; point it at a remote unstorage driver for anything that must last. Scheduled tasks do not run, WebSockets are not supported, and the default SQLite database is empty per instance. The build log warns about each.
  • A server that stays awake A live site sleeps after 30 minutes without visitors (during the beta that window is shared capacity, and it can drop to about 2 minutes when full), and the first request after that waits several seconds, as the 10.19 s above shows.
  • Nitro 3 The preset is for Nitro 2, which Nuxt 4 runs on. Nitro 3 apps, such as TanStack Start, build as static sites only for now.

Questions about Nuxt on deploybase.

Something else? Write to support@deploybase.eu. A person answers.

Does deploybase run Nuxt server-side rendering?

Yes, in beta on paid plans, for Nuxt 4 (Nitro 2). Install @deploybase/nitro-preset and set nitro.preset to it in nuxt.config.ts. Prerendered pages and assets come from the CDN; on-demand pages and server/api routes run on a function in Paris. It works on your deploybase address, branch previews and custom domains.

Nuxt guide
Do I need the preset?

Not for a static site. Without it, detection builds with your generate script and publishes .output/public, the way nuxi generate leaves it. Install the preset and detection switches to npm run build and .deploybase/v1/static. If your build script runs nuxt build with no generate script and no preset, detection stops and says which of the two to pick, because a server build has nothing to publish on its own.

I use another Nitro preset today. What changes?

Remove it. Output written for cloudflare-pages, vercel or netlify cannot run here: take it out of nitro.preset, and drop NITRO_PRESET from the build environment if you set it there. Your pages, server routes and route rules stay as they are.

What happens on the Free plan?

The build still succeeds and the prerendered pages go live, but on-demand pages answer 404, and the build log says why. Server rendering runs on HTTP functions, which come with Starter, Pro and Scale. After upgrading, deploy again: the server is set up when a deployment is built.

Pricing
How do environment variables reach my server?

Variables with Runtime ticked on the project's Environment page reach the server through process.env, so useRuntimeConfig picks up the NUXT_ ones. Each deployment keeps the values it was built with: production gets the production values, a branch preview the preview values, and a rollback brings back the old ones.

Put your Nuxt app live.

Create a team on the free plan and connect the repository. The settings are already Nuxt's.