Açık Kaynak Uygulamalar

    Node-RED Nedir ve Görsel Otomasyon Akışları Kurulumu

    Sürükle bırak düğümlerle IoT ve otomasyon akışları oluşturan açık kaynak görsel programlama aracı Node-RED rehberi.

    11 dk okuma Güncellendi: 10 Temmuz 2026

    Node-RED, IBM'in Emerging Technology ekibi tarafından geliştirilmiş, bugün OpenJS Foundation çatısı altında yürütülen açık kaynak bir görsel programlama aracıdır. Temel fikri son derece basittir: tarayıcı üzerinden açtığınız bir editörde kutuları (düğüm/node) sürükleyip birbirine tellerle bağlar, bu tellerin arasından akan mesajlarla bir otomasyon mantığı kurarsınız. Bir sensörden gelen sıcaklık değerini okuyup belli bir eşiği aşınca size bildirim göndermek, gelen bir webhook isteğini işleyip veritabanına yazmak ya da her sabah bir API'den veri çekip rapor üretmek gibi işlerin hepsi, tek satır kod yazmadan veya çok az kodla kurulabilir.

    Bu yazıda Node-RED'in düğüm ve akış tabanlı çalışma mantığını, npm ve Docker ile kurulumunu, ek düğümlerin nasıl yönetildiğini (palet yönetimi), özellikle IoT ve Home Assistant senaryolarında nasıl kullanıldığını ve n8n gibi alternatiflerle nerede ayrıştığını kıdemli bir sistem yöneticisi gözünden anlatacağız. Amacımız Node-RED'i sadece "denedim, çalıştı" seviyesinde değil, kendi sunucunuzda üretim ortamına alacak kadar sağlam kuracak bilgiyle donatmak.

    Node-RED Nedir ve Nasıl Çalışır#

    Node-RED, Node.js üzerinde çalışan bir "flow tabanlı programlama" (flow-based programming) motorudur. Bu paradigmada program, veriyi işleyen bağımsız bileşenlerin bir ağ oluşturacak şekilde birbirine bağlanmasından ibarettir. Her bileşen kendi başına küçük bir iş yapar; veri, bileşenler arasında mesaj (message) nesneleri hâlinde akar. Node-RED'de bu mesaj nesnesine genelde msg denir ve içindeki en önemli alan msg.payload, yani taşınan asıl veridir.

    Node-RED çalıştığında iki ana parça devreye girer. Birincisi tarayıcıda açtığınız görsel editördür; genellikle http://sunucu-ip:1880 adresinden erişilir. İkincisi ise akışlarınızı arka planda 7/24 çalıştıran çalışma zamanıdır (runtime). Editörde tasarımınızı yapıp "Deploy" düğmesine bastığınızda, akış JSON olarak diske yazılır ve runtime bunu anında canlıya alır. Yani editörü kapatsanız bile akışlarınız sunucuda çalışmaya devam eder. Bu ayrım önemlidir: Node-RED bir "sürekli çalışan servis"tir, tek seferlik bir betik değildir.

    Node.js'in olay tabanlı (event-driven) doğası Node-RED'i özellikle çok sayıda küçük, asenkron olayın olduğu senaryolarda verimli kılar. Yüzlerce cihazdan saniyede gelen MQTT mesajlarını, tek bir process içinde bloklamadan işleyebilir. Bu da onu IoT dünyasının fiilî standart otomasyon aracı hâline getirmiştir.

    Düğüm ve Akış Tabanlı Programlama Mantığı#

    Node-RED'i anlamanın anahtarı üç kavramı iyi kavramaktır: düğüm (node), tel (wire) ve akış (flow). Düğümler soldan giriş, sağdan çıkış portları olan işlevsel kutulardır. Örneğin bir inject düğümü akışı manuel veya zamanlanmış olarak tetikler, bir function düğümü içine yazdığınız JavaScript ile mesajı dönüştürür, bir debug düğümü ise mesajı yan paneldeki konsola basar. Düğümleri birbirine bağlayan tellerin üzerinden msg nesnesi akar; her düğüm gelen msg'yi alır, üzerinde çalışır ve sonucu bir sonrakine iletir.

    Bir akış (flow), bu düğüm ve tellerin oluşturduğu mantıksal bütündür ve editörde bir sekmeye karşılık gelir. İşleri konularına göre farklı sekmelere bölerek düzenli tutabilirsiniz. Düğümler arasında veri taşımanın en yaygın yolu msg.payload olsa da, mesaja istediğiniz kadar özel alan ekleyebilirsiniz; örneğin msg.topic ile mesajın konusunu, msg.deviceId ile hangi cihazdan geldiğini taşıyabilirsiniz.

    Aşağıdaki küçük function düğümü örneği, gelen bir sıcaklık değerine göre mesajı işaretleyip zenginleştirir:

    // msg.payload içinde ham sıcaklık değeri geldiğini varsayıyoruz
    const sicaklik = Number(msg.payload);
    
    if (sicaklik > 30) {
        msg.durum = "kritik";
        msg.renk = "kirmizi";
    } else if (sicaklik > 24) {
        msg.durum = "uyari";
        msg.renk = "sari";
    } else {
        msg.durum = "normal";
        msg.renk = "yesil";
    }
    
    msg.payload = `Sıcaklık ${sicaklik}°C - Durum: ${msg.durum}`;
    return msg;
    

    Bu yaklaşımın en güçlü yanı, tüm mantığın görsel olarak izlenebilir olmasıdır. Bir akışta verinin nereden girip nereye gittiğini kutulara bakarak takip edebilir, debug düğümleriyle her adımdaki msg içeriğini gözlemleyebilirsiniz. Klasik kodda ancak log satırları ekleyerek yapabileceğiniz bu izlenebilirlik, Node-RED'de doğuştan gelir.

    Node-RED Kurulumu (npm ve Docker)#

    Node-RED'i kendi sunucunuza kurmanın iki yaygın yolu vardır: doğrudan npm ile veya Docker ile. Kararlı, öngörülebilir bir üretim ortamı istiyorsanız Docker'ı öneririm; ancak Raspberry Pi gibi cihazlarda ya da hızlı bir denemede npm kurulumu da gayet iş görür. Node-RED'in kaynakları çok ağır olmadığından, bir VDS ya da düşük profilli bir sanal sunucu bile onu rahatça taşır. Kendi kaynaklarını izole edip yönetmek isteyenler için VDS sunucu ideal bir zemindir.

    npm ile kurulum için önce Node.js LTS sürümünün yüklü olduğundan emin olun (Node-RED en az Node.js 18 ister):

    # Node.js sürümünü kontrol edin
    node --version
    
    # Node-RED'i global olarak kurun
    sudo npm install -g --unsafe-perm node-red
    
    # Başlatın
    node-red
    

    Bu komut Node-RED'i başlatır ve akışlarınızı ~/.node-red klasöründe saklar. Ancak node-red komutunu terminalden çalıştırmak üretim için uygun değildir; oturumu kapatınca servis durur. Bunun yerine systemd ile bir servis tanımlamalısınız:

    # /etc/systemd/system/nodered.service
    [Unit]
    Description=Node-RED
    After=network.target
    
    [Service]
    Type=simple
    User=nodered
    WorkingDirectory=/home/nodered
    ExecStart=/usr/bin/node-red --max-old-space-size=256
    Restart=on-failure
    KillSignal=SIGINT
    
    [Install]
    WantedBy=multi-user.target
    

    Ardından servisi etkinleştirin:

    sudo systemctl daemon-reload
    sudo systemctl enable --now nodered
    sudo systemctl status nodered
    

    Docker ile kurulum çoğu senaryoda daha temizdir çünkü bağımlılıkları kapsül içinde tutar ve güncellemeyi kolaylaştırır. Kalıcı veri için bir volume bağlamayı unutmayın, aksi halde kapsül silindiğinde tüm akışlarınız kaybolur:

    # docker-compose.yml
    services:
      node-red:
        image: nodered/node-red:latest
        container_name: node-red
        restart: unless-stopped
        ports:
          - "1880:1880"
        volumes:
          - ./data:/data
        environment:
          - TZ=Europe/Istanbul
    

    Çalıştırmak için:

    docker compose up -d
    docker compose logs -f node-red
    

    Bu kadar el emeğiyle uğraşmak istemeyenler için Clou.TR App Center üzerinden Node-RED gibi self-hosted uygulamaları hazır şablonlarla dağıtabilir, kurulum ve güncelleme yükünü büyük ölçüde azaltabilirsiniz.

    Palet Yönetimi ve Ek Düğüm Kurulumu#

    Node-RED'in çekirdeği temel düğümlerle gelir, ama asıl gücü palet adı verilen genişleme sistemindedir. Toplulukça geliştirilmiş binlerce ek düğüm paketi vardır; MQTT için özel düğümler, Telegram/Discord bildirimleri, veritabanı bağlayıcıları, Modbus, Zigbee, Home Assistant entegrasyonu ve daha nicesi. Bunları editörün sağ üst köşesindeki menüden "Manage palette" bölümüne girip arayarak tek tıkla kurabilirsiniz.

    Palet yöneticisi arka planda npm'i kullanır, dolayısıyla düğümleri komut satırından da yükleyebilirsiniz. Docker kullanıyorsanız, düğümleri kapsül içindeki /data klasöründe (volume'de) kurmak önemlidir; aksi halde güncellemede kaybolurlar:

    # npm kurulumunda kullanıcı dizininde
    cd ~/.node-red
    npm install node-red-contrib-home-assistant-websocket
    npm install node-red-node-telegrambot
    
    # Docker kurulumunda volume içinde
    docker exec -it node-red npm install node-red-dashboard
    
    # Değişikliklerin yüklenmesi için Node-RED'i yeniden başlatın
    sudo systemctl restart nodered   # veya: docker restart node-red
    

    Sık kullanılan bazı popüler paketler şöyledir:

    Paketİşlevi
    node-red-dashboardWeb tabanlı gösterge panelleri, grafikler, butonlar
    node-red-contrib-home-assistant-websocketHome Assistant ile çift yönlü entegrasyon
    node-red-node-telegrambotTelegram bot üzerinden bildirim ve komut alma
    node-red-contrib-modbusEndüstriyel Modbus cihazlarıyla haberleşme
    node-red-contrib-influxdbZaman serisi verilerini InfluxDB'ye yazma

    Palet yönetiminde dikkat edilmesi gereken bir nokta, kurduğunuz her paketin bir bağımlılık ve güvenlik yüzeyi eklediğidir. Yalnızca ihtiyacınız olan, aktif bakımı yapılan paketleri kurun; terk edilmiş bir paket ilerideki Node.js sürümlerinde sorun çıkarabilir. Kritik ortamlarda paket sürümlerini package.json ile sabitleyip yedeğe almanızı öneririm. Sunucu tarafındaki bu tür güncelleme ve bakım işlerini kendiniz yürütmek istemiyorsanız sunucu yönetimi hizmeti bu yükü devralır.

    IoT ve Home Assistant Senaryoları#

    Node-RED'in en parladığı alan IoT ve akıllı ev otomasyonudur. Nedeni açık: cihazların çoğu MQTT protokolüyle konuşur ve Node-RED, MQTT mesajlarını dinleyip işlemek için doğduğundan beri idealdir. Tipik bir kurulumda evinizdeki bir Mosquitto MQTT broker'ı çalışır, sensörler oraya veri basar, Node-RED de bu konuları (topic) dinleyip mantığı işler.

    Klasik bir örnek: bir kapı sensörü açıldığında telefonunuza bildirim göndermek. Akış şöyle olur — bir mqtt in düğümü ev/kapi/durum konusunu dinler, bir switch düğümü değeri "açık" ise akışı yönlendirir, bir function düğümü mesajı hazırlar ve bir telegram sender düğümü bildirimi gönderir. Aynı mantığı sıcaklık, nem, hareket sensörü, enerji tüketimi gibi onlarca senaryoya uygulayabilirsiniz.

    Node-RED, Home Assistant ekosisteminde çok özel bir yere sahiptir. node-red-contrib-home-assistant-websocket paketiyle Home Assistant'ın tüm varlıklarına (entity) erişebilir, durum değişikliklerini dinleyip cihazlara komut gönderebilirsiniz. Home Assistant'ın kendi otomasyon dili YAML tabanlıyken, karmaşık koşullu mantıklar Node-RED'in görsel akışlarında çok daha okunabilir hâle gelir. Birçok kullanıcı basit otomasyonları Home Assistant'ta, çok adımlı karmaşık senaryoları ise Node-RED'de tutar.

    Aşağıda MQTT dinleyen bir akışın basitleştirilmiş JSON gösterimi yer alıyor; bunu editöre "Import" ile aktarabilirsiniz:

    [
      {
        "id": "mqtt_in_1",
        "type": "mqtt in",
        "topic": "ev/salon/sicaklik",
        "qos": "1",
        "broker": "mosquitto_broker",
        "wires": [["fn_esik_1"]]
      },
      {
        "id": "fn_esik_1",
        "type": "function",
        "name": "Eşik kontrolü",
        "func": "if (Number(msg.payload) > 28) { return msg; } return null;",
        "wires": [["telegram_1"]]
      }
    ]
    

    Bu senaryolarda Node-RED'in 7/24 ayakta kalması kritiktir; ev otomasyonunuz uykuya dalan bir sunucuda güvenilmez olur. Bu yüzden IoT projelerini kararlı bir sanal sunucu veya adanmış bir cihaz üzerinde çalıştırmanızı, otomasyon verinizi düzenli olarak yedekleme hizmetiyle güvenceye almanızı öneririm.

    Node-RED ve n8n Karşılaştırması#

    Node-RED ve n8n yüzeyde birbirine çok benzer: ikisi de düğümleri tuvale sürükleyip bağladığınız görsel otomasyon araçlarıdır. Ancak felsefeleri ve hedef kitleleri farklıdır. Node-RED, teknik ve IoT odaklıdır; JavaScript'e yakındır, düşük seviye protokollerle (MQTT, Modbus, seri port) mükemmel çalışır ve donanım/gömülü sistem dünyasında evindedir. n8n ise iş otomasyonuna (business automation) odaklanır; yüzlerce SaaS uygulamasına (Slack, Google Sheets, Notion, CRM'ler) hazır bağlayıcı sunar ve API entegrasyonlarını birbirine bağlamayı önceliklendirir.

    Somut farkları şu tabloda toparlayabiliriz:

    KriterNode-REDn8n
    Ana kullanımIoT, donanım, teknik akışlarSaaS/API iş otomasyonu
    ProgramlamaJavaScript (function düğümü)JavaScript ve Python ifadeleri
    Hazır entegrasyonTopluluk düğümleri (MQTT, Modbus vb.)400+ hazır uygulama bağlayıcısı
    Veri modeliTekil msg nesnesi akışıÖğe (item) dizileri üzerinde çalışma
    Öğrenme eğrisiTeknik kullanıcıya kolayİş kullanıcısına daha erişilebilir
    LisansApache 2.0 (tam açık kaynak)Fair-code (sustainable use)

    Pratik tavsiye: eğer işiniz sensörler, akıllı ev, endüstriyel cihazlar ve gerçek zamanlı sinyallerse Node-RED daha doğru araçtır. Eğer amacınız uygulamalar arası veri taşımak, formları CRM'e bağlamak, e-posta ve tablo otomasyonları kurmaksa n8n daha az uğraşla sonuç verir. Yapay zekâ tabanlı akışlar ilginizi çekiyorsa, LLM ajanları kurmaya odaklanan Flowise da değerlendirmeye değer. Birçok ekip bu araçları rakip değil tamamlayıcı olarak kullanır; hepsini aynı sunucuda barındırmak mümkündür.

    Güvenlik, Ters Proxy ve Üretim İpuçları#

    Node-RED varsayılan kurulumda editörü kimlik doğrulaması olmadan açar. Bu, editörü herkesin erişebileceği ve akışlarınızı değiştirebileceği anlamına gelir — üretimde kesinlikle kapatılması gereken bir açıktır. İlk yapılacak iş settings.js dosyasında editör için parola tanımlamaktır. Parolayı node-red admin hash-pw komutuyla bcrypt olarak üretebilirsiniz:

    // settings.js içinde adminAuth bölümü
    adminAuth: {
        type: "credentials",
        users: [{
            username: "admin",
            password: "$2b$08$...bcrypt-hash...",
            permissions: "*"
        }]
    }
    

    İkinci adım, Node-RED'in önüne bir ters proxy (Nginx) koyup HTTPS ile yayınlamaktır. Node-RED WebSocket kullandığı için proxy yapılandırmasında upgrade başlıklarını iletmek şarttır; bunu atlarsanız editör bağlantısı kopar:

    server {
        listen 443 ssl http2;
        server_name nodered.ornek.com;
    
        ssl_certificate     /etc/letsencrypt/live/nodered.ornek.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/nodered.ornek.com/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:1880;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

    Bu kurulumu tamamlamak için geçerli bir alan adına ve SSL sertifikasına ihtiyacınız olacak; bir alan adı alıp Node-RED örneğinizi nodered.alanadi.com gibi bir alt alan adında yayınlayabilirsiniz. Ek bir güvenlik katmanı olarak, editör paneline erişimi belirli IP'lerle sınırlamak veya bir WAF arkasına almak da iyi bir uygulamadır.

    Üretim için birkaç ek not: --max-old-space-size ile Node.js bellek sınırını cihazınıza göre ayarlayın; akışlarınızı Git ile sürüm kontrolüne alın (Node-RED'in "Projects" özelliği bunu destekler); ve debug düğümlerini canlıda kapatın, çünkü yoğun log üretimi hem performansı hem disk kullanımını olumsuz etkiler. Kritik akışlar için "catch" düğümüyle hataları yakalayıp bir kanala bildirmek, sessiz arızaların önüne geçer.

    Sıkça Sorulan Sorular#

    Node-RED ücretsiz mi ve hangi lisansla dağıtılıyor?#

    Node-RED tamamen ücretsiz ve açık kaynaktır; Apache 2.0 lisansı altında dağıtılır. Bu lisans hem kişisel hem ticari kullanıma izin verir, kaynağı değiştirmenize ve kendi ürününüzde barındırmanıza olanak tanır. Herhangi bir kullanıcı başına ücret, akış limiti ya da premium sürüm zorunluluğu yoktur; tüm özellikler herkese açıktır.

    Node-RED çalıştırmak için ne kadar sistem kaynağı gerekir?#

    Node-RED oldukça hafiftir ve 512 MB RAM'e sahip bir Raspberry Pi'de bile rahatça çalışır. Küçük ve orta ölçekli otomasyonlar için 1 GB RAM ve tek çekirdekli bir işlemci fazlasıyla yeterlidir. Yüzlerce cihaz, yoğun MQTT trafiği veya ağır function düğümleri kullanıyorsanız 2 GB RAM'e ve daha güçlü bir işlemciye çıkmanız mantıklı olur. Genel kural, kurduğunuz palet paketleri arttıkça bellek ihtiyacının da artmasıdır.

    Node-RED ile Home Assistant arasındaki fark nedir?#

    Home Assistant bir akıllı ev platformudur; cihazları keşfeder, durumlarını tutar ve bir arayüz sunar. Node-RED ise genel amaçlı bir otomasyon motorudur ve tek başına cihaz yönetmez. İkisi rakip değil, tamamlayıcıdır. Home Assistant'ı merkezî cihaz beyni olarak kullanıp, karmaşık ve çok adımlı otomasyon mantığını Node-RED'de kurmak yaygın ve güçlü bir yaklaşımdır. Bağlantıyı node-red-contrib-home-assistant-websocket paketi sağlar.

    Akışlarımı nasıl yedekler ve başka sunucuya taşırım?#

    Node-RED tüm akışlarınızı flows.json dosyasında, kullanıcı dizininde (~/.node-red ya da Docker'da /data) saklar. Bu dosyayı ve settings.js ile kurduğunuz paketlerin listesini yedeklemeniz yeterlidir. Editör içinden "Export" seçeneğiyle akışları JSON olarak dışa aktarıp başka bir örneğe "Import" ile aktarabilirsiniz. Kurumsal kullanımda tüm dizini düzenli yedekleme planına dahil etmek ya da Git tabanlı "Projects" özelliğini kullanmak en güvenli yoldur.

    Node-RED üretim ortamı için yeterince güvenilir mi?#

    Evet, ancak birkaç temel önlemle. Editöre parola koymak, HTTPS ile yayınlamak, gereksiz palet paketlerinden kaçınmak ve catch düğümüyle hataları yakalamak üretim güvenilirliğinin temelidir. Node-RED'i systemd veya Docker'ın restart politikasıyla otomatik yeniden başlatacak şekilde yapılandırın ki bir çökme durumunda servis kendini toparlasın. Bu önlemler alındığında Node-RED yıllardır sanayiden akıllı ev projelerine kadar birçok kritik ortamda güvenle çalışan olgun bir araçtır.

    Node-RED'i bulut sunucuda mı yoksa yerel cihazda mı çalıştırmalıyım?#

    Bu, senaryonuza bağlıdır. Cihazlarınız yalnızca yerel ağınızda erişilebilir sensörlerse ve internet bağımsız çalışması gerekiyorsa, yerel bir cihaz (Raspberry Pi gibi) mantıklıdır. Uzaktan erişim, yüksek çalışma süresi, düzenli yedek ve kararlı ağ istiyorsanız bir bulut sunucu daha iyidir. Birçok kişi ikisini birleştirir: yerel cihazda kritik otomasyonu, bulutta ise merkezî toplama ve bildirim akışlarını çalıştırır.

    Kapanış#

    Node-RED, otomasyon fikrinizle sonucu arasındaki mesafeyi büyük ölçüde kısaltan, öğrenmesi kolay ama tavanı yüksek bir araçtır. Düğümleri sürükleyip bağlayarak dakikalar içinde çalışan bir akış kurabilir, ihtiyacınız büyüdükçe MQTT, Home Assistant, veritabanları ve yapay zekâ servisleriyle onu istediğiniz kadar derinleştirebilirsiniz. Anahtar nokta, onu güvenli ve kararlı bir zeminde, 7/24 ayakta kalacak şekilde barındırmaktır — çünkü bir otomasyon ancak çalıştığı sürece değerlidir.

    Node-RED örneğinizi güvenle barındırmak için Clou.TR'nin kaynaklarını izole eden VDS sunucu ve sanal sunucu çözümlerine, kurulumu hızlandıran App Center şablonlarına ve sunucunuzu sizin yerinize yöneten sunucu yönetimi hizmetine göz atabilirsiniz. Doğru altyapıyı seçtiğinizde, geriye sadece akıllarınızdaki akışları kurmak kalır.

    otomasyoniotself-hosted

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.