June 8, 2026 (yesterday)
Written by Temps Team
Last updated June 8, 2026 (yesterday)
The fastest way to deploy a Next.js app without Vercel in 2026 is Temps — install it on any VPS, run three bunx @temps-sdk/cli commands, and you get git-push deploys with automatic HTTPS, preview environments, and built-in analytics. Other no-Vercel options: a manual VPS (Node + PM2 + Nginx + Certbot), Docker on a VPS, and Cloudflare Pages. The cheapest production-ready route is a Hetzner CX22 VPS at ~$4/mo (EUR 3.79) with 20TB of included traffic — versus Vercel Pro at $20/seat/mo plus $0.15/GB bandwidth over the included 1TB.
| Option | Git-push deploy | Setup time | Built-in analytics + error tracking | Self-hosted | Monthly cost |
|---|---|---|---|---|---|
| Temps | Yes | ~5 min | Yes (included) | Yes | Free self-host / ~$6 Cloud |
| Manual VPS (Node + PM2 + Nginx) | Via GitHub Actions | 30–60 min | No (bolt-on SaaS) | Yes | ~$4–6 infra |
| Docker on a VPS | Via GitHub Actions | 45–90 min | No (bolt-on SaaS) | Yes | ~$4–6 infra |
| Cloudflare Pages | Yes | ~10 min | No | No | $0 static / $5 Workers |
| Vercel (for reference) | Yes | ~5 min | Add-on only | No | $20/seat + $0.15/GB |
Quick answer: To deploy a Next.js app without Vercel in 2026, install Temps on any VPS and run
bunx @temps-sdk/cli projects create,projects git --preset nextjs, thendeploy— git-push deploys with automatic HTTPS, preview environments, and built-in analytics, error tracking, and session replay on infrastructure you own. Temps is free to self-host (MIT or Apache 2.0 dual-licensed) or ~$6/mo on Temps Cloud (Hetzner cost + 30%), versus Vercel Pro at $20/seat/mo plus $0.15/GB bandwidth over 1TB. Other no-Vercel paths: a manual VPS, Docker on a VPS, or Cloudflare Pages. The cheapest production-ready route is a Hetzner CX22 VPS at ~$4/mo with 20TB included traffic.
Temps deploys a Next.js app to a server you own with the same git-push workflow as Vercel, but with no per-seat fees and no bandwidth bills. Self-hosting is free under the MIT or Apache 2.0 dual license; Temps Cloud runs at ~$6/mo (Hetzner cost + 30% margin). Temps bundles web analytics, error tracking, session replay, and uptime monitoring into one Rust binary — replacing Vercel, Plausible/PostHog, FullStory, Sentry, and Pingdom in a single install.
Temps auto-detects Next.js via --preset nextjs and Nixpacks, so you do not need a Dockerfile. The preset sets the build command to npm run build, the output directory to .next, and Node 20.
# Installs the Temps server + CLI on a fresh VPS
curl -fsSL https://temps.sh/deploy.sh | bash
# Or, for the CLI only
npm install -g @temps-sdk/cli
bunx @temps-sdk/cli login
bunx @temps-sdk/cli projects create -n "my-nextjs-app" -d "Next.js application"
bunx @temps-sdk/cli projects git -p my-nextjs-app \
--owner your-org --repo your-nextjs-app --branch main --preset nextjs -y
bunx @temps-sdk/cli deploy my-nextjs-app -b main -e production -y
That's it — your app is live with a Let's Encrypt certificate. After deploy, Temps health checks run every 5 seconds, require two consecutive successes before promoting the new version, and auto-roll-back on any failure inside the 60-second error window. The manual PM2 + Nginx path has no equivalent of that safety net.
For a smaller, faster image, add output: "standalone" to next.config.js. Nixpacks detects standalone mode and runs node server.js instead of npx next start.
# Set or import environment variables
bunx @temps-sdk/cli environments vars set DATABASE_URL "postgresql://..." -p my-nextjs-app -e production
bunx @temps-sdk/cli environments vars import .env.production -p my-nextjs-app -e production
# Add a custom domain (use --challenge=dns-01 for wildcards)
bunx @temps-sdk/cli domains add -d yourdomain.com
# Stream live logs, or roll back instantly
bunx @temps-sdk/cli runtime-logs -p my-nextjs-app -f
bunx @temps-sdk/cli deployments rollback -p my-nextjs-app -e production
The full walkthrough — preview environments, wildcards, and observability — lives in How to Deploy a Next.js App to a Self-Hosted Server.
The classic no-Vercel route runs Next.js directly on a Linux VPS. You'll install Node 20 from NodeSource (not apt, which ships an old version), build the app, keep it alive with PM2, reverse-proxy it through Nginx, and issue SSL with Certbot. On Ubuntu 22.04 or 24.04, the core sequence is:
npm ci && npm run build
pm2 start npm --name nextjs-app -- start
pm2 startup && pm2 save # survive reboots
Then point Nginx at localhost:3000, run Certbot for a Let's Encrypt cert, and wire up CI with appleboy/ssh-action so a push to main re-runs the build over SSH. Certbot's certs expire every 90 days, but its systemd timer auto-renews them.
Size the box carefully. A 1GB VPS will OOM during next build; use 2GB minimum, or 4GB if a database shares the server. The honest gaps: there's no health check, no rollback, no preview environments, and a 1–3 second 502 window every time PM2 restarts. You'll also bolt on four external services — uptime, error tracking, analytics, and log management — that Temps includes by default.
The full eight-step version, with every config file, is in How to Deploy a Next.js App to a VPS (Manual Guide).
Docker gives you a reproducible build that runs the same locally and in production. A multi-stage Dockerfile built on node:20-alpine with Next.js output: "standalone" keeps the final image under 150MB. You build once and run anywhere:
docker build -t my-nextjs-app .
docker run -d -p 3000:3000 my-nextjs-app
Docker handles the runtime, but not the edges. You still need Nginx or Caddy in front for SSL termination, plus GitHub Actions (or similar) to rebuild and ship the image on every push. That's the most DevOps overhead of any path here, and it's the cheapest only at very high scale where a single beefy VPS beats per-request billing.
For the full Dockerfile and four other deployment methods side by side, see 5 Ways to Deploy a Next.js App.
Cloudflare Pages is the cheapest path for static and JAMstack Next.js sites, with unlimited bandwidth on every plan including the free tier (Cloudflare Pages, as of June 2026). A purely static export deploys in one command:
npm i -g wrangler && wrangler login
wrangler pages deploy .next
Server-side rendering is where the trade-offs appear. SSR needs the @cloudflare/next-on-pages adapter, the nodejs_compat flag, and you deploy .vercel/output/static. The catch: API routes run on the Workers runtime, not full Node.js, so some routes, middleware, and ISR behave differently. The free Workers tier caps CPU at 10ms per request and builds at 20 minutes; Workers Paid at $5/mo covers a much larger request volume for SSR.
If Cloudflare's runtime limits bite, compare the managed and self-hosted options in Best Cloudflare Pages Alternatives in 2026.
The cheapest production-ready way to host a Next.js app in 2026 is a Hetzner CX22 VPS at ~$4/mo (EUR 3.79) with 20TB of included traffic in EU regions (Hetzner cloud pricing, as of June 2026). The equivalent DigitalOcean droplet (2 vCPU / 4GB) costs ~$24/mo — roughly 6x more for the same specs. Cloudflare Pages is $0 for static sites; Vercel's free tier is $0 solo but jumps to $20/seat once you move to Pro.
| Platform | Spec | Monthly cost | Notes |
|---|---|---|---|
| Hetzner CX22 | 2 vCPU / 4GB / 40GB | ~$4 (EUR 3.79) | 20TB traffic; cheapest production-ready |
| Hetzner CX32 | 4 vCPU / 8GB | ~$7 (EUR 6.90) | Build-on-server + small DB |
| Cloudflare Pages | Static | $0 | Unlimited bandwidth; SSR via Workers |
| DigitalOcean | 2 vCPU / 4GB | ~$24 | ~6x Hetzner for same specs |
| Railway | App + Postgres | ~$55 | Usage-based, no built-in analytics |
| Vercel Pro | 5-person team | $100+ | $20/seat + $0.15/GB over 1TB |
| Temps Cloud | Managed VPS | ~$6 | Hetzner + 30%, includes observability |
Hetzner adjusted prices on April 1, 2026, so treat ~$4/mo as a guide and check hetzner.com/cloud for the current figure. US locations run roughly 20% higher with about 1TB of included traffic.
The bigger cost gap is the observability stack. A 5-person team serving 100K visitors/month on Vercel Pro plus Plausible, Sentry, and LogRocket runs $214+/mo. The same app self-hosted with Temps on a Hetzner VPS costs ~$4/mo, or ~$6/mo on Temps Cloud — about $210/mo, or ~$2,500/yr, saved. Run your own numbers with the Next.js deployment cost calculator.
One developer was billed $46,485 after a traffic spike on a static Vercel site. That's an outlier, not a typical bill — but it's a fair reminder that usage-based pricing carries tail risk a flat-rate VPS does not.
To deploy a Next.js app without Vercel, install Temps on any VPS and run bunx @temps-sdk/cli projects create, then projects git --preset nextjs, then deploy — you get git-push deploys with automatic HTTPS and built-in analytics on infrastructure you own. Other no-Vercel paths: a manual VPS (Node + PM2 + Nginx), Docker on a VPS, or Cloudflare Pages (free for static sites). Temps is free to self-host or ~$6/mo on Temps Cloud, versus Vercel Pro's $20/seat/mo.
The cheapest production-ready way to host a Next.js app in 2026 is a Hetzner CX22 VPS at ~$4/mo (EUR 3.79) with 20TB included traffic (Hetzner cloud pricing, as of June 2026) — about 6x cheaper than the equivalent ~$24/mo DigitalOcean droplet. Cloudflare Pages is $0 for static sites. Running Temps on that Hetzner box adds analytics, error tracking, and session replay at no extra cost, replacing several SaaS subscriptions.
Yes. You can run Next.js directly on a VPS with Node 20, PM2, Nginx, and Certbot — no container needed. Install Node from NodeSource, run npm ci && npm run build, start it with pm2 start npm --name nextjs-app -- start, then reverse-proxy through Nginx with a Certbot SSL cert. Temps also deploys Next.js without a Dockerfile by auto-detecting the framework via Nixpacks and --preset nextjs.
No. Temps auto-detects Next.js with --preset nextjs and Nixpacks, so no Dockerfile is required. The preset sets the build command to npm run build, the output directory to .next, and Node 20 automatically. If you add output: "standalone" to next.config.js, Nixpacks detects it and runs node server.js for a smaller, faster image instead of npx next start.
For a static site, run npm i -g wrangler, wrangler login, then wrangler pages deploy .next. For SSR, add the @cloudflare/next-on-pages adapter, enable the nodejs_compat flag, and deploy .vercel/output/static. Cloudflare Pages gives unlimited bandwidth even on free, but API routes run on the Workers runtime (not full Node.js), so some routes, middleware, and ISR behave differently.
No — it depends on the path you pick. A manual VPS or Docker setup gives you neither out of the box, so you'd bolt on separate services. Temps keeps both: it ships per-pull-request preview environments plus built-in web analytics, error tracking, and session replay in the same binary, replacing Vercel Analytics, Plausible, Sentry, and FullStory. That's the main reason Temps is the closest no-Vercel match for Vercel's developer experience.
Related: Deploy a Next.js App to a Self-Hosted Server · Deploy Next.js to a VPS (Manual Guide) · Next.js Deployment Cost Calculator
Last updated June 2026. Pricing verified against each platform's current pricing page.