Docs · Frameworks

Deploy Astro.

Static Astro sites deploy as-is. Server-rendered Astro needs one config change: the Node adapter.

Static output (the default)

A default Astro project (output: 'static') builds to dist/ and Canner serves it directly. Push the repo or drop the folder — done.

Server output needs the Node adapter

For SSR (output: 'server' or per-route prerendering), Astro requires a deployment adapter. On Canner that’s @astrojs/node in standalone mode:

// astro.config.mjs
import { defineConfig } from 'astro/config';
import node from '@astrojs/node';

export default defineConfig({
  output: 'server',
  adapter: node({ mode: 'standalone' }),
});

Then npx astro add node handles the dependency, or add it manually and redeploy.

Vercel/Netlify adapters are rejected on purpose. If your config has @astrojs/vercel or @astrojs/netlify, the build fails with a clear message instead of deploying something broken — those adapters emit platform-specific output that can’t run as a normal server. Swap to the Node adapter and redeploy.

Good to know

  • SSR Astro pairs well with tag-based caching — the @canner-ca/astro-cache helper is one line per page.
  • Environment variables are available at build and runtime; client-side ones follow Astro’s PUBLIC_ prefix rule.
  • i18n routing, content collections, and view transitions all work — no platform-specific behavior to account for.