Skip to Content
FernzugriffPorts konfigurieren

Ports konfigurieren

Definieren Sie, welche Dienste Ihre App für den Fernzugriff bereitstellt, indem Sie eine port-template.yml-Datei im .ironflock/-Verzeichnis erstellen.

Einfaches Beispiel

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

Dies macht Port 5000 für den Fernzugriff verfügbar. Benutzer können den Tunnel in den App-Einstellungen auf ihrem Gerät aktivieren.

Vollständiges Beispiel

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

Feldreferenz

FeldErforderlichBeschreibung
nameJaBezeichnung, die in den App-Einstellungen des Geräts angezeigt wird
portJaLokale Portnummer, auf der der Dienst lauscht
mainNeinWenn true, wird dieser Port für das Schnellzugriffssymbol in der App-Liste des Geräts verwendet
protocolNeinhttp (Standard), https, tcp oder udp

Injizierte Umgebungsvariablen

Für jeden deklarierten Port injiziert die Plattform Umgebungsvariablen in die Container Ihrer App, damit Ihr Code ermitteln kann, wo der Dienst tatsächlich erreichbar ist — ohne Adressen fest codieren zu müssen:

VariableBeschreibung
DEVICE_LAN_IPDie IP-Adresse des Geräts im lokalen Netzwerk
DEVICE_PORT_FOR_<port>Der Port auf dem Gerät, unter dem Ihr deklarierter Port im lokalen Netzwerk veröffentlicht wird
REMOTE_PORT_FOR_<port>Der öffentliche Port, den der Tunnelserver zuweist, solange der Tunnel aktiv ist (TCP und UDP)
REMOTE_PORT_FOR_<port>_CLOUDDer über das Internet erreichbare Port, wenn das Gerät auf einer IronFlock-Instanz läuft, die Tunnel über die Cloud weiterleitet (TCP und UDP)

<port> ist die Portnummer, die Sie in port-template.yml deklariert haben. Für das obige Remote-Desktop-Beispiel würde die App DEVICE_PORT_FOR_5900 erhalten und — solange ihr Tunnel aktiv ist — REMOTE_PORT_FOR_5900.

Da Apps gleichzeitig auf demselben Gerät laufen können, werden deklarierte Ports automatisch auf einen freien Port des Geräts abgebildet. Setzen Sie Adressen im lokalen Netzwerk daher immer aus den injizierten Werten zusammen, statt vom deklarierten Port auszugehen:

import os lan_ip = os.environ.get("DEVICE_LAN_IP") lan_port = os.environ.get("DEVICE_PORT_FOR_5900") # Der Dienst ist im lokalen Netzwerk unter {lan_ip}:{lan_port} erreichbar

Die Variablen werden beim Start des Containers gesetzt. Tunnel-Ports können sich ändern, während die App läuft (zum Beispiel, wenn sich ein Tunnel neu verbindet). Daher werden die aktuellen Werte zusätzlich als Dateien unter /data/env/<VARIABLE_NAME>.txt aktuell gehalten — die IronFlock-SDKs lesen diese automatisch.

Funktionsweise der Protokolle

HTTP / HTTPS

Für webbasierte Dienste. IronFlock erstellt eine öffentliche URL, die den Datenverkehr an den lokalen Port des Geräts weiterleitet. Benutzer öffnen die URL in ihrem Browser.

TCP

Für Protokolle wie VNC (Remote Desktop) oder direkte Socket-Verbindungen. IronFlock weist einen entfernten Port auf dem Tunnelserver zu und stellt ihn Ihrer App als REMOTE_PORT_FOR_<port> bereit.

UDP

Für Protokolle wie LoRaWAN-Kommunikation oder VPN-Tunnel. Ähnlich wie TCP — ein entfernter Port wird zugewiesen und als REMOTE_PORT_FOR_<port> bereitgestellt.

Einbettung in Boards

Sie können den Fernzugriffstunnel eines Geräts direkt in ein Board einbetten, indem Sie das Embed-Widget verwenden. Dies ermöglicht eine nahtlose Erfahrung, bei der Benutzer:

  • Globale Daten aller Geräte überwachen
  • Mit einzelnen Geräten über eingebettete Weboberflächen interagieren

Alles innerhalb desselben Dashboards.

Die Konfiguration des Fernzugriffs in port-template.yml aktiviert Tunnel nicht automatisch. Nur berechtigte Benutzer können Tunnel auf ihren Geräten aktivieren oder deaktivieren.

Last updated on