Her projede bir yerden sonra aynı türden küçük işler birikiyor. Formdan gelen mesajı bir yere iletmek, her sabah bir API'den veri çekip tabloya yazmak, yeni sipariş gelince birine haber vermek. Her biri için ayrı bir script yazıp sunucuda cron'a bağlamak mümkün. Ama bir süre sonra hangi script'in nerede çalıştığını, hangisinin sessizce hata verdiğini takip etmek ayrı bir iş oluyor.
n8n tam olarak bu işler için var. Bu yazıda ne olduğunu, nasıl kurulduğunu ve kullanırken nelere dikkat etmek gerektiğini anlatacağım.
n8n nedir?
n8n, iş akışlarını (workflow) görsel bir editörde kutuları birbirine bağlayarak kurduğunuz bir otomasyon aracı. Kendi sunucunuzda çalıştırabiliyorsunuz ve gerektiğinde araya kendi kodunuzu yazabiliyorsunuz.
Adı "nodemation"dan geliyor, ortadaki 8 de aradaki sekiz harf. "En-eyt-en" diye okunuyor.
Yazılımcılar neden seviyor?
Hazır bağlantılarla kurulan otomasyonlar, işiniz o bağlantının sunduklarıyla sınırlı kaldığı sürece kolay. Hazır bağlantı yoksa ya da veriyi biraz evirip çevirmeniz gerekiyorsa işler zorlaşıyor. n8n'de bu sınır yok:
- Code node: Akışın ortasına JavaScript ya da Python yazabiliyorsunuz.
- HTTP Request node: Hazır entegrasyonu olmayan her API'ye doğrudan istek atabiliyorsunuz.
- Webhook: Akışa bir URL veriliyor, oraya gelen her istek akışı başlatıyor.
- Kendi sunucunuzda: Veriniz üçüncü bir firmaya gitmiyor, çalıştırma sayısı için de ödeme yapmıyorsunuz.
Temel kavramlar
- Workflow: Baştan sona bir otomasyon. "Form gelince Telegram'a yaz" gibi.
- Node: Akıştaki her kutu. Bir işi yapıyor: veri çek, filtrele, gönder.
- Trigger: Akışı başlatan node. Bir webhook, bir zamanlayıcı ("her gün 09:00'da") ya da bir uygulamadaki olay ("Gmail'e yeni e-posta geldi").
- Credentials: API anahtarları ve şifreler. Bir kere kaydediliyor, node'lar oradan kullanıyor; akışın içine düz metin olarak yazılmıyor.
- Executions: Her çalıştırmanın kaydı. Bir akış hata verdiğinde hangi node'da, hangi veriyle patladığını buradan görüyorsunuz. Bence en kullanışlı tarafı bu.
Basit bir örnek
Diyelim ki bir sitenin iletişim formunu Telegram'a bağlamak istiyorsunuz. Akış üç node'dan oluşuyor:
- Webhook: Form verisi buraya POST ediliyor.
- Code: Gelen veriyi okunabilir bir mesaja çeviriyor.
- Telegram: Mesajı size gönderiyor.
Code node'unun içi şu kadar:
// Webhook'tan gelen form verisini Telegram mesajına çevir
const { name, email, message } = $input.first().json.body
return [
{
json: {
text: `Yeni mesaj: ${name} (${email})\n\n${message}`,
},
},
]Telegram node'unda da mesaj alanına {{ $json.text }} yazıyorsunuz. Hepsi bu. Yarın mesajları Google Sheets'e de yazmak isterseniz araya bir node daha ekliyorsunuz, kodun geri kalanına dokunmuyorsunuz.
Yapay zekâ tarafı
Son iki yılda n8n'in en çok geliştiği yer burası. Akışa bir AI Agent node'u koyup bir dil modeline bağlıyorsunuz, modelin kullanabileceği araçları da diğer node'lardan veriyorsunuz. Örneğin gelen destek e-postalarını okuyup kategorize eden, cevabı taslak olarak hazırlayan bir akış birkaç node ile kuruluyor.
n8n MCP'yi de iki yönlü destekliyor. MCP Client Tool ile n8n'deki bir ajan dışarıdaki MCP sunucularının araçlarını kullanabiliyor. MCP Server Trigger ile de n8n'de kurduğunuz akışları Claude gibi bir yapay zekâ uygulamasına araç olarak açabiliyorsunuz. MCP'nin ne olduğunu merak ediyorsanız şu yazıda anlatmıştım.
Kurulum
En hızlı yol Docker:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Europe/Istanbul" \
-e TZ="Europe/Istanbul" \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8nSonra tarayıcıda http://localhost:5678 adresini açıp ilk kullanıcıyı oluşturuyorsunuz. Saat dilimini vermeyi unutmayın; "her gün 09:00'da" diye kurduğunuz bir akış yoksa UTC'ye göre çalışır ve üç saat geç tetiklenir.
Bu komut denemek için yeterli. Gerçek kullanım için birkaç şey daha gerekiyor:
- Docker Compose: n8n'in kendisi de artık Compose ile kurmayı öneriyor. Resmi örnekler
n8n-hostingdeposunda. - Veritabanı: Varsayılan olarak SQLite kullanıyor. Çok akış çalıştıracaksanız PostgreSQL'e geçin.
/home/node/.n8nklasörü: Veritabanını değiştirseniz bile bu klasörü kalıcı tutun. Credentials'ları şifreleyen anahtar burada duruyor; kaybederseniz kayıtlı bütün şifreler açılamaz hale geliyor.
Kendi sunucunuzla uğraşmak istemiyorsanız n8n'in ücretli bulut sürümü de var.
Lisans: tam olarak açık kaynak değil
Bunu bilmekte fayda var. n8n'in kodu GitHub'da açık ama lisansı klasik açık kaynak lisansı değil. "Sustainable Use License" adında, kendilerinin "fair-code" dediği bir lisans kullanıyorlar.
Pratikte şu anlama geliyor: n8n'i kendi işiniz için, şirket içinde ya da müşterinize kurduğunuz bir projede ücretsiz kullanabiliyorsunuz. Ama n8n'in kendisini başkalarına ücretli bir hizmet olarak satamıyorsunuz. Bazı kurumsal özellikler (SSO gibi) de ayrı, ücretli bir lisansla geliyor.
Çoğumuzun kullanımı için sorun değil. Ama n8n üzerine bir ürün kurup satmayı düşünüyorsanız lisansı baştan bir okuyun.
Güvenlik: güncel tutun
n8n içinde API anahtarlarınız, veritabanı şifreleriniz ve çoğu zaman dışarıya açık webhook'lar duruyor. Yani ele geçirilirse kaybedilecek çok şey var. 2026 da bu açıdan sakin bir yıl olmadı:
- Ocak'ta "Ni8mare" adı verilen ve en yüksek risk puanını (CVSS 10) alan bir açık çıktı.
- Mayıs'ta daha önce kapatılan bir açığın yamasını atlatan yeni bir açık bulundu.
- 14 Ekim'de yayınlanan güvenlik bülteninde, beşi yüksek riskli olmak üzere bir dizi açık kapatıldı. Bunlardan biri giriş bile gerektirmiyordu.
Bulut sürümü kendiliğinden güncelleniyor, kendi sunucunuzda çalıştırıyorsanız güncellemek size kalıyor. Ekim bülteniyle gelen düzeltmeler 1.x dalında 1.123.85'te, 2.x dalında 2.43.5'te.
Benim önerilerim:
- n8n'i güncel tutun. Docker kullanıyorsanız imajı düzenli çekin.
- Editörü doğrudan internete açmayın. Mümkünse VPN ya da en azından bir ters vekil (reverse proxy) ve güçlü bir şifre arkasında tutun.
- Webhook'lara gelen veriyi doğrulayın. Webhook URL'si bilinen herkes akışınızı tetikleyebilir.
- Kullanmadığınız node'ları kapatabilirsiniz.
NODES_EXCLUDEortam değişkeni tam olarak bunun için var.
Ne zaman kullanmamalı?
Her şeyi n8n'e taşımak da doğru değil. Tek satırlık bir cron işi için n8n kurmak gereksiz. Milyonlarca satırlık veri işleyen ağır işler de n8n'e göre değil. Orada düzgün bir kuyruk sistemi ve kod daha doğru araç. Ve iş akışınız kodunuzun ayrılmaz bir parçasıysa, onu ayrı bir araçta tutmak yerine kodun içinde, sürüm kontrolüyle birlikte tutmak daha sağlıklı.
Ama "şunu da otomatikleştirsem ne güzel olur" dediğiniz o küçük işler listesi varsa, n8n'e bir hafta sonu ayırmaya değer. Docker'la on dakikada ayağa kalkıyor ve ilk akışınızı çalıştırdığınızda o listenin ne kadar hızlı kısaldığına şaşıracaksınız.
Kaynaklar