Node-RED projeleri flow'larınızı bir git deposuna dönüştürür; böylece her değişiklik commit edilir, gözden geçirilebilir ve geri alınabilir hâle gelir. Bu eğitimde projects modunu etkinleştirecek, bir proje oluşturacak, commit edip uzak bir depoya push edecek, onu başka bir makineye klonlayacak ve en önemlisi MQTT broker kimlik bilgilerinizi şifreli ve depo dışında tutacaksınız.
Flow'larınızı Neden Sürüm Kontrolüne Almalısınız?
Projeler olmadan Node-RED her şeyi kullanıcı dizinindeki tek bir flows.json dosyasında tutar. Biri bozuk bir değişiklik deploy ettiğinde bakılacak bir geçmiş ve kolay bir geri dönüş yolu yoktur. Flow kopyaları dışa aktarılmış JSON olarak e-posta veya sohbet üzerinden dolaşır ve üretimde hangi sürümün çalıştığından kimse emin olamaz.
Projeler bunu geliştiricilerin zaten bildiği araçlarla çözer:
- Geçmiş. Her commit kimin neyi ne zaman değiştirdiğini kaydeder.
- Farklar (diff). Editör commit etmeden önce node düzeyindeki farkları gösterir.
- Dallar (branch). Riskli bir değişikliği bir dalda deneyin, çalıştığında birleştirin.
- Uzak depolar. Yedekleme ve iş birliği için GitHub, GitLab, Gitea veya Azure DevOps'a push edin.
- Bağımlılıklar. Her projenin ihtiyaç duyduğu node'ları listeleyen bir
package.jsondosyası vardır; böylece yeni bir makine neyi kuracağını bilir.
Ön Koşullar
Projeler git komut satırına ve SSH uzak depoları için ssh-keygen aracına dayanır. Node-RED'i çalıştıran makinede ikisinin de kurulu olduğunu kontrol edin:
git --version
ssh-keygen -h 2>&1 | head -1
Debian, Ubuntu veya Raspberry Pi OS'ta git'i sudo apt install git ile kurun. Resmi Docker imajı git'i zaten içerir.
Node-RED Projelerini Etkinleştirin
Projects modu varsayılan olarak kapalıdır. Kullanıcı dizininizdeki settings.js dosyasını açın (~/.node-red/settings.js veya Docker'da /data/settings.js), editorTheme bölümünü bulun ve etkinleştirin:
editorTheme: {
projects: {
enabled: true,
workflow: {
// "manual": commit'leri siz açıkça yaparsınız
// "auto": Node-RED her deploy'da commit eder
mode: "manual"
}
}
},
Node-RED'i yeniden başlatın. Editörü ilk açtığınızda bir karşılama ekranı proje oluşturmayı, bir depoyu klonlamayı veya atlamayı önerir. Ekipler için manuel mod daha iyi bir varsayılandır: test ederken istediğiniz sıklıkta deploy eder, yalnızca bir değişiklik hazır olduğunda anlamlı bir mesajla commit edersiniz.
İlk Projenizi Oluşturun
- Karşılama ekranında Create Project seçeneğini veya daha sonra ana menüde Projects → New seçeneğini seçin.
- İstenirse git kullanıcı adınızı ve e-postanızı girin; bunlar commit geçmişinde görünür.
- Projeye bir ad verin, örneğin
plant-telemetry. - Bir flow dosyası adı seçin. Varsayılan
flow.jsonuygundur. - Kimlik bilgisi şifrelemesini ayarlayın. "Enable encryption" seçeneğini seçin ve güçlü bir anahtar girin. Bunu parola yöneticinizde saklayın.
- Create Project düğmesine tıklayın.
Node-RED, kullanıcı dizinindeki projects/ altında şu düzende bir klasör oluşturur:
~/.node-red/projects/plant-telemetry/
.git/
.gitignore
README.md
package.json
flow.json
flow_cred.json
Kimlik bilgisi dosyası 5. adımdaki anahtarla şifrelenir ve bu anahtar depoda değil, yerel Node-RED çalışma zamanı ayarlarınızda saklanır. Broker parolalarını git dışında tutan tasarım budur: depo yalnızca şifreli metin içerir ve şifreyi yalnızca anahtarı verdiğiniz makineler çözebilir.
Bir Flow Oluşturun ve Commit Edin
Sürümlenecek bir şey olması için basit bir MQTT flow'u ekleyin. Ücretsiz herkese açık MQTT broker için sunucusu broker.connectmq.com, portu 1883 ve nr-proj-a19e gibi benzersiz bir client ID'si olan bir broker node'u yapılandırın. Bir mqtt in node'unu connectmq/demo/a19e/# topic'ine subscribe edin ve bir debug node'una bağlayın. Deploy edin.
Kenar çubuğunda Project history sekmesini (git simgesi) açın. Local Changes altında flow dosyasının değiştirilmiş olarak listelendiğini göreceksiniz. Eklediğiniz node'ların görsel farkını görmek için üzerine tıklayın. Dosyayı stage edin, "Add telemetry subscriber" gibi bir commit mesajı yazın ve commit edin.
Şimdi bir değişiklik yapın, örneğin debug node'unu yeniden adlandırın ve tekrar deploy edin. Geçmiş sekmesi tam olarak o değişikliğin yeni bir farkını gösterir. Node-RED projelerinin karşılığını verdiği yer burasıdır: bir incelemede okunamayan bir JSON yığını yerine tek bir özelliğin değiştiğini görürsünüz.
Uzak Bir Depoya Push Edin
Git sağlayıcınızda boş bir depo oluşturun. Node-RED'de Projects → Project Settings → Settings → Git remotes bölümünü açın ve uzak depo URL'sini ekleyin.
SSH uzak depoları için Node-RED içinde User Settings → Git config → SSH Keys → Add key üzerinden bir anahtar oluşturun. Node-RED açık anahtarı gösterir; bunu git sağlayıcınıza yazma erişimli bir deploy key olarak ekleyin. Kişisel erişim token'ı kullanan HTTPS uzak depoları da çalışır ve Node-RED ilk push'ta kimlik bilgilerini sorar.
Geçmiş sekmesine döndüğünüzde Commit History bölümü artık push ve pull okları gösterir. Commit'lerinizi push edin. Terminalden depo içeriğini doğrulayabilirsiniz:
git clone git@github.com:your-org/plant-telemetry.git
cd plant-telemetry
cat flow_cred.json # {"$":"8f2c..."} gibi şifreli metin yazdırır
Broker Kimlik Bilgilerini Git Dışında Tutun
Kimlik bilgileri bilinçli bir strateji gerektirir. Üç makul seçeneğiniz var:
| Strateji | Git'e ne gider | Anahtar yönetimi | Ne için uygun |
|---|---|---|---|
| Şifreli kimlik bilgisi dosyası (varsayılan) | Şifreli metin olarak flow_cred.json |
Anahtar her makinede bir kez girilir | Çoğu ekip |
| Kimlik bilgisi dosyasını yok saymak | Hiçbir şey | Kimlik bilgileri her örneğe elle girilir | Git'te hiçbir gizli bilgiye izin vermeyen katı politikalar |
| Ortam değişkenleri | Gizli olmayan alanlarda yalnızca ${VAR} referansları, gizli bilgiler ortamda |
Ortam başına ayarlanır | Container'lar ve CI hatları |
İkinci seçenek için flow_cred.json dosyasını .gitignore'a ekleyin ve klonladıktan sonra her örnekte MQTT kullanıcı adını ve parolasını yeniden girin. Üçüncüsü için broker host'u veya client ID öneki gibi değerleri ortam değişkenleri olarak tanımlayın ve bunları node özelliklerinde ${MQTT_HOST} ile veya function node'larında env.get() ile okuyun.
Hangisini seçerseniz seçin iki kurala uyun. Bir parolayı asla bir function node'una veya inject node'una yapıştırmayın, çünkü bunlar flow dosyasında düz metin olarak saklanır. Ve bir geliştirme örneğinin asla üretim topic'lerine publish edememesi için her ortamda ayrı broker kimlik bilgileri kullanın; ConnectMQ ile bu, her ortam için ayrı bir broker oluşturmak kadar basit olabilir. Node-RED güvenliği kontrol listemiz kalan sağlamlaştırma adımlarını ele alır.
Bir Projeyi Başka Bir Makineye Klonlayın
Projects özelliği etkin ikinci bir Node-RED örneğinde Projects → New → Clone Repository seçeneğini seçin, uzak depo URL'sini ve kimlik bilgisi dosyası şifreliyse kimlik bilgisi anahtarını girin. Node-RED depoyu klonlar, package.json dosyasını okur ve hangi node'ların eksik olduğunu söyler. Bunları istemden veya proje klasöründe npm ile kurun, ardından deploy edin.
Docker ile projenin container yeniden oluşturulduğunda korunması için bağlı /data/projects klasörüne klonlayın; volume kurulumu için Node-RED Docker rehberimize bakın.
Node-RED Projeleri İş Akışı Kontrol Listesi
- Projects'i manuel modda etkinleştirin ve Node-RED'i yeniden başlatın.
- Sekme başına değil, deploy edilebilir her uygulama için bir proje oluşturun.
- Kimlik bilgisi şifrelemesini etkinleştirin ve anahtarı bir parola yöneticisinde saklayın.
- Katkıda bulunulan her node'u bir sürüm aralığıyla
package.jsoniçinde listeleyin. - Küçük ve açıklamalı değişiklikler commit edin; commit etmeden önce farkları gözden geçirin.
- Deneyler için dallar kullanın ve test edildiğinde birleştirin.
- Her anlamlı commit'ten sonra uzak depoya push edin.
- Ortama özgü değerleri flow'da değil, ortam değişkenlerinde tutun.
- Geliştirme ve üretim broker'ları için ayrı MQTT kimlik bilgileri kullanın.
Yeniden kullanılabilir mantık Node-RED subflow'larında yaşadığında sürümlemesi daha kolaydır; çünkü bir şablondaki değişiklik tek ve net bir fark olarak görünür. Resmi projects belgeleri gelişmiş ayarları ve editör arayüzünün tamamını ele alır. Node-RED'de MQTT'ye yeni başlıyorsanız Node-RED MQTT eğitimiyle başlayın.
Flow'larınızı Sürümleyin, Broker'ı ConnectMQ Çalıştırsın
Projeler flow'larınıza geçmiş ve tekrarlanabilir dağıtımlar kazandırır; bağlandıkları broker da aynı derecede güvenilir olmalıdır. ConnectMQ; MQTT 3.1.1 ve 5.0, 8883'te TLS ve broker başına kimlik bilgileri sunan yönetilen bir MQTT broker'dır; bu sayede geliştirme ve üretim için ayrı broker'lar oluşturmak ve her ortamın kimlik bilgilerini ayrı tutmak kolaydır. app.connectmq.com adresinde kredi kartı gerektirmeyen ücretsiz Serverless planla başlayın. Barındırma yaklaşımlarını karşılaştırmak için bulutta MQTT broker çalıştırmaya dair genel bakışımıza göz atın.
Sık Sorulan Sorular
Node-RED'de projects özelliğini nasıl etkinleştiririm?
settings.js içinde editorTheme.projects.enabled değerini true yapın, git'in kurulu olduğundan emin olun ve Node-RED'i yeniden başlatın. Editör ardından bir proje oluşturmayı veya klonlamayı önerir.
Node-RED projelerinde MQTT parolaları git'te saklanır mı?
Kimlik bilgisi şifrelemesini etkinleştirirseniz yalnızca şifreli biçimde. Kimlik bilgisi dosyası şifreli metin içerir ve anahtar her makinede kalır. Kimlik bilgisi dosyasını .gitignore'a da ekleyebilirsiniz.
Node-RED projeleriyle GitHub kullanabilir miyim?
Evet. Depoyu Node-RED'de oluşturulan bir anahtarla SSH veya bir token ile HTTPS kullanarak uzak depo olarak ekleyin, ardından Project history kenar çubuğundan push ve pull yapın.
Manuel ve otomatik iş akışı modu arasındaki fark nedir?
Manuel modda bir değişiklik hazır olduğunda açıkça commit edersiniz. Otomatik modda Node-RED her deploy'da bir commit oluşturur; bu daha basittir ama daha gürültülü bir geçmiş üretir.



