Node.js ve Next.js uygulamalarının çalıştığı güvenli ve modern bir VPS sunucu altyapısı illüstrasyonu.

VPS Sunucuda Node.js ve Next.js Barındırma Rehberi

Bir VPS sunucuda Node.js barındırma adımlarını, ters vekil yapılandırmasını ve bipanel ile eklentisiz, kesintisiz dağıtım (zero-downtime) süreçlerini öğrenin.

Bir VPS sunucuda Node.js barındırma işlemi temelde uygulamanızı bir arka plan servisi (daemon) olarak çalıştırmayı ve önüne bir ters vekil (reverse proxy) koymayı gerektirir. İster saf Node.js, ister sunucu tarafı oluşturma (SSR) yapan bir Next.js projesi kullanın, trafiği 80 ve 443 portlarından alıp uygulamanızın çalıştığı iç porta (örneğin 3000) güvenle yönlendirmelisiniz.

Geleneksel barındırma panelleri genellikle PHP odaklı tasarlandığından, modern JavaScript ve TypeScript uygulamalarını yayına almak için karmaşık eklentilere veya manuel terminal işlemlerine ihtiyaç duyulur. Bu yazıda, Node.js uygulamalarını bir sunucuda barındırmanın teknik temellerini inceleyecek ve bipanel'in yerleşik araçlarıyla bu süreci nasıl eklentisiz, kesintisiz (zero-downtime) ve Git entegreli hâle getirebileceğinizi adım adım anlatacağız.

Node.js Uygulamaları Neden Ters Vekile İhtiyaç Duyar?

Node.js uygulamanızı doğrudan 80 (HTTP) veya 443 (HTTPS) portunda çalıştırmak teknik olarak mümkün olsa da, bu kesinlikle önerilen bir güvenlik veya performans pratiği değildir. Bunun üç temel nedeni vardır:

  1. Güvenlik ve Yetkilendirme: Linux sistemlerde 1024'ün altındaki portları dinlemek için root yetkisi gerekir. Uygulamanızı root olarak çalıştırmak, olası bir güvenlik açığında tüm sunucunun ele geçirilmesine neden olabilir.
  2. SSL/TLS Yönetimi: Node.js içinde SSL sertifikalarını yönetmek ve yenilemek zahmetlidir. Let's Encrypt gibi otomatik sertifika sağlayıcıları web sunucularıyla (Nginx, Apache) çok daha uyumlu çalışır.
  3. Çoklu Uygulama Barındırma: Aynı sunucuda birden fazla web sitesi veya uygulama (örneğin bir WordPress blogu ve bir Next.js uygulaması) barındırmak istiyorsanız, 80 ve 443 portlarını paylaştıran bir trafik yöneticisine ihtiyacınız vardır.

Bu nedenlerle standart mimari; Nginx veya Apache'nin ön tarafta trafiği karşılaması, statik dosyaları sunması, SSL şifrelemesini çözmesi ve yalnızca dinamik istekleri içeride (örneğin 127.0.0.1:3000) çalışan Node.js sürecine iletmesi üzerine kuruludur.

Manuel Kurulum: Geleneksel Yöntem

Modern otomasyon araçlarına geçmeden önce, arka planda nelerin yaşandığını anlamak sistem yöneticileri için önemlidir. Manuel bir kurulumda süreç şu şekilde işler:

1. Uygulamayı Daemonize Etmek (systemd)

Uygulamanızın sunucu yeniden başlatıldığında otomatik çalışması ve çöktüğünde yeniden başlaması için bir systemd servis dosyası oluşturmanız gerekir.

# /etc/systemd/system/myapp.service
[Unit]
Description=Next.js Uygulamasi
After=network.target

[Service]
User=appuser
WorkingDirectory=/home/appuser/myapp
ExecStart=/usr/bin/npm run start
Restart=always
Environment=NODE_ENV=production
Environment=PORT=3000

[Install]
WantedBy=multi-user.target

Servisi etkinleştirmek için systemctl enable myapp ve başlatmak için systemctl start myapp komutları kullanılır.

2. Nginx Ters Vekil (Reverse Proxy) Yapılandırması

Uygulama içeride 3000 portunda çalışırken, dışarıdan gelen istekleri bu porta yönlendirmek için Nginx yapılandırılır. WebSocket desteği gerektiren uygulamalar için Upgrade başlıklarının da iletilmesi şarttır.

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Manuel Yöntemin Zorlukları

Bu yapılandırma başlangıçta basit görünse de, işler güncellemeler sırasında karmaşıklaşır. Yeni bir sürüm çıkardığınızda git pull yapıp npm run build komutunu çalıştırırken, uygulamanız kapanacak veya kullanıcılar saniyeler boyunca 502 Bad Gateway hatası alacaktır (downtime). Ayrıca her yeni projede port çakışmalarını önlemek, SSL sertifikalarını manuel ayarlamak ve logları takip etmek ciddi bir zaman kaybıdır.

bipanel ile Kesintisiz Dağıtım (Zero-Downtime)

