Skip to Content
Uzaktan ErişimPort Yapılandırma

Port Yapılandırma

.ironflock/ dizininde port-template.yml dosyası oluşturarak uygulamanızın uzaktan erişim için hangi servisleri açığa çıkaracağını tanımlayın.

Temel Örnek

ports: - name: Web Interface port: 5000 main: true protocol: https

Bu yapılandırma, 5000 numaralı portu uzaktan erişim için kullanılabilir hale getirir. Uygulamayı bir üretim cihazına kurmak bu portun tünelini açar; ağ ayrıcalığına sahip kullanıcılar tüneli cihazlarındaki uygulama ayarlarından kapatıp açabilir.

Tam Örnek

ports: - name: Web Interface port: 1100 main: true protocol: http - name: Video Stream port: 1200 protocol: http - name: Remote Desktop port: 5900 protocol: tcp - name: LoRaWAN Gateway port: 1700 protocol: udp

Alan Referansı

AlanZorunluAçıklama
nameEvetCihazın uygulama ayarlarında gösterilen etiket
portEvetServisin dinlediği yerel port numarası
mainHayırtrue ise bu port, cihazın uygulama listesindeki hızlı erişim simgesi için kullanılır
protocolHayırhttp (varsayılan), https, tcp veya udp
remote_port_environmentHayırYalnızca TCP ve UDP: cihaz ajanının tünelin uzak portunu REMOTE_PORT_FOR_<port> ile birlikte duyurduğu ek bir değişken adı. 0.19.8 öncesi cihaz ajanları portu yalnızca bu adla duyurur

Enjekte Edilen Ortam Değişkenleri

Tanımladığınız her port için platform, kodunuzun servise gerçekte nereden erişilebileceğini — adresleri sabit kodlamadan — keşfedebilmesi için uygulamanızın konteynerlerine ortam değişkenleri enjekte eder:

DeğişkenAçıklama
DEVICE_LAN_IPCihazın yerel ağdaki IP adresi
DEVICE_PORT_FOR_<port>Tanımladığınız portun yerel ağda yayınlandığı, cihaz üzerindeki port
REMOTE_PORT_FOR_<port>Tünel aktifken tünel sunucusu tarafından tahsis edilen genel port (TCP ve UDP; cihaz ajanı 0.19.8 ve sonrası). 0 henüz atanmadığı anlamına gelir
REMOTE_PORT_FOR_<port>_CLOUDCihaz, tünelleri bulut üzerinden yönlendiren bir IronFlock instance’ında çalıştığında internete açık port (TCP ve UDP)
TUNNEL_DOMAINCihazın tünel URL’lerinin oluşturulduğu alan adı: bulutta app.ironflock.com, yerinde (on-premises) bir appliance’ta appliance’ın alan adı ve alan adı olmadan kurulmuş (düz mod) bir appliance’ın uç cihazında localhost
INSTANCE_KEYYalnızca yerinde (on-premises) bir appliance’a (instance) ait bir cihazda ayarlanır: bulut üzerinden yönlendirilen tünel URL’lerinin taşıdığı anahtar

<port>, port-template.yml dosyasında tanımladığınız port numarasıdır. Yukarıdaki Remote Desktop örneği için uygulama, DEVICE_PORT_FOR_5900 değişkenini ve — tüneli aktifken — REMOTE_PORT_FOR_5900 değişkenini alır. IronFlock SDK’ları bir portun uzaktan erişim URL’sini bu değişkenlerden getRemoteAccessUrlForPort ile oluşturur. Platform CLOUD_TUNNEL_DOMAIN değerini ayarlamaz: uygulamanız bu değişkeni kendisi ayarlamadıkça bulut üzerinden yönlendirilen URL’ler app.ironflock.com kullanır.

Tüneller yalnızca üretim kurulumları için vardır. Bir geliştirme (DEV) konteyneri kendine ait bir tünel ve uzak port almaz — ona bunun yerine cihazın yerel ağı üzerinden ulaşın (DEVICE_LAN_IP, DEVICE_PORT_FOR_<port>).

