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. Die Installation der App auf einem Produktionsgerät schaltet seinen Tunnel ein; Benutzer mit der Netzwerk-Berechtigung können ihn in den App-Einstellungen auf ihrem Gerät aus- und wieder einschalten.

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
remote_port_environmentNeinNur TCP und UDP: ein zusätzlicher Variablenname, unter dem der Geräte-Agent den entfernten Port des Tunnels bekanntgibt, neben REMOTE_PORT_FOR_<port>. Geräte-Agenten vor 0.19.8 geben ihn nur unter diesem Namen bekannt

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; Geräte-Agent 0.19.8 und neuer). 0 bedeutet: noch nicht zugewiesen
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)
TUNNEL_DOMAINDie Domain, auf der die Tunnel-URLs des Geräts gebildet werden: app.ironflock.com in der Cloud, die Domain der Appliance auf einer On-Premises-Appliance und localhost auf einem Edge-Gerät einer ohne Domain installierten Appliance (Modus „Einfaches HTTP“)
INSTANCE_KEYNur auf einem Gerät gesetzt, das zu einer On-Premises-Appliance (Instanz) gehört: der Schlüssel, den seine über die Cloud weitergeleiteten Tunnel-URLs tragen

<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. Die IronFlock-SDKs bilden die Fernzugriffs-URL eines Ports aus diesen Variablen mit getRemoteAccessUrlForPort. Die Plattform setzt CLOUD_TUNNEL_DOMAIN nicht: Über die Cloud weitergeleitete URLs verwenden app.ironflock.com, sofern Ihre App diese Variable nicht selbst setzt.

Tunnel gibt es nur für Produktionsinstallationen. Ein Entwicklungscontainer (DEV) erhält keinen eigenen Tunnel und keinen eigenen entfernten Port — erreichen Sie ihn stattdessen im lokalen Netzwerk des Geräts (DEVICE_LAN_IP, DEVICE_PORT_FOR_<port>).

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 Tunnel-Port-Variablen (REMOTE_PORT_FOR_<port>, die zugehörige _CLOUD-Variable und ein per remote_port_environment festgelegter eigener Name) zusätzlich als Dateien unter /data/env/<VARIABLE_NAME>.txt aktuell gehalten — die IronFlock-SDKs lesen diese automatisch. Die übrigen Variablen ändern sich nur, wenn der Container neu startet.

Der Geräte-Agent entfernt eine _CLOUD-Datei, wenn der Cloud-Port wegfällt (Cloud-Weiterleitung ausgeschaltet). Solange die Dateien des Agenten vorhanden sind, bedeutet eine fehlende oder leere _CLOUD-Datei daher, dass es keinen Cloud-Port gibt, und die SDKs greifen nicht auf den veralteten Wert zurück, mit dem der Container gestartet wurde.

Der Agent macht /data/env nur für root lesbar. Ein Container, der unter einem anderen Benutzer läuft, kann diese Dateien nicht lesen: Er sieht nur die Werte, mit denen er gestartet wurde — keinen Tunnel-Port, der sich seither geändert hat —, und die SDKs protokollieren einmalig eine Warnung.

Funktionsweise der Protokolle

HTTP / HTTPS

Für webbasierte Dienste. IronFlock erstellt eine URL auf der Tunnel-Domain, die den Datenverkehr an den lokalen Port des Geräts weiterleitet. Benutzer öffnen die URL in ihrem Browser. Sie ist privat: Nur bei IronFlock angemeldete Benutzer mit Zugriff auf das Gerät können sie öffnen, es sei denn, der Port ist auf Public geschaltet.

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; der Dienst ist dann unter tcp://<TUNNEL_DOMAIN>:<remote port> erreichbar.

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 Installation einer App auf einem Produktionsgerät schaltet den Tunnel jedes Ports in ihrer port-template.yml ein. HTTP- und HTTPS-Tunnel bleiben privat — nur bei IronFlock angemeldete Benutzer mit Zugriff auf das Gerät können sie öffnen —, es sei denn, ein Port ist auf Public geschaltet. TCP- und UDP-Tunnel sind reine Ports auf dem Tunnelserver ohne vorgeschaltete Anmeldung, daher muss die App ihre Clients selbst authentifizieren. Benutzer mit der Netzwerk-Berechtigung auf dem Gerät können Tunnel aus- und wieder einschalten; siehe Tunnel verwalten.

Last updated on