Live demo of the Whirlwind template, as shippedStripe test mode: card 4242 4242 4242 4242, any future date, any CVCGet Whirlwind →

Custom Hosting

Any Node host, Docker, and the cron route.

Any Node host

The app is a standard Next.js build. Anything that runs Node 20 can serve it.
npm run build
npm start
💡

Set NODE_ENV=production, put HTTPS in front of it, and set the same environment variables you would on Vercel.

Docker

The template does not ship a Dockerfile. The official Next.js example works unchanged; add output: "standalone" to next.config.js for a smaller image.
docker build -t my-app .
docker run -p 3000:3000 --env-file .env.local my-app

Cron

app/api/cron/lifecycle-emails is called by Vercel Cron in vercel.json. On another host, call it on a schedule yourself.