Task Runners: Code Node'larını Güvenli Çalıştırma
n8n Task Runners, Code node'larını ana süreç yerine izole şekilde çalıştırır. İşte iç ve dış mod nasıl çalışır.
Task Runners, Code node'undan gelen JavaScript ve Python kodunu artık n8n'in ana sürecinde değil, ayrı, izole bir süreçte veya konteynerde çalıştıran bir n8n özelliğidir. Bu, bir workflow'dan gelen hatalı veya istenmeyen kodun ortam değişkenlerine, dosya sistemine veya diğer çalışan workflow'lara erişmesine karşı n8n örneğinin geri kalanını korur. Sürüm 1.111.0'dan itibaren tamamen izole edilmiş dış mod üretimde kullanılabilir; n8n belgelerine göre iç mod (n8n ile aynı haklara sahip bir alt süreç olarak çalıştırma) açıkça üretime uygun sayılmamaktadır. Durum: Temmuz 2026.
Kodu doğrudan ana süreçte çalıştırmak neden bir risktir
Yakın zamana kadar n8n, Code node'undaki kodu workflow motorunun geri kalanının da çalıştığı aynı süreçte doğrudan çalıştırıyordu. Bu, uygulaması kolay ama risklidir: Node.js'in yerleşik araçlarına erişimi olan bir betik, teorik olarak tek bir workflow ile aslında hiçbir ilgisi olmayan ortam değişkenlerine, dosya sistemine veya n8n örneğinin diğer kaynaklarına erişebilir. Task Runners, kod yürütmesini ana süreçten çıkararak bu sorunu çözer. n8n belgelerine göre bu ilke, görevleri güvenli ve performanslı bir şekilde çalıştırmak için genel bir mekanizmadır, somut olarak Code node'undaki kullanıcı kontrollü JavaScript ve Python kodu için geçerlidir. Üç bileşen birlikte çalışır: kodu fiilen çalıştıran Task Runner, n8n ana örneğinin veya bir worker'ın parçası olan ve iletişimi koordine eden Task Broker, ve bir yürütme talep eden Code node'unun kendisi olan Task Requester. İletişim WebSocket bağlantıları üzerinden yürütülür: runner, görevleri broker'dan alır ve sonuçları geri iletir.
İç ve dış mod karşılaştırması
n8n iki çalışma modu ayırt eder. İç modda, N8N_RUNNERS_MODE=internal ile varsayılan ayar olarak, n8n Task Runner'ı ana örnekle aynı kullanıcı ve grup kimliğine sahip bir alt süreç olarak başlatır. Bu, eski satır içi yürütmeye kıyasla riski biraz azaltır, ancak belgelere göre gerçek bir izolasyon sağlamaz ve üretim ortamları için açıkça önerilmez. Dış modda, ayrı bir başlatıcı uygulama runner'ları kendi konteynerlerinde devralır, genellikle asıl n8n örneğinin yanında n8nio/runners imajıyla bir sidecar konteyner olarak. Kuyruk modundaki her worker'ın kendi sidecar'ına ihtiyacı vardır, manuel yürütmeleri kendisi işleyen ana örnekler de öyle. İşletim için önemli: n8nio/runners imajının sürümü n8n sürümüyle eşleşmelidir ve dış Task Runners en az n8n 1.111.0 gerektirir.
İzole konteynerlerle sertleştirme
Dış modu üretimde çalıştıranlar, n8n sertleştirme belgelerine göre ek koruma önlemleri alabilir. Bunlar arasında paket yöneticisi ve shell içermeyen -distroless etiket sonekli bir distroless Docker imajı, 65532 kullanıcı ve grup kimliğine sahip ayrıcalıksız nobody kullanıcısı olarak çalıştırma, /tmp için minimal bir emptyDir birimine sahip salt okunur bir kök dosya sistemi ve environ ve mounts gibi /proc dosyalarına erişimi engelleyen, böylece node'daki kodun ortam değişkenlerini veya bağlama bilgilerini okumasını önleyen bir AppArmor profili yer alır. Bu önlemlerin tümü, ana süreçteki eski yürütmeye kıyasla Code node'ları için belirgin şekilde daha dar bir sandbox oluşturur.
Önemli ortam değişkenlerine genel bakış
- N8N_RUNNERS_MODE: çalışma modunu kontrol eder, internal (varsayılan) veya external.
- N8N_RUNNERS_AUTH_TOKEN: bir Task Runner'ın n8n ile kimlik doğrulaması için kullandığı ortak sır.
- N8N_RUNNERS_BROKER_PORT: Task Broker'ın portu, varsayılan 5679.
- N8N_RUNNERS_BROKER_LISTEN_ADDRESS: broker'ın dinlediği adres, varsayılan 127.0.0.1, dış konteynerler için genellikle 0.0.0.0 olarak ayarlanır.
- N8N_RUNNERS_MAX_CONCURRENCY: runner başına eşzamanlı görev sayısı, varsayılan 5.
- N8N_RUNNERS_TASK_TIMEOUT: bir görevin saniye cinsinden maksimum çalışma süresi, varsayılan 300, bunun ardından runner yeniden başlar.
- NODE_FUNCTION_ALLOW_BUILTIN ve NODE_FUNCTION_ALLOW_EXTERNAL: Code node'unda izin verilen Node.js modülleri için allowlist.
- N8N_RUNNERS_STDLIB_ALLOW ve N8N_RUNNERS_EXTERNAL_ALLOW: Python standart kütüphanesi ve üçüncü taraf modülleri için ilgili allowlist'ler.
- N8N_BLOCK_RUNNER_ENV_ACCESS: Python kodunun runner'ın ortam değişkenlerine erişimini varsayılan olarak (true) engeller.
Geçiş kimin için değer
Task Runners, öncelikle farklı ekiplerden Code node'larının veya hassas kimlik bilgilerinin aynı örnekte çalıştığı, Docker veya Kubernetes ile kendi sunucusunda barındırılan n8n örneklerini ilgilendirir. Sadece kendi güvenilir birkaç workflow'unu işleten kişi daha az kazanır, ancak yine de dış modu göz önünde bulundurmalıdır, çünkü n8n, N8N_RUNNERS_ENABLED değişkenini sürüm 2.0'dan itibaren kullanımdan kaldırılmış olarak işaretlemektedir ve eski satır içi çalışma öngörülebilir şekilde ortadan kalkacaktır. Dürüst olmak gerekirse, dış mod ek işletim çabası anlamına gelir: worker başına bir konteyner daha, uygun bir imaj sürümü ve modüller için kendi allowlist'leri. Bu çabadan kaçınmak isteyen kişi şimdilik iç modda kalır, ancak n8n'in kendisine göre bunun bir üretim standardı olmadığının farkında olmalıdır. n8n'i merkezi bir otomasyon platformu olarak kullanan ve Alman veri egemenliğine ve izlenebilir işletim güvenliğine dikkat eden şirketler için dış mod lehine bilinçli bir karar vermek değerlidir. NordFlux, n8n örneklerinin kurulumu ve sertleştirilmesinde destek sağlar, bkz. n8n danışmanlığı.
n8n'de Task Runners hakkında sık sorulan sorular
İç ve dış Task Runner modu arasındaki fark nedir?
İç modda Task Runner, n8n'in bir alt süreci olarak aynı haklarla çalışır; dış modda ise kendi konteynerinde çalışır ve n8n belgelerine göre ana süreçten tamamen izole edilmiştir. Yalnızca dış mod üretime uygun kabul edilir.
Dış Task Runners hangi n8n sürümünden itibaren çalışır?
Belgelere göre dış Task Runners en az n8n 1.111.0 gerektirir, ayrıca n8nio/runners imajının sürümü kullanılan n8n sürümüyle eşleşmelidir.
Her worker için ayrı bir Task Runner konteyneri çalıştırmam gerekir mi?
Evet, kuyruk modunda her worker'ın kendi sidecar konteynerine ihtiyacı vardır. Manuel yürütmeleri kendisi işleyen ana örneklerin de belgelere göre OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS etkinleştirilmediği sürece kendi runner'ına ihtiyacı vardır.
Task Runners ortam değişkenlerine erişimi otomatik olarak engeller mi?
Python kodu için, runner'ın ortam değişkenlerine N8N_BLOCK_RUNNER_ENV_ACCESS üzerinden erişim varsayılan olarak engellenmiştir. İşletim sistemi düzeyinde izolasyon için n8n ayrıca /proc dosyalarına erişimi önleyen bir AppArmor profili gibi önlemler önerir.
Kaynaklar: n8n belgeleri: Set up task runners ve n8n belgeleri: Harden task runners.
NordFlux UG (haftungsbeschränkt)
NordFlux, kuruluşlar için dijital çalışanlar kurar: tekrar eden işleri üstlenen otomasyonlar ve KI ajanları. Kontrol sizde kalır.
Otomasyon veya KI hakkında somut sorularınız mı var?
Ücretsiz bir ön analizde durumunuzu doğrudan görüşürüz. Bağlayıcı değildir.