Next.js'i kendi sunucunuzda yayınlamak: git push ile otomatik yayın
Next.js'i kendi sunucunuzda yayınlamanın kısa yolu, sunucuya Coolify gibi bir yayın paneli kurup GitHub deponuzu bağlamaktır. Bundan sonra her git push uygulamayı derler ve yeni sürümü HTTPS ile yayına çıkarır. Next.js belgelerine göre Node.js sunucusu ya da Docker konteyneriyle yapılan yayında bütün özellikler çalışır, yani özel bir platforma bağlı değilsiniz.
Kendi sunucunuzda hangi özellikler çalışır?
Resmi belgedeki tablo kısa: Node.js sunucusu ve Docker bütün özellikleri destekler, statik dışa aktarma sınırlıdır. Tek sunucuda pratikte şunlar geçerlidir:
- Sunucu bileşenleri, API yolları ve akışla yanıt
next startile çalışır. next/imageek ayar istemez, görseller sunucuda işlenir.- Önbellek ve zamanlı yeniden üretim (ISR) kalıcı diski olan tek sunucuda kendiliğinden çalışır. Birden çok kopya çalıştırırsanız önbelleği paylaştırmanız gerekir.
- Resmi öneri, Next.js'i doğrudan internete açmak yerine önüne ters vekil koymaktır. Coolify bunu Traefik ile hazır getirir, sertifikayı da o alır.
Sunucu ne kadar güçlü olmalı?
Bellek ihtiyacını çalışma anı değil derleme belirler. next build tepe yapar, uygulama ayağa kalktıktan sonra çok daha azına iner. Coolify'ın kendisi de bellek kullanır. Gerçek sunucuda ölçtüğümüz değerler şöyle:
| Boyut | Küçük proje | Çok paketli proje |
|---|---|---|
| 2 GB, 1 vCPU | 350 sn, 1,4 GB bellek ve 0,5 GB takas | Derleme bellekten düştü |
| 4 GB, 2 vCPU | 213 sn, 2,2 GB bellek ve 0,2 GB takas | 223 sn, 3,5 GB bellek ve 0,9 GB takas |
Küçük proje Coolify'ın örnek Next.js uygulamasıydı. Çok paketli proje ise Next.js 16 ile yazılmış, yaklaşık 85 paketli bir yapay zekâ sohbet uygulamasıydı ve 2 GB'ta TypeScript denetimi sırasında bellek bitti. Sunucuda 2 GB takas açıktı, rakamlar en yüksek anı gösterir. Disk kullanımı ilk derlemeden sonra 13-18 GB oldu. Bunlar bizim ölçümümüzdür, sizin projenizde değişir. Derleme bellek yüzünden düşerse önce sunucuyu büyütün, gerekirse sonra küçültün.
Adım adım yayın
1. Depoyu bağlayın
Coolify'a girin, Projects sayfasından projenizi açın, New resource deyin. Herkese açık depoda Public Git Repository seçip adresi yazın, Check repository deyin.
2. Özel depoysa anahtar ekleyin
Sol menüde Keys & Tokens altındaki Private Keys sayfasından Generate ED25519 ile anahtar üretin. Açık anahtarı GitHub'da deponun Settings sayfasındaki Deploy keys bölümüne ekleyin. Sonra New resource ile Private Git Repository (with Deploy Key) seçip [email protected]:kullanici/proje.git adresini yazın. Build pack alanında Railpack kalsın, Next.js'i kendisi tanır, port 3000 olur. Railpack Coolify'da beta olarak işaretlidir, sorun çıkarsa kendi Dockerfile'ınızı seçin.
3. Ortam değişkenlerini girin
Environment Variables sayfasında Developer view seçeneğine geçip .env içeriğinizi yapıştırabilirsiniz. Bir ayrıntı önemli: adı NEXT_PUBLIC_ ile başlayan değişkenler derleme sırasında koda gömülür. Değerini değiştirince Redeploy deyin, panel derleme ayarının değiştiğini görüp yeniden derler. Tarayıcıya gitmemesi gereken anahtarlara bu öneki vermeyin.
4. Alan adınızı bağlayın
Alan adı sağlayıcınızda bir A kaydı açıp sunucunun IP adresini yazın. Coolify'da Domains sayfasında Add domain deyin, protokol olarak https seçip alan adınızı yazın, kaydedin ve yeniden yayınlayın. Sertifika kendiliğinden alınır ve yenilenir. 80 ve 443 numaralı portlar açık olmalıdır.
5. Yayınlayın
Deploy düğmesine basın. Deployments sayfasında derleme günlüğünü canlı izlersiniz. Derleme bitince eski konteyner yenisi hazır olana dek çalışmaya devam eder.
git push nasıl yayına dönüşüyor?
GitHub her push'ta panele imzalı bir istek gönderir, panel imzayı doğrular ve o dalın uygulamasını yeniden derler. İmza tutmazsa istek reddedilir. Bağlantıyı şöyle kurarsınız:
- Uygulamanın Webhooks sayfasında GitHub bölümündeki Webhook URL adresini kopyalayın, Webhook secret alanına en az 16 karakterlik rastgele bir değer girip kaydedin.
- GitHub'da deponun Settings sayfasından Webhooks bölümüne gidin, Add webhook deyin.
- Payload URL alanına adresi, Secret alanına aynı değeri yazın. Content type olarak
application/jsonseçin, olay olarak yalnız push kalsın.
Sonra denemek için:
git commit --allow-empty -m "yayin denemesi"
git push
Deployments sayfasında yeni derleme görünür. Küçük örnek projede derleme önbelleği sayesinde yeni bir commit 41 saniyede yayına çıktı. GitHub panelin adresine erişebilmelidir. Kurulumda panel herkese açık HTTPS adresiyle geldiği için ek bir şey gerekmez.
Sık karşılaşılan hatalar
| Belirti | Sebep | Çözüm |
|---|---|---|
Derleme Killed ya da heap out of memory ile düşüyor | Bellek yetmiyor | Sunucuyu büyütün |
Yeni NEXT_PUBLIC_ değeri görünmüyor | Değer derlemeye gömülü | Redeploy yapın |
| Derleme eksik değişkenden düşüyor | Kod derlemede değişkeni okuyor | Değişkeni panele ekleyin, derlemede kullanılabilir kalsın |
| Sertifika gelmiyor | A kaydı henüz yayılmadı ya da yanlış | Kaydı kontrol edin, yayıldıktan sonra yeniden yayınlayın |
| Yayında 502 hatası | Uygulama farklı portta dinliyor | General sayfasındaki port değerini düzeltin |
Seturack'ta Next.js seçeneğiyle Coolify kurulu gelir: yerel sunucu doğrulanmış, karşılama sihirbazı kapalı, panel HTTPS ile açık. Adres ve şifre panelinizde görünür, GitHub'ı bağlamakla başlarsınız. Root erişimi sizde; isterseniz her şeyi panelden yönetirsiniz. Fiyata günlük yedek dahildir, trafik limitsizdir. Boyutu Next.js VPS sayfasında kaydırıcılarla seçersiniz.
Yorumlar0
Henüz Yorum Yok
İlk düşüncenizi paylaşan siz olun.
Yorum bırakmak için lütfen giriş yapın veya kaydolun.