NestJS Projelerini Saniyeler İçinde Deploy Edin

Flyway ile NestJS ve TypeScript tabanlı API'lerinizi sıfır yapılandırma (zero-config) ile canlıya alın. NestJS deploy nasıl yapılır, main.ts port ayarları ve build adımları.

NestJS Projelerini Saniyeler İçinde Deploy Edin

NestJS deploy nasıl yapılır? Kurumsal düzeyde mimariye sahip, TypeScript tabanlı modern Node.js framework'ü olan NestJS projelerini canlıya almak, derleme (build) aşamaları nedeniyle bazen zorlayıcı olabilir. Ancak Flyway ile NestJS hosting ve deploy süreçleri tamamen otomatikleştirilmiştir.

Heroku, Vercel veya Render gibi platformların aksine Flyway; projenizi GitHub üzerinden analiz eder, TypeScript build sürecini sizin yerinize halleder, sıfır yapılandırma (zero-config) prensibiyle saniyeler içinde SSL sertifikalı olarak canlıya alır.

Okuma Süresi: 7 Dakika
Dil: TypeScript / NestJS
Önerilen DB: PostgreSQL, Redis

1. Ön Koşullar (Prerequisites)

NestJS projenizi Flyway üzerinde canlıya almadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • ✅ Projeniz bir GitHub, GitLab veya Bitbucket deposunda (repository) yüklü olmalıdır.
  • ✅ Projenizin kök dizininde standart bir NestJS package.json dosyası bulunmalıdır.
  • ✅ Flyway hesabınıza giriş yapmış ve GitHub entegrasyonunu tamamlamış olmalısınız.

2. Node.js Sürümünün Belirlenmesi (Engines)

NestJS, genellikle Typescript ve modern Node.js özelliklerini yoğun kullanır. Production ortamında lokaldeki Node.js sürümünüzle uyumlu çalışmak için sürümünüzü belirtmeniz tavsiye edilir. Bunu package.json dosyanızdaki engines alanında yapabilirsiniz.

package.json (Örnek Node 18+ Belirtimi)
{
  "name": "my-nest-project",
  "engines": {
    "node": "18.x" // Flyway bu sürüme uygun imajı kullanır
  }
}

3. Start Scripti ve TypeScript Build Adımları

Flyway, deponuzda bir build scripti görürse bunu önce otomatik olarak çalıştırır. NestJS projeleri zaten varsayılan olarak "build": "nest build" scriptiyle gelir. Bu aşama sorunsuzdur.

Ancak, Flyway (ve tüm bulut PaaS sistemleri) uygulamayı başlatmak için varsayılan olarak start komutunu arar. Standart bir NestJS projesinde start komutu nest start şeklindedir ve bu production için uygun değildir.

💡
Kritik Güncelleme

package.json dosyanızdaki start komutunu production build klasörünü (genellikle dist) işaret edecek şekilde güncellemelisiniz.

package.json (Production İçin Düzenlenmiş)
"scripts": {
  "build": "nest build", // 1. Flyway önce burayı çalıştırır
  "start": "node dist/main", // 2. DİKKAT: Bunu güncelleyin! Flyway prod'da burayı tetikler
  "start:dev": "nest start --watch"
}

4. Port Dinleme Kuralları (main.ts)

NestJS projelerinin bulut ortamında çalışmamasının en yaygın sebebi main.ts içerisindeki hatalı port yapılandırmasıdır. Uygulamanız rastgele atanacak dinamik portu okumalı ve bağlantıları 0.0.0.0 host adresi üzerinden kabul etmelidir.

Yanlış Kullanım (Hardcoded)

Uygulamanızı sabit bir porta (örneğin 3000) bağlamayın.

await app.listen(3000); // Flyway'de ÇALIŞMAZ!
Doğru Kullanım (Dinamik Port)

process.env.PORT değişkenini okuyun ve 0.0.0.0 dinleyin.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // Flyway'in verdiği portu dinliyoruz
  await app.listen(process.env.PORT || 3000, '0.0.0.0');
}
bootstrap();

5. Ortam Değişkenleri (.env) Yönetimi

NestJS'in @nestjs/config paketiyle kullandığınız tüm çevresel değişkenleri (TypeORM database URL, JWT secret vs.) koda gömmek yerine Flyway üzerinden güvenle verebilirsiniz.

Flyway Environment Variables Panel
Flyway paneli üzerinden ortam değişkenlerinizi (Environment Variables) güvenle yönetin.

6. Log Görüntüleme ve Debugging (Crash Loop)

Eğer uygulamanız başarıyla derlenip (build) deploy edildiyse ama sürekli baştan başlıyorsa (Crash Loop), hata kaynağını görmek için canlı logları izlemelisiniz:

  • Proje panelinizden Logs sekmesine tıklayın.
  • Burada NestJS'in meşhur sarı-yeşil loglarını ve eğer varsa TypeORM veritabanı bağlantı hatalarını canlı (real-time) görebilirsiniz.

7. Sorun Giderme ve Sık Sorulan Sorular

Sık Sorulan Sorular (Kavramsal)

NestJS deploy nasıl yapılır?

Flyway üzerinde yeni proje oluşturun, GitHub deponuzu seçin. Flyway TypeScript build sürecini kendisi halleder ve projenizi SSL sertifikasıyla anında ayağa kaldırır.

Sorun Giderme Tablosu (Hatalar ve Çözümler)

Hata Mesajı / Belirti Olası Neden Çözüm
Web process failed to bind to $PORT main.ts dosyasında statik bir porta (örn. 3000) bağlanmaya çalışıyorsunuz. Kodu app.listen(process.env.PORT || 3000, '0.0.0.0') olarak güncelleyin.
Uygulama çalışıyor ama dışarıdan erişemiyorum Host 0.0.0.0 olarak belirtilmemiş. Uygulama dış trafiğe kapalıdır. listen metoduna ikinci parametre olarak mutlaka '0.0.0.0' ekleyin.
TypeORM / Prisma bağlantı hatası Veritabanı URL'niz hatalı veya Ortam Değişkenleri sekmesinden eklenmemiş. Flyway panelinden DATABASE_URL ortam değişkenini doğru eklediğinizi kontrol edin.

İlgili Makaleler

Hazırsınız! 🚀

Tüm bu ayarlardan sonra kodunuzu pushlamanız yeterli. Flyway, derlemeyi otomatik yapar ve saniyeler içinde sizi özel alan adınızda (Domain) yayına alır.

Son güncelleme: 20 Temmuz 2026
Bu sayfayı GitHub'da düzenle