Next.js auf dem eigenen Server hosten und bei git push veröffentlichen
Der kurze Weg, Next.js auf dem eigenen Server zu hosten: Installieren Sie ein Deployment-Panel wie Coolify und verbinden Sie Ihr GitHub-Repository. Danach baut jeder git push die App und schaltet die neue Version per HTTPS live. Laut der Next.js-Dokumentation funktionieren alle Funktionen, wenn Sie mit einem Node.js-Server oder einem Docker-Container veröffentlichen, Sie sind also an keine besondere Plattform gebunden.
Welche Funktionen laufen auf dem eigenen Server?
Die Tabelle in der offiziellen Dokumentation ist kurz: Ein Node.js-Server und Docker unterstützen jede Funktion, der statische Export ist eingeschränkt. Auf einem einzelnen Server bedeutet das in der Praxis:
- Server Components, API-Routen und gestreamte Antworten funktionieren mit
next start. next/imagebraucht keine zusätzliche Einrichtung, die Bilder werden auf dem Server verarbeitet.- Caching und Incremental Static Regeneration (ISR) funktionieren auf einem Server mit dauerhafter Festplatte von selbst. Betreiben Sie mehrere Kopien, müssen Sie den Cache zwischen ihnen teilen.
- Die offizielle Empfehlung lautet, einen Reverse-Proxy vorzuschalten, statt Next.js direkt freizugeben. Coolify bringt dafür Traefik mit, und Traefik holt auch das Zertifikat.
Wie leistungsstark sollte der Server sein?
Der Build bestimmt, wie viel Speicher Sie brauchen, nicht die laufende App. next build erreicht die Spitze, und die App braucht danach weit weniger. Auch Coolify selbst braucht Speicher. Das sind die Werte, die wir auf echten Servern gemessen haben:
| Größe | Kleines Projekt | Projekt mit vielen Paketen |
|---|---|---|
| 2 GB, 1 vCPU | 350 s, 1,4 GB Speicher und 0,5 GB Swap | Dem Build ging der Speicher aus |
| 4 GB, 2 vCPU | 213 s, 2,2 GB Speicher und 0,2 GB Swap | 223 s, 3,5 GB Speicher und 0,9 GB Swap |
Das kleine Projekt war die Next.js-Beispiel-App von Coolify. Das größere war eine KI-Chat-App, geschrieben mit Next.js 16 und rund 85 Paketen, und bei 2 GB ging ihr bei der TypeScript-Prüfung der Speicher aus. Der Server hatte 2 GB Swap, und die Zahlen zeigen den Höchststand. Die Festplattennutzung nach dem ersten Build lag bei 13 bis 18 GB. Das sind unsere eigenen Messungen, und Ihr Projekt wird anders sein. Schlägt ein Build wegen fehlenden Speichers fehl, vergrößern Sie zuerst und verkleinern später wieder, wenn möglich.
Schritt für Schritt
1. Das Repository verbinden
Melden Sie sich in Coolify an, öffnen Sie Ihr Projekt auf der Seite Projects und drücken Sie New resource. Wählen Sie für ein öffentliches Repository Public Git Repository, geben Sie die Adresse ein und drücken Sie Check repository.
2. Einen Schlüssel hinzufügen, wenn das Repository privat ist
Gehen Sie im linken Menü unter Keys & Tokens zu Private Keys und erstellen Sie mit Generate ED25519 einen Schlüssel. Fügen Sie den öffentlichen Schlüssel auf GitHub auf der Seite Settings des Repositorys unter Deploy keys hinzu. Wählen Sie dann mit New resource die Option Private Git Repository (with Deploy Key) und geben Sie [email protected]:user/project.git ein. Lassen Sie Build pack auf Railpack stehen, das Next.js erkennt, und der Port bleibt bei 3000. Coolify kennzeichnet Railpack als Beta, wählen Sie bei Problemen also Ihr eigenes Dockerfile.
3. Umgebungsvariablen eintragen
Wechseln Sie auf der Seite Environment Variables zu Developer view und fügen Sie den Inhalt Ihrer .env-Datei ein. Ein Detail ist hier wichtig: Variablen, deren Namen mit NEXT_PUBLIC_ beginnen, werden beim Build in den Code geschrieben. Wenn Sie eine ändern, drücken Sie Redeploy: Das Panel erkennt, dass sich eine Build-Einstellung geändert hat, und baut neu. Geben Sie dieses Präfix niemals einem Schlüssel, den der Browser nicht sehen soll.
4. Die Domain verbinden
Legen Sie bei Ihrem Domainanbieter einen A-Record an, der auf die IP-Adresse des Servers zeigt. Gehen Sie in Coolify auf die Seite Domains, drücken Sie Add domain, wählen Sie https als Protokoll, geben Sie Ihre Domain ein, speichern Sie und veröffentlichen Sie erneut. Das Zertifikat wird automatisch angefordert und verlängert. Die Ports 80 und 443 müssen offen sein.
5. Veröffentlichen
Drücken Sie Deploy. Die Seite Deployments zeigt das Build-Protokoll live. Ist der Build fertig, bedient der alte Container weiter, bis der neue bereit ist.
Wie wird aus git push eine Veröffentlichung?
Bei jedem Push sendet GitHub eine signierte Anfrage an das Panel. Das Panel prüft die Signatur und baut die App für diesen Branch neu, und eine Anfrage mit falscher Signatur wird abgewiesen. So richten Sie es ein:
- Kopieren Sie auf der Seite Webhooks der App die Webhook URL aus dem GitHub-Abschnitt, tragen Sie bei Webhook secret einen zufälligen Wert mit mindestens 16 Zeichen ein und speichern Sie.
- Öffnen Sie auf GitHub die Settings des Repositorys, gehen Sie zu Webhooks und drücken Sie Add webhook.
- Tragen Sie die Adresse bei Payload URL und denselben Wert bei Secret ein. Setzen Sie Content type auf
application/jsonund lassen Sie push als einziges Ereignis stehen.
Zum Ausprobieren:
git commit --allow-empty -m "deploy test"
git push
Der neue Build erscheint auf der Seite Deployments. Beim kleinen Beispielprojekt ging ein neuer Commit dank des Build-Caches in 41 Sekunden live. GitHub muss die Adresse des Panels erreichen können, und da das Panel mit einer öffentlichen HTTPS-Adresse installiert wird, ist nichts Zusätzliches nötig.
Häufige Fehler
| Symptom | Ursache | Lösung |
|---|---|---|
Der Build bricht mit Killed oder heap out of memory ab | Nicht genug Speicher | Den Server vergrößern |
Ein neuer NEXT_PUBLIC_-Wert wird nicht angezeigt | Der Wert ist fest in den Build eingebaut | Redeploy nutzen |
| Der Build schlägt wegen einer fehlenden Variable fehl | Der Code liest die Variable während des Builds | Im Panel hinzufügen und zur Build-Zeit verfügbar halten |
| Es kommt kein Zertifikat | Der A-Record ist falsch oder hat sich noch nicht verbreitet | Prüfen Sie den Record und veröffentlichen Sie erneut, sobald er sich verbreitet hat |
| Ein 502-Fehler auf der Live-Website | Die App lauscht auf einem anderen Port | Korrigieren Sie den Port auf der Seite General |
Bei der Next.js-Option von Seturack kommt Coolify fertig installiert an: Der lokale Server ist validiert, der Willkommensassistent ist erledigt, und das Panel öffnet sich über HTTPS. Adresse und Passwort erscheinen in Ihrem Panel, und Sie beginnen damit, GitHub zu verbinden. Sie haben Root-Zugriff und können alles im Panel verwalten, wenn Sie das bevorzugen. Tägliche Sicherungen sind im Preis enthalten, und der Traffic ist unbegrenzt. Die Größe stellen Sie mit Reglern auf der Seite Next.js VPS ein.
Kommentare0
Noch keine Kommentare
Schreiben Sie den ersten Kommentar und teilen Sie Ihre Gedanken.
Bitte melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen.