Configurazione Porte
Definisci quali servizi la tua app espone per l’accesso remoto creando un file port-template.yml nella directory .ironflock/.
Esempio Base
ports:
- name: Web Interface
port: 5000
main: true
protocol: httpsQuesto rende la porta 5000 disponibile per l’accesso remoto. Gli utenti possono abilitare il tunnel dalle impostazioni dell’app sul loro dispositivo.
Esempio Completo
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: udpRiferimento Campi
| Campo | Obbligatorio | Descrizione |
|---|---|---|
name | Sì | Etichetta mostrata nelle impostazioni dell’app del dispositivo |
port | Sì | Numero di porta locale su cui il servizio è in ascolto |
main | No | Se true, questa porta viene utilizzata per l’icona di accesso rapido nella lista app del dispositivo |
protocol | No | http (predefinito), https, tcp o udp |
Variabili d’Ambiente Iniettate
Per ogni porta che dichiari, la piattaforma inietta variabili d’ambiente nei container della tua app, così il tuo codice può scoprire dove il servizio è effettivamente raggiungibile — senza indirizzi codificati in modo fisso:
| Variabile | Descrizione |
|---|---|
DEVICE_LAN_IP | L’indirizzo IP del dispositivo sulla rete locale |
DEVICE_PORT_FOR_<port> | La porta del dispositivo su cui la porta dichiarata è pubblicata sulla rete locale |
REMOTE_PORT_FOR_<port> | La porta pubblica allocata dal server tunnel mentre il tunnel è attivo (TCP e UDP) |
REMOTE_PORT_FOR_<port>_CLOUD | La porta esposta su Internet quando il dispositivo opera su un’istanza IronFlock che inoltra i tunnel attraverso il cloud (TCP e UDP) |
<port> è il numero di porta dichiarato in port-template.yml. Per l’esempio del Desktop Remoto qui sopra, l’app riceverebbe DEVICE_PORT_FOR_5900 e — mentre il suo tunnel è attivo — REMOTE_PORT_FOR_5900.
Più app possono essere in esecuzione contemporaneamente sullo stesso dispositivo, quindi le porte dichiarate vengono mappate automaticamente su una porta libera del dispositivo. Componi sempre gli indirizzi di rete locale a partire dai valori iniettati invece di dare per scontata la porta dichiarata:
import os
lan_ip = os.environ.get("DEVICE_LAN_IP")
lan_port = os.environ.get("DEVICE_PORT_FOR_5900")
# il servizio è raggiungibile sulla rete locale all'indirizzo {lan_ip}:{lan_port}Le variabili vengono impostate all’avvio del container. Le porte dei tunnel possono cambiare mentre l’app è in esecuzione (ad esempio quando un tunnel si riconnette), quindi i valori correnti vengono inoltre mantenuti aggiornati come file in /data/env/<VARIABLE_NAME>.txt — gli SDK IronFlock li leggono automaticamente.
Come Funzionano i Protocolli
HTTP / HTTPS
Per i servizi basati sul web. IronFlock crea un URL pubblico che inoltra il traffico alla porta locale del dispositivo. Gli utenti aprono l’URL nel loro browser.
TCP
Per protocolli come VNC (Desktop Remoto) o connessioni socket dirette. IronFlock alloca una porta remota sul server tunnel e la espone alla tua app come REMOTE_PORT_FOR_<port>.
UDP
Per protocolli come la comunicazione LoRaWAN o i tunnel VPN. Simile a TCP — viene allocata una porta remota ed esposta come REMOTE_PORT_FOR_<port>.
Incorporamento nelle Bacheche
Puoi incorporare il tunnel di accesso remoto di un dispositivo direttamente in una bacheca usando il Widget Embed. Questo crea un’esperienza fluida in cui gli utenti possono:
- Monitorare i dati globali da tutti i dispositivi
- Interagire con i singoli dispositivi attraverso interfacce web incorporate
Tutto all’interno della stessa dashboard.
La configurazione dell’accesso remoto in
port-template.ymlnon attiva automaticamente i tunnel. Solo gli utenti privilegiati possono abilitare o disabilitare i tunnel sui loro dispositivi.