Next.js hosten, ohne Vercel.
run.zero baut deine App mit next build und startet sie mit next start als Node-Server in Deutschland. Server-Rendering und Route Handlers laufen in diesem Prozess.
Braucht den Tarif Entwickler, kostenlos gibt es nur Websites. Preise · Grenzen vorab prüfen
- App Router und SSR getestet
- Ein Node-Prozess je Replica
- Gehostet in Nürnberg
> Deploye den Ordner nextjs auf run.zero.
runzero_create_appfertigexample-nextjs
runzero_push_filesfertigein Commit
runzero_deployfertigDienste angelegt
runzero_wait_for_buildfertiglive
live unter https://web-example-nextjs-6733689e.run-zero.de
- Live-DemoLäuft auf run.zero(öffnet in neuem Tab)
- Beispiel-CodeMIT, auf GitHub(öffnet in neuem Tab)
- BuildpacksNode, Python, Go, PHP, Java
- Gehostet in DeutschlandHetzner, Nürnberg
In vier Schritten live.
Getestet mit Next.js 16 im Beispiel, das live läuft.
- 01
Skripte anpassen
Lege Node 22 fest und baue mit
next build --webpack. Turbopack, in Next.js 16 der Standard, findetnextim Modul-Layer des Buildpacks nicht.package.json (Auszug) "engines": { "node": "22.x" },"scripts": { "build": "next build --webpack", "start": "next start -p ${PORT:-8080}"} - 02
next in dependencies
next,reactundreact-domstehen independencies. Das Buildpack entferntdevDependencies. - 03
run-zero.yaml anlegen
Ein Dienst, Port 8080.
run-zero.yaml version: "1"services: web: port: 8080 - 04
Konto anlegen und deployen
Lege ein Konto an, verbinde deinen Agenten mit dem Befehl und melde dich in Claude Code mit
/mcpund Authenticate an.- Dann schreibst du dem Agenten: Deploye dieses Repo auf run.zero.
Ohne Agent
Lege die App im Dashboard an und verbinde dein GitHub-Repo. Jeder Push baut neu.
Claude Code verbinden claude mcp add --transport http \ -s user run-zero \ https://api.run-zero.de/mcp \ --client-id runzero-cli \ --callback-port 53761
Nach 1 bis 3 Minuten läuft die App unter https://web-<app>.run-zero.de. Prüfe eine Route deiner App, im Beispiel /api/health. Ist der Build rot, nennt runzero_get_build_logs den Grund.
Ein Projekt, ein Dienst.
Die Skripte in package.json entscheiden alles.
build nutzt --webpack, start nutzt den Port aus $PORT.
{ "name": "run-zero-example-nextjs", "version": "1.0.0", "private": true, "engines": { "node": "22.x" }, "scripts": { "dev": "next dev", "build": "next build --webpack", "start": "next start -p ${PORT:-8080}" }, "dependencies": { "next": "16.4.5", "react": "19.3.1", "react-dom": "19.3.1" }}Wird bei jedem Aufruf auf dem Server gerendert, die Uhrzeit zeigt es.
Beispiel auf GitHub(öffnet in neuem Tab)// Rendered on the server for every request, so the time shows that SSR runs on run.zero.export const dynamic = 'force-dynamic';export default function Home() { return ( <main> <h1>Next.js on run.zero</h1> <p>Server-rendered at {new Date().toISOString()} by next start.</p> <p><a href="/api/health">/api/health</a></p> </main> );}Was sich gegenüber Vercel ändert.
Nur was du im Betrieb merkst.
| Auf Vercel | Auf run.zero |
|---|---|
| Serverless Functions je Route | Ein Node-Prozess mit next start je Replica |
| Build bei Vercel | next build beim Image-Build mit Paketo |
| Umgebungsvariablen im Projekt | env: in run-zero.yaml, geheime Werte als Secret |
| Vercel-Domain | https://<dienst>-<app>.run-zero.de, eigene Domain mit Let’s Encrypt |
| Vercel Postgres, KV, Blob | Postgres-Add-on, KV und Blob gibt es nicht |
Was heute nicht geht.
Damit dich nichts überrascht.
Braucht den Tarif Entwickler
Free hat keine Apps mit Server und kein Postgres, der Deploy bricht dort ab.
Preise ansehenKein Turbopack-Build
Baue mit
--webpack, sonst brichtnext buildauf dem Buildpack ab.Keine Vercel-Dienste
Edge Network, KV, Blob und Analytics von Vercel gibt es hier nicht.
ISR nicht getestet
Ein geteilter Cache über mehrere Replicas ist nicht eingerichtet, ISR haben wir nicht geprüft.
Was du nicht mehr selbst machst.
Build, HTTPS, Datenbank und Backups laufen auf der Plattform.
Daten bleiben in Deutschland
Server und Backups bei Hetzner in Nürnberg. Mit Auftragsverarbeitungsvertrag.
HTTPS automatisch
Jeder Dienst bekommt eine Adresse unter
run-zero.de, eigene Domains ein Zertifikat von Let’s Encrypt.Postgres als Add-on
Ein Eintrag in
run-zero.yaml,DATABASE_URLkommt als Umgebungsvariable.Kein Lock-in
Dein Code bleibt in deinem Repo, die Datenbank gibt es als Dump zum Download.
Fragen.
Zu Next.js.
Geht auch ein statischer Export?
Das haben wir mit Next.js nicht getestet. Das Vite-Beispiel zeigt, wie serve fertige Dateien ausliefert.
Welche Next.js-Version ist getestet?
Next.js 16 mit React 19 im Beispiel. Die Live-Demo rendert jede Anfrage auf dem Server.
Wie nutze ich eine Datenbank?
Hänge das Postgres-Add-on in run-zero.yaml an den Dienst. Deine Server-Komponenten und Route Handlers lesen DATABASE_URL.
Mein Projekt kommt aus v0. Gilt das auch?
Ja. Ein v0-Export ist ein Next.js-Projekt, du gehst dieselben Schritte.