bipanel, Node.js, Next.js, Python, Ruby ve Go gibi uygulamaları PHP sitelerinin yanında, hiçbir ek eklentiye ihtiyaç duymadan yerleşik olarak barındırır. Uygulamanızın derleme, başlatma, port atama ve ters vekil yapılandırması tamamen otomatik yönetilir.

En büyük avantajı ise kesintisiz dağıtım (zero-downtime deployment) yeteneğidir. Geleneksel yöntemlerdeki 502 hatalarını ortadan kaldıran bu mimari şu şekilde çalışır:

  1. Sürüm Klasörleri (a/b yuvaları): Yeni bir dağıtım tetiklendiğinde, bipanel mevcut çalışan uygulamayı durdurmaz. Kodları yeni bir sürüm klasörüne çeker.
  2. Arka Planda Derleme: npm install ve npm run build gibi bağımlılık kurma ve derleme işlemleri bu yeni klasörde, arka planda yapılır.
  3. Sağlık Kontrolü (Health Check): Uygulama yeni bir iç portta başlatılır. bipanel, uygulamanın HTTP veya TCP üzerinden sağlıklı yanıt verip vermediğini kontrol eder.
  4. Trafik Geçişi: Uygulama sağlıklıysa, ters vekil anında yeni porta yönlendirilir. Eski süreç kapatılır. Ziyaretçiler hiçbir kesinti hissetmez.
  5. Tek Tıkla Geri Alma: Eğer yeni sürümde bir sorun çıkarsa, panel üzerinden tek tıkla bir önceki çalışan sürüme geri dönülebilir.

Adım Adım: bipanel'de Node.js ve Next.js Yayınlama

Eğer henüz bir sunucunuz yoksa, temiz bir Ubuntu 24.04 LTS (veya Red Hat ailesi için AlmaLinux 9) sunucu hazırlayın. bipanel'i kurmak için root yetkisiyle şu komutu çalıştırmanız yeterlidir:

curl -fsSL https://bipanel.io/install.sh | sudo bash -s -- --hostname server.example.com --email [email protected]

Kurulum yaklaşık 15 dakika sürer. Kurulum tamamlandıktan sonra yönetici paneline girip bir barındırma hesabı oluşturun. Ardından kullanıcı paneline geçerek şu adımları izleyin:

1. Uygulama Ortamını Hazırlama

Kullanıcı panelinde Uygulamalar bölümüne gidin ve yeni bir Node.js uygulaması ekleyin. bipanel, uygulamanızın çerçevesini (framework) algılar ve varsayılan komutları önerir.

  • Uygulama Dili ve Sürümü: Hesabınızda doğrulanmış resmî paketlerden uygulamanızın gerektirdiği Node.js sürümünü seçin.
  • Ortam Değişkenleri (.env): Veritabanı bağlantıları veya API anahtarları gibi ortam değişkenlerini paneldeki arayüzden güvenle ekleyin. Bu değişkenler uygulama sürecine doğrudan enjekte edilir.

2. Git Bağlantısı ve Otomatik Dağıtım

Dosyalarınızı FTP veya Dosya Yöneticisi ile yükleyebileceğiniz gibi, en sağlıklı yöntem Git entegrasyonunu kullanmaktır.

  • Panel üzerinden GitHub, GitLab, Bitbucket veya Gitea hesabınızı bağlayın.
  • Deponuzu ve çalışmak istediğiniz dalı (örneğin main veya production) seçin.
  • bipanel, deponuza otomatik olarak bir dağıtım anahtarı (deploy key) ve imzalı bir webhook ekler.

Bu sayede yerel bilgisayarınızda kodunuzu yazıp git push yaptığınız anda, webhook sunucuya ulaşır. bipanel kodu çeker, derler, sağlık kontrolünden geçirir ve uygulamanızı kesintisiz olarak günceller.

3. Derleme ve Başlatma Komutları

Next.js gibi framework'ler için derleme adımları kritik öneme sahiptir. Panelde bu komutları projenize göre özelleştirebilirsiniz:

  • Derleme Komutu: npm install && npm run build
  • Başlatma Komutu: npm run start

Eğer sadece bir API (örneğin Express.js) çalıştırıyorsanız, derleme komutunu boş bırakabilir ve başlatma komutunu node server.js olarak ayarlayabilirsiniz.

4. Ters Vekil ve WebSocket Desteği

Uygulamayı başlattığınızda bipanel, sunucu içindeki boş bir portu uygulamanıza atar (örneğin 3004). Nginx veya Apache ters vekil yapılandırması otomatik olarak oluşturulur.

Eğer uygulamanız Socket.io gibi WebSocket bağlantıları gerektiriyorsa, ters vekil yapılandırması bu trafiği kesintiye uğratmadan doğrudan uygulamanıza iletecek şekilde yerleşik olarak ayarlanmıştır.

İzleme, Loglar ve Sorun Giderme

Bir uygulamayı yayına almak işin sadece yarısıdır; asıl mesele onu ayakta tutmaktır. bipanel, uygulama yönetimini kolaylaştıran araçlar sunar:

  • Canlı Günlük (Live Log): Uygulamanızın stdout ve stderr çıktılarını tarayıcınız üzerinden canlı olarak izleyebilirsiniz. Konsola yazdırılan hataları anında görmek, sorun gidermeyi hızlandırır.
  • Otomatik Yeniden Başlatma: Uygulamanız bellek sızıntısı veya yakalanmayan bir istisna (uncaught exception) nedeniyle çökerse, bipanel'in süreç yöneticisi bunu algılar, bekleyerek yeniden başlatır ve size bildirim gönderir.
  • Önizleme Ortamları (Pro): Eğer bipanel Pro kullanıyorsanız, GitHub veya GitLab'da açtığınız her Pull Request için ayrı bir önizleme adresi otomatik oluşturulur. Ekibiniz değişiklikleri canlıya almadan önce bu geçici adreste test edebilir.

Sonuç

VPS sunucuda Node.js veya Next.js barındırmak, manuel yapılandırmalarla yönetildiğinde hata payı yüksek ve zaman alıcı bir süreçtir. Ters vekil kurmak, servisleri yönetmek ve kesintisiz dağıtım hatları (CI/CD pipelines) oluşturmak ciddi bir sistem yöneticiliği eforu gerektirir.

bipanel, tüm bu karmaşayı ortadan kaldırarak geliştiricilerin yalnızca kodlarına odaklanmasını sağlar. Eklenti gerektirmeyen yerleşik yapısı, Git entegrasyonu ve sağlık kontrollü kesintisiz dağıtım mimarisiyle modern web uygulamalarını güvenle barındırabilirsiniz.

Kendi sunucunuzda modern bir barındırma altyapısı kurmak için bipanel'i bipanel.io/indir adresinden hemen kurabilirsiniz. 3 barındırma hesabına kadar tamamen ücretsiz olan Topluluk (Community) sürümü, bu yazıda bahsedilen tüm temel uygulama barındırma ve Git dağıtım özelliklerini içerir. Daha fazla hesap, ajans özellikleri ve gelişmiş önizleme ortamları için Fiyatlar sayfamızdan Pro planlarımızı inceleyebilirsiniz.

Sık sorulan sorular

Node.js uygulamaları için hangi işletim sistemini seçmeliyim?

Yeni bir sunucu kuruyorsanız, uzun süreli destek ve geniş paket uyumluluğu nedeniyle Ubuntu 24.04 LTS sürümünü önermekteyiz. Red Hat ailesine aşinaysanız AlmaLinux 9 da Node.js barındırmak için mükemmel ve tam desteklenen bir seçenektir.

Next.js projemi statik mi yoksa Node.js ile mi yayınlamalıyım?

Eğer projenizde yalnızca statik sayfalar varsa (Static Export), dosyaları doğrudan web sunucusu üzerinden yayınlayabilirsiniz. Ancak Server-Side Rendering (SSR), API rotaları veya Image Optimization kullanıyorsanız uygulamanızı bir Node.js servisi olarak çalıştırmanız zorunludur.

502 Bad Gateway hatası neden olur?

Bu hata, ön taraftaki web sunucusunun (ters vekil) arka planda çalışan Node.js uygulamasına ulaşamadığını gösterir. Uygulamanız çökmüş olabilir, belirtilen iç portta dinlemiyor olabilir veya derleme aşamasında bir hata meydana gelmiş olabilir; canlı günlükleri kontrol etmelisiniz.

bipanel'de Node.js için eklenti kurmam gerekiyor mu?

Hayır. bipanel; Node.js, Python, Ruby ve Go uygulamalarını herhangi bir eklentiye ihtiyaç duymadan varsayılan olarak destekler. Gerekli port atamaları ve ters vekil yapılandırmaları panel tarafından otomatik yönetilir.

Kesintisiz dağıtım (zero-downtime) nasıl çalışır?

Yeni bir sürüm yayınladığınızda bipanel, kodu yeni bir klasöre çeker ve arka planda derler. Uygulama yeni bir portta başlatılıp sağlık kontrolünden (HTTP/TCP) geçtikten sonra trafik anında bu yeni sürüme yönlendirilir, böylece ziyaretçiler kesinti yaşamaz.

Bu yazının İngilizcesi: Hosting Node.js and Next.js on a VPS: A Complete Guide

İlgili yazılar

Tüm yazılar →
E-posta sunucuları arasında şifreli kalkanlardan geçen zarfları ve DNS yönlendirme yollarını gösteren teknik çizim.

E-postalar Neden Spama Düşer? SPF, DKIM ve DMARC Rehberi

E-postalar neden spama düşer sorusunun yanıtı eksik DNS yapılandırmasıdır. SPF, DKIM ve DMARC ayarlarıyla teslim edilebilirliği nasıl artıracağınızı öğrenin.

İki sunucu ortamı arasında veri akışını ve sorunsuz geçişi temsil eden modern ve temiz bir teknik illüstrasyon.

cPanel Alternatifi: Ajanslar İçin Geçiş ve Maliyet Rehberi

Hesap başına lisans maliyetlerinden kurtulun. Sunucu başına lisanslanan cPanel alternatifi bipanel ile ajansınızı büyütmenin ve kolay geçişin yollarını keşfedin.