Uygulamalar aynı cihazda eşzamanlı olarak çalışabileceğinden, tanımlanan portlar cihazdaki boş bir porta otomatik olarak eşlenir. Yerel ağ adreslerini her zaman, tanımlanan portu varsaymak yerine enjekte edilen değerlerden oluşturun:

import os lan_ip = os.environ.get("DEVICE_LAN_IP") lan_port = os.environ.get("DEVICE_PORT_FOR_5900") # servis, yerel ağda {lan_ip}:{lan_port} adresinden erişilebilir

Değişkenler konteyner başlatıldığında ayarlanır. Tünel portları uygulama çalışırken değişebilir (örneğin bir tünel yeniden bağlandığında); bu nedenle tünel portu değişkenleri (REMOTE_PORT_FOR_<port>, ona karşılık gelen _CLOUD değişkeni ve remote_port_environment ile belirlenen özel bir ad) ayrıca /data/env/<VARIABLE_NAME>.txt altındaki dosyalar olarak güncel tutulur — IronFlock SDK’ları bunları otomatik olarak okur. Diğer değişkenler yalnızca konteyner yeniden başlatıldığında değişir.

Cihaz ajanı, bulut portu ortadan kalktığında (bulut yönlendirmesi kapatıldığında) bir _CLOUD dosyasını kaldırır. Bu nedenle ajanın dosyaları mevcutken eksik veya boş bir _CLOUD dosyası bulut portu olmadığı anlamına gelir ve SDK’lar konteynerin başlarken aldığı eski değere geri dönmez.

Ajan /data/env dizinini yalnızca root tarafından okunabilir yapar. Başka bir kullanıcı olarak çalışan bir konteyner bu dosyaları okuyamaz: yalnızca başlarken aldığı değerleri görür — o zamandan beri değişen hiçbir tünel portunu görmez — ve SDK’lar bir kez uyarı kaydeder.

Protokoller Nasıl Çalışır

HTTP / HTTPS

Web tabanlı servisler için. IronFlock, tünel alan adında trafiği cihazın yerel portuna yönlendiren bir URL oluşturur. Kullanıcılar URL’yi tarayıcılarında açar. Bu URL özeldir: port Genel olarak ayarlanmadıkça yalnızca IronFlock’ta oturum açmış ve cihaza erişimi olan kullanıcılar onu açabilir.

TCP

VNC (Uzak Masaüstü) veya doğrudan soket bağlantıları gibi protokoller için. IronFlock, tünel sunucusunda bir uzak port tahsis eder ve bunu uygulamanıza REMOTE_PORT_FOR_<port> olarak açığa çıkarır; servis bundan sonra tcp://<TUNNEL_DOMAIN>:<remote port> adresinden erişilebilir.

UDP

LoRaWAN iletişimi veya VPN tünelleri gibi protokoller için. TCP’ye benzer şekilde — bir uzak port tahsis edilir ve REMOTE_PORT_FOR_<port> olarak açığa çıkarılır.

Board’lara Yerleştirme

Embed Widget kullanarak bir cihazın uzaktan erişim tünelini doğrudan bir board’a yerleştirebilirsiniz. Bu, kullanıcıların şunları yapabildiği sorunsuz bir deneyim oluşturur:

  • Tüm cihazlardaki global verileri izleme
  • Yerleşik web arayüzleri aracılığıyla bireysel cihazlarla etkileşim kurma

Hepsi aynı dashboard içinde.

Bir uygulamayı üretim cihazına kurmak, port-template.yml dosyasındaki her portun tünelini açar. HTTP ve HTTPS tünelleri özel kalır — bir port Genel olarak ayarlanmadıkça yalnızca IronFlock’ta oturum açmış ve cihaza erişimi olan kullanıcılar bunları açabilir. TCP ve UDP tünelleri, tünel sunucusunda önünde oturum açma adımı olmayan ham portlardır; bu nedenle uygulama, istemcilerinin kimliğini kendisi doğrulamalıdır. Cihazda ağ ayrıcalığına sahip kullanıcılar tünelleri kapatıp yeniden açabilir; bkz. Tünel Yönetimi.

Last updated on