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: httpsUdostępnia port 5000 do zdalnego dostępu. Użytkownicy mogą włączyć tunel 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: udpDokumentacja pól
| Pole | Wymagane | Opis |
|---|---|---|
name | Tak | Etykieta pokazywana w ustawieniach aplikacji urządzenia |
port | Tak | Numer portu lokalnego, na którym nasłuchuje usługa |
main | Nie | Jeśli true, ten port jest używany dla ikony szybkiego dostępu na liście aplikacji urządzenia |
protocol | Nie | http (domyślny), https, tcp lub udp |
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:
| Zmienna | Opis |
|---|---|
DEVICE_LAN_IP | Adres 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) |
REMOTE_PORT_FOR_<port>_CLOUD | Port dostępny z internetu, gdy urządzenie działa w instancji IronFlock przekazującej tunele przez chmurę (TCP i UDP) |
<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.
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 aktualne wartości są dodatkowo utrzymywane jako pliki w /data/env/<VARIABLE_NAME>.txt — SDK IronFlock odczytują je automatycznie.
Jak działają protokoły
HTTP / HTTPS
Dla usług webowych. IronFlock tworzy publiczny adres URL, który przekazuje ruch do lokalnego portu urządzenia. Użytkownicy otwierają URL w przeglądarce.
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>.
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.
Skonfigurowanie zdalnego dostępu w
port-template.ymlnie aktywuje tuneli automatycznie. Tylko uprzywilejowani użytkownicy mogą włączać i wyłączać tunele na swoich urządzeniach.