Bir ESP32 firmware'i prototipliyorsunuz. Cihaz ev Wi-Fi'ına bağlı. Sunduğu web arayüzü gerçekten kullanışlı — ama yalnızca aynı LAN'dayken. Raspberry Pi'daki MQTT broker altı farklı sensörle iletişim kuruyor, ancak geliştirdiğiniz pano, 192.168.1.42:1883'e ulaşamayan bir Vercel preview deploy'unda yaşıyor.
Özet: Nodetonet HTTP tünelleri, ev router'ının arkasındaki cihazlar ile açık internetteki servisler arasındaki boşluğu gerçek bir HTTPS alan adı üzerinden kapatır — MQTT için TCP pass-through, tünel başına IP allowlist ve kullandıkça-öde modeliyle bir hafta sonu prototipi bir kahve bedelinden ucuza gelir.
İoT geliştirici tuzağı tam da budur: cihaz sizin ağınızda; o cihazın tüketicisi giderek sizin ağınızda değil. Tünelleme bunu çözer — ancak sıradan bir "web uygulamasını ulaşılır yap" tünelinin aksine, IoT iş yüklerinin özel gereksinimleri vardır: MQTT ve Modbus için TCP, cihaz URL'leri akılda kalsın diye özel alan adları, gecikmeyi düşük tutmak için bölgesel edge sunucular ve internetin geri kalanının homelab'ınıza erişemesin diye tünel başına erişim kontrolleri.
IoT prototiplemenin problemi
IoT'yi sıradan bir web uygulamasından ayıran üç temel fark:
- Protokollerin hepsi HTTP değil. MQTT (1883/8883), Modbus TCP (502), ham TCP serial köprüleri, RTSP video akışları. Yalnızca HTTP destekleyen genel bir tünel burada işe yaramaz.
- Cihazlar ev router'larının arkasında yaşıyor. CGNAT, dinamik IP, gelen port yok. Cihaza bir CNAME yönlendirmek mümkün değil.
- Güvenlik açığının boyutu önemli. Auth olmadan açık bırakılmış bir Mosquitto broker'ı, herhangi bir IoT tarayıcısı için 30 saniyelik bir içeri-yürüme kapısıdır. Tünelin kendisinde — yalnızca uygulama katmanında değil — IP allowlist veya token doğrulama gereklidir.
Ngrok, Cloudflare Tunnel ve LocalToNet gibi genel araçlar ulaşılabilirlik sorununu çözer ama geri kalanı yarım bırakır. Karşılaştırma için Nodetonet vs ngrok, vs Cloudflare Tunnel ve vs LocalToNet sayfalarına bakabilirsiniz.
Nodetonet IoT iş yüklerine nasıl uyuyor?
Dışarıdan erişmek istediğiniz her cihaz için iki tünel türünden birini oluşturursunuz:
- Otomatik düzenlenen Let's Encrypt sertifikasıyla HTTP tüneli — ESP32 web arayüzü, Home Assistant panosu, Pi'daki Grafana paneli, Node-RED editörü için. Sertifika süresi dolmadan önce otomatik yenilenir.
- Geri kalan her şey için TCP tüneli — MQTT, Modbus, RTSP kameralar, ham soket protokolleri. Edge açık bir TCP dinleyici tutar ve araların byte'larını HTTP ayrıştırması yapmadan cihazınıza iletir.
Her iki tünel türü de IoT çalışması için önem taşıyan ortak özellikleri paylaşır:
- Özel alan adları.
esp32.adin.dev,mqtt.adin.dev— URL'ler sabittir ve iş arkadaşlarınızla paylaşılabilir; yeniden başlatmada değişen rastgele alt alan adları değil. Kurulum için kendi alan adınızı getirme rehberine bakın. - Bölgesel edge sunucuları. Panosu (veya müşteriniz) yaşayan yere en yakın bölgeyi seçin; gidiş-dönüş süresi minimum kalır.
- IP allowlist. Ofis IP'nizi ve dashboard backend'inin egress aralığını ekleyin; geri kalanı edge'de, cihazınıza herhangi bir trafik ulaşmadan düşürün. Kurulum için IP izin/engel listesi rehberine bakın.
- Denetim kaydı. Tünel başına 30 günlük olay geçmişi — zaman damgası, kaynak IP, aktarılan byte. Bir şey beklenmedik davrandığında tam olarak kimin bağlandığını görebilirsiniz. Daha fazlası için denetim kayıtları sayfasına bakın.
- Tünel sağlığı izleme. Panel canlı bağlantı sayılarını ve veri hızlarını gösterir. Uyarı seçenekleri için tünel sağlığı izleme rehberini okuyun.
IoT protokolleri için tünel türü karşılaştırması
| Protokol | Tünel türü | Port örneği | Edge'de TLS? | Notlar |
|---|---|---|---|---|
| HTTP web arayüzü | HTTP tüneli | 80 / 8080 | Evet — otomatik sertifika | ESP32, Home Assistant, Grafana, Node-RED |
| MQTT düz | TCP tüneli | 1883 | Geçirgen | Uygulama katmanında broker auth gerekli |
| MQTT TLS üzerinden | TCP tüneli | 8883 | Geçirgen | İstemci uçtan uca broker sertifikasını doğrular |
| Modbus TCP | TCP tüneli | 502 | Geçirgen | SCADA / PLC lab testi |
| RTSP video | TCP tüneli | 554 | Geçirgen | IP kamera önizlemesi; yüksek bant genişliği ihtiyacı |
| Özel TCP | TCP tüneli | herhangi | Geçirgen | IP üzerinden serial köprüler, özel sensörler |
Adım adım kurulum: Raspberry Pi'yı MQTT beta sunucusu yapmak
Somut bir senaryo — Mosquitto ve Home Assistant çalıştıran bir Raspberry Pi, Vercel'de barındırılan bir panodan erişilebilir:
- Pi ile aynı LAN'daki bir PC'ye Nodetonet Windows ajanını (/download) kurun veya ajanı doğrudan Pi'ya yükleyin. Kurulum için ajanı kurma rehberine bakın.
- Panelde bir TCP tüneli oluşturun: hedef
127.0.0.1:1883,mqtt.adin.dev'e bağlayın, panoya barındırılan yere en yakın edge bölgesini seçin. - IP allowlist ekleyin: Vercel egress aralığını ve dizüstü bilgisayarınızın IP'sini dahil edin. Diğer herkes edge'de connection-refused alır.
- İkinci bir tünel oluşturun — Home Assistant web arayüzü için
127.0.0.1:8080'e HTTPS.ha.adin.dev'e bağlayın. Sertifika yaklaşık 30 saniyede otomatik düzenlenir. - Pano ortam değişkenlerini güncelleyin:
MQTT_HOST=mqtt.adin.dev,MQTT_PORT=1883. Deploy edin. Bitti.
Pi'daki ajan yeniden başlatma sonrasında otomatik olarak yeniden bağlanır; dolayısıyla Pi çalıştığı sürece tünel aktif kalır. Yeniden bağlanma davranışı için cihaz sağlığı: "çevrimiçi" ne anlama gelir sayfasını okuyun.
Kod örneği: ESP32'nin tünellenmiş broker'a veri göndermesi
Aşağıda, Nodetonet tüneli üzerinden Pi'daki Mosquitto broker'ına sıcaklık okumaları gönderen bir ESP32 Arduino sketch'i yer alıyor. ESP'nin herhangi bir özel yapılandırmaya ihtiyacı yok — broker bir bulut servisiymişçesine mqtt.adin.dev:1883 ile konuşuyor:
#include <WiFi.h>
#include <PubSubClient.h>
const char* SSID = "evwifi";
const char* PASS = "supersecret";
const char* MQTT_HOST = "mqtt.adin.dev";
const int MQTT_PORT = 1883;
WiFiClient net;
PubSubClient mqtt(net);
void setup() {
WiFi.begin(SSID, PASS);
while (WiFi.status() != WL_CONNECTED) delay(200);
mqtt.setServer(MQTT_HOST, MQTT_PORT);
while (!mqtt.connect("esp32-mutfak", "user", "pass")) delay(500);
}
void loop() {
float t = readDHT22();
char buf[16];
snprintf(buf, 16, "%.1f", t);
mqtt.publish("ev/mutfak/sicaklik", buf, true);
delay(30000);
}
Sketch'in herhangi bir bulut MQTT uç noktasına karşı kullanacağınızla birebir aynı olduğuna dikkat edin. Tünel ESP32 firmware'i için tamamen şeffaf. Cihaz filosu başına aylık bir bulut MQTT broker'ı barındırabilir ya da zaten sahip olduğunuz Pi'daki broker'ı, durdurulduğunda hiçbir şeye mal olmayan günlük ücretli bir tünel üzerinden erişilebilir tutmaya devam edebilirsiniz.
REST API ile tünel yönetimini otomatikleştirme
Otomatik test düzenekleri çalıştıran ekipler için Nodetonet, talep üzerine tünel oluşturmanıza, test çalışması sonrasında silmenize ve boşta geçen süre için hiç ödeme yapmamanıza olanak tanıyan bir REST API sunar. Kimlik doğrulama ve uç nokta başvurusu için REST API: ilk çağrınız, tam bir CI entegrasyonu örneği için Python'la programatik tünel oluşturma sayfasına bakın.
Tipik bir CI akışı:
- Build adımı test edilen cihaza bir tünel açar.
- Test paketi herkese açık tünel URL'sine karşı çalışır.
- Test sonrası temizleme tüneli siler. Faturalandırma durur.
Bu iş yükü için fiyatlandırma
Nodetonet peşin kredi kullanır — aylık abonelik yok, tünel verisi için GB başına ücret yok. Her tünel yalnızca aktifken küçük bir günlük ücret biriktirir. Tipik IoT geliştirici kurulumları:
- Tek cihaz prototipi (ESP32 web arayüzü için 1 HTTP tüneli): aktif olduğunda yaklaşık aylık 1 dolar.
- Ev otomasyon yığını (MQTT + Home Assistant + Node-RED + Grafana = 4 tünel): aktifken yaklaşık aylık 4 dolar.
- Hafta sonu müşteri demosu (1 tünel, 3 gün, sonra durduruldu): toplamda 0,15 dolardan az.
- Otomatik CI düzeneği (tünel yalnızca build sırasında aktif, günde ~10 dakika): çalıştırma başına kuruşun kesirleri.
Bunu yönetilen bir IoT bulut aboneliğiyle (veri ücretleri öncesi genellikle aylık en az 10–50 dolar) ya da her şeyi bir public VPS'te çalıştırmakla karşılaştırın — ki o durumda da cihaz tarafı için tünel veya VPN gerekir ve zaten evinizde olan işlem gücü için ayrıca ödeme yaparsınız. Tam model için kullandıkça-öde fiyatlandırmayı tanıtıyoruz sayfasını okuyun.
Nodetonet tünellerinin uygun olmadığı durumlar
- Büyük cihaz filolar. Binlerce cihaz ölçeğinde, cihaz shadow'u, OTA pipeline'ları ve filo sertifika yönetimiyle birlikte amaca yönelik bir IoT platformu (AWS IoT Core, EMQX Cloud) tercih edilmelidir. Nodetonet prototip-to-pilot aşaması için tasarlanmıştır; kitlesel üretim rolloutu için değil.
- Bugün yalnızca UDP protokoller. CoAP, LwM2M-over-UDP ve SRT video UDP gerektirir; TCP tünelleri bunu taşımaz. UDP desteği gelene kadar bu protokoller için Nodetonet VPN veya WireGuard overlay kullanın.
- Tünel katmanında cihaz tarafı mutual TLS. Tünel girişinde istemci sertifikası sunmak (uygulama içinde değil) henüz desteklenmiyor. Şu an geçerli yaklaşım uygulama katmanı token doğrulamasıdır.
Pi'da prototipleme yapan tek bir geliştirici veya bir avuç ESP32 board ile beta yürüten küçük bir ekip için: Nodetonet "masaüstümde çalışıyor"dan "müşterinin telefonundan çalışıyor"a giden en kısa yoldur. Ücretsiz hesap oluşturun ve ilk tünelinizi bir dakika içinde yayına alın.