Skip to Content
Dostęp zdalnySzablon portów

Konfigurowanie portów

Zdefiniuj które usługi aplikacja udostępnia do zdalnego dostępu tworząc plik port-template.yml w katalogu .ironflock/.

Podstawowy przykład

ports: - name: Interfejs webowy port: 5000 main: true protocol: https

Udostępnia port 5000 do zdalnego dostępu. Zainstalowanie aplikacji na urządzeniu produkcyjnym włącza jego tunel; użytkownicy z uprawnieniem Sieć mogą go wyłączać i włączać z ustawień aplikacji na urządzeniu.

Pełny przykład

ports: - name: Interfejs webowy port: 1100 main: true protocol: http - name: Strumień wideo port: 1200 protocol: http - name: Pulpit zdalny port: 5900 protocol: tcp - name: Brama LoRaWAN port: 1700 protocol: udp

Dokumentacja pól

PoleWymaganeOpis
nameTakEtykieta pokazywana w ustawieniach aplikacji urządzenia
portTakNumer portu lokalnego, na którym nasłuchuje usługa
mainNieJeśli true, ten port jest używany dla ikony szybkiego dostępu na liście aplikacji urządzenia
protocolNiehttp (domyślny), https, tcp lub udp
remote_port_environmentNieTylko TCP i UDP: dodatkowa nazwa zmiennej, pod którą agent urządzenia ogłasza port zdalny tunelu, obok REMOTE_PORT_FOR_<port>. Agent urządzenia w wersji starszej niż 0.19.8 ogłasza go tylko pod tą nazwą

Wstrzykiwane zmienne środowiskowe

Dla każdego zadeklarowanego portu platforma wstrzykuje do kontenerów aplikacji zmienne środowiskowe, dzięki którym kod może ustalić, gdzie usługa jest faktycznie osiągalna — bez wpisywania adresów na sztywno:

ZmiennaOpis
DEVICE_LAN_IPAdres IP urządzenia w sieci lokalnej
DEVICE_PORT_FOR_<port>Port na urządzeniu, pod którym zadeklarowany port jest opublikowany w sieci lokalnej
REMOTE_PORT_FOR_<port>Publiczny port przydzielony przez serwer tuneli, gdy tunel jest aktywny (TCP i UDP; agent urządzenia 0.19.8 i nowsze). 0 oznacza, że port nie został jeszcze przydzielony
REMOTE_PORT_FOR_<port>_CLOUDPort dostępny z internetu, gdy urządzenie działa w instancji IronFlock przekazującej tunele przez chmurę (TCP i UDP)
TUNNEL_DOMAINDomena, w której składane są adresy URL tuneli urządzenia: app.ironflock.com w chmurze, domena Appliance w przypadku Appliance on-premises oraz localhost na urządzeniu brzegowym Appliance zainstalowanego bez domeny (tryb prosty)
INSTANCE_KEYUstawiana tylko na urządzeniu należącym do Appliance on-premises (instancji): klucz, który zawierają jego adresy URL tuneli przekazywanych przez chmurę

<port> to numer portu zadeklarowany w port-template.yml. Dla powyższego przykładu pulpitu zdalnego aplikacja otrzyma DEVICE_PORT_FOR_5900 oraz — gdy jej tunel jest aktywny — REMOTE_PORT_FOR_5900. SDK IronFlock składają adres URL zdalnego dostępu portu z tych zmiennych za pomocą getRemoteAccessUrlForPort. Platforma nie ustawia CLOUD_TUNNEL_DOMAIN: adresy URL przekazywane przez chmurę używają app.ironflock.com, chyba że aplikacja sama ustawi tę zmienną.

Tunele istnieją tylko dla instalacji produkcyjnych. Kontener deweloperski (DEV) nie dostaje własnego tunelu ani portu zdalnego — docieraj do niego zamiast tego przez sieć lokalną urządzenia (DEVICE_LAN_IP, DEVICE_PORT_FOR_<port>).

Na tym samym urządzeniu może działać jednocześnie wiele aplikacji, dlatego zadeklarowane porty są automatycznie mapowane na wolny port urządzenia. Zawsze buduj adresy w sieci lokalnej na podstawie wstrzykniętych wartości, zamiast zakładać, że obowiązuje zadeklarowany port:

import os lan_ip = os.environ.get("DEVICE_LAN_IP") lan_port = os.environ.get("DEVICE_PORT_FOR_5900") # usługa jest osiągalna w sieci lokalnej pod adresem {lan_ip}:{lan_port}

Zmienne są ustawiane przy starcie kontenera. Porty tuneli mogą się zmieniać w trakcie działania aplikacji (na przykład gdy tunel się ponownie połączy), dlatego zmienne portów tuneli (REMOTE_PORT_FOR_<port>, odpowiadająca jej zmienna _CLOUD oraz własna nazwa ustawiona w remote_port_environment) są dodatkowo na bieżąco aktualizowane jako pliki w /data/env/<VARIABLE_NAME>.txt — SDK IronFlock odczytują je automatycznie. Pozostałe zmienne zmieniają się tylko przy restarcie kontenera.

Agent urządzenia usuwa plik _CLOUD, gdy port w chmurze przestaje istnieć (przekazywanie przez chmurę wyłączone). Dopóki pliki agenta są obecne, brakujący lub pusty plik _CLOUD oznacza więc, że portu w chmurze nie ma, a SDK nie wracają do nieaktualnej wartości, z którą kontener wystartował.

Agent udostępnia /data/env do odczytu tylko użytkownikowi root. Kontener działający jako inny użytkownik nie może odczytać tych plików: widzi tylko wartości, z którymi wystartował — bez portów tuneli zmienionych od tego czasu — a SDK jednorazowo zapisują ostrzeżenie w logu.

Jak działają protokoły

HTTP / HTTPS

Dla usług webowych. IronFlock tworzy adres URL w domenie tuneli, który przekazuje ruch do lokalnego portu urządzenia. Użytkownicy otwierają URL w przeglądarce. Jest on prywatny: mogą go otworzyć tylko użytkownicy zalogowani do IronFlock, którzy mają dostęp do urządzenia, chyba że port zostanie przełączony na Publiczny.

TCP

Dla protokołów takich jak VNC (pulpit zdalny) lub bezpośrednie połączenia socketowe. IronFlock przydziela port zdalny na serwerze tuneli i udostępnia go aplikacji jako REMOTE_PORT_FOR_<port>; usługa jest wtedy osiągalna pod adresem tcp://<TUNNEL_DOMAIN>:<remote port>.

UDP

Dla protokołów takich jak komunikacja LoRaWAN lub tunele VPN. Podobnie jak w TCP — port zdalny jest przydzielany i udostępniany jako REMOTE_PORT_FOR_<port>.

Osadzanie w boardach

Możesz osadzić tunel zdalnego dostępu urządzenia bezpośrednio w boardzie za pomocą widżetu Embed. Zapewnia to spójne doświadczenie, w którym użytkownicy mogą:

  • Monitorować globalne dane ze wszystkich urządzeń
  • Wchodzić w interakcję z pojedynczymi urządzeniami przez osadzone interfejsy webowe

Wszystko w ramach tego samego dashboardu.

Zainstalowanie aplikacji na urządzeniu produkcyjnym włącza tunel każdego portu z jej port-template.yml. Tunele HTTP i HTTPS pozostają prywatne — mogą je otworzyć tylko użytkownicy zalogowani do IronFlock, którzy mają dostęp do urządzenia — chyba że port zostanie przełączony na Publiczny. Tunele TCP i UDP to zwykłe porty na serwerze tuneli, bez żadnego logowania przed nimi, więc aplikacja musi sama uwierzytelniać swoich klientów. Użytkownicy z uprawnieniem Sieć na urządzeniu mogą wyłączać tunele i ponownie je włączać; zobacz Zarządzanie tunelami.

Last updated on