Frontend'i yayına almak için birçok seçenek var. Ama sürekli çalışan bir backend'i, örneğin bir REST API'yi ya da bir botu ücretsiz yayına almak istediğinde seçenekler daralıyor. Render bunlardan biri: bir depoyu bağlayıp derleme ve başlatma komutunu verdiğinde Node.js, Python, Go ya da Docker ile yazılmış bir sunucuyu yayınlıyor ve ücretsiz bir PostgreSQL veritabanı da sunuyor. Bu yazı ücretsiz yayın serimizin Render rehberi.
Ücretsiz planın sınırları
Render'ın ücretsiz planı demo ve öğrenme projeleri için tasarlanmış. Render'ın belgesine göre:
- Uyku: Ücretsiz web servisi 15 dakika istek almazsa uykuya geçiyor. Bir sonraki istekte yeniden açılması yaklaşık bir dakika sürüyor.
- Süre: Her çalışma alanına ayda 750 ücretsiz çalışma saati veriliyor.
- Dosyalar: Sunucunun diskine yazdığın dosyalar yeniden yayında, yeniden başlatmada ve uykuda siliniyor. Kullanıcıların yüklediği dosyaları diskte saklayamazsın.
- Veritabanı: Ücretsiz PostgreSQL 1 GB ve oluşturulduktan 30 gün sonra süresi doluyor; ardından 14 günlük ek sürenin sonunda siliniyor. Yedek alınmıyor.
Portföydeki bir demo için bunlar kabul edilebilir. Gerçek kullanıcısı olan bir uygulama için değil. Demo bağlantının yanına "ilk açılış bir dakika sürebilir" notunu düşmek, projeni açan kişinin onu bozuk sanmasını önler.
Uygulamanı hazırla
Render, uygulamanın dinlemesi gereken portu PORT ortam değişkeniyle veriyor. Portu koda sabit yazmak yerine oradan oku ve bütün adreslerde dinle:
const port = process.env.PORT || 3000;
app.listen(port, "0.0.0.0", () => console.log(`listening on ${port}`));Veritabanı adresi, API anahtarları gibi değerleri de ortam değişkenlerinden oku.
Adım adım ilk yayın
- render.com'a GitHub hesabınla kaydol.
- Panelde New → Web Service'i seç ve depoyu bağla.
- Ayarları doldur:
- Runtime: Node, Python, Go ya da Docker. Depoda bir Dockerfile varsa Docker'ı seçmek en öngörülebilir yol.
- Build Command: Örneğin
npm ci. - Start Command: Örneğin
node server.js. - Instance Type: Free.
- Ortam değişkenlerini ekle ve servisi oluştur. Derleme bitince servis
proje-adi.onrender.comgibi bir adreste açılıyor.
Bundan sonra bağladığın branch'e her push'ta servis yeniden yayınlanıyor.
Veritabanı ekle
- New → Postgres ile ücretsiz bir veritabanı oluştur. Web servisinle aynı bölgeyi seç.
- Veritabanı sayfasında iki adres var: Internal Database URL ve External Database URL. Web servisin için iç adresi kullan; aynı bölgedeki servisler arasında daha hızlı ve güvenli.
- Bu adresi web servisinin ortam değişkenlerine
DATABASE_URLadıyla ekle.
30 günlük sınırı unutma: veritabanının ne zaman dolacağını takvimine yaz ve önemli verileri düzenli olarak dışarı aktar. Daha uzun süreli bir ücretsiz veritabanı istiyorsan veritabanını ayrı bir servisin ücretsiz planında tutup Render'daki backend'i ona bağlayabilirsin.
Sık takılınan yerler
- Yayın "port bulunamadı" hatasıyla düşüyor: Uygulama
PORTdeğişkenini okumuyor ya da yalnızcalocalhost'ta dinliyor. - İlk istek çok yavaş: Servis uykudaydı. Ücretsiz planda beklenen davranış.
- Yüklenen dosyalar kayboldu: Ücretsiz planda disk kalıcı değil. Dosyaları bir nesne depolama servisinde sakla.
- Veritabanı silindi: 30 günlük süre doldu. Yedek almadıysan veri geri gelmiyor.
Serinin diğer yazılarında GitHub Pages, Vercel ve Netlify'ı anlatıyoruz. Backend'ini yayına alırken takıldığın bir yer olursa re:make her pazar 15.00'te buluşuyor; üye olmadan da gelebilirsin. Yeri ve saati burada.
Bir sonraki not düştüğünde haberin olsun.