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: httpsDies 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: udpFeldreferenz
| Feld | Erforderlich | Beschreibung |
|---|---|---|
name | Ja | Bezeichnung, die in den App-Einstellungen des Geräts angezeigt wird |
port | Ja | Lokale Portnummer, auf der der Dienst lauscht |
main | Nein | Wenn true, wird dieser Port für das Schnellzugriffssymbol in der App-Liste des Geräts verwendet |
protocol | Nein | http (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:
| Variable | Beschreibung |
|---|---|
DEVICE_LAN_IP | Die 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>_CLOUD | Der ü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} erreichbarDie 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.ymlaktiviert Tunnel nicht automatisch. Nur berechtigte Benutzer können Tunnel auf ihren Geräten aktivieren oder deaktivieren.