Configuration des ports
Définissez quels services votre application expose pour l’accès à distance en créant un fichier port-template.yml dans le répertoire .ironflock/.
Exemple de base
ports:
- name: Web Interface
port: 5000
main: true
protocol: httpsCela rend le port 5000 disponible pour l’accès à distance. Les utilisateurs peuvent activer le tunnel depuis les paramètres de l’application sur leur appareil.
Exemple complet
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: udpRéférence des champs
| Champ | Requis | Description |
|---|---|---|
name | Oui | Étiquette affichée dans les paramètres de l’application |
port | Oui | Numéro de port local sur lequel le service écoute |
main | Non | Si true, ce port est utilisé pour l’icône d’accès rapide |
protocol | Non | http (par défaut), https, tcp ou udp |
Variables d’environnement injectées
Pour chaque port que vous déclarez, la plateforme injecte des variables d’environnement dans les conteneurs de votre application afin que votre code puisse découvrir où le service est réellement accessible — sans coder les adresses en dur :
| Variable | Description |
|---|---|
DEVICE_LAN_IP | L’adresse IP de l’appareil sur le réseau local |
DEVICE_PORT_FOR_<port> | Le port de l’appareil sur lequel votre port déclaré est publié sur le réseau local |
REMOTE_PORT_FOR_<port> | Le port public alloué par le serveur de tunnel tant que le tunnel est actif (TCP et UDP) |
REMOTE_PORT_FOR_<port>_CLOUD | Le port exposé sur Internet lorsque l’appareil fonctionne sur une instance IronFlock qui relaie les tunnels via le cloud (TCP et UDP) |
<port> correspond au numéro de port que vous avez déclaré dans port-template.yml. Pour l’exemple Remote Desktop ci-dessus, l’application recevrait DEVICE_PORT_FOR_5900 et — tant que son tunnel est actif — REMOTE_PORT_FOR_5900.
Plusieurs applications peuvent s’exécuter simultanément sur le même appareil ; les ports déclarés sont donc automatiquement mappés vers un port libre de l’appareil. Composez toujours les adresses du réseau local à partir des valeurs injectées au lieu de présumer du port déclaré :
import os
lan_ip = os.environ.get("DEVICE_LAN_IP")
lan_port = os.environ.get("DEVICE_PORT_FOR_5900")
# le service est accessible sur le réseau local à {lan_ip}:{lan_port}Les variables sont définies au démarrage du conteneur. Les ports de tunnel peuvent changer pendant l’exécution de l’application (par exemple lors de la reconnexion d’un tunnel) ; les valeurs actuelles sont donc également tenues à jour sous forme de fichiers dans /data/env/<VARIABLE_NAME>.txt — les SDK IronFlock les lisent automatiquement.
Fonctionnement des protocoles
HTTP / HTTPS
Pour les services web. IronFlock crée une URL publique qui relaie le trafic vers le port local de l’appareil. Les utilisateurs ouvrent l’URL dans leur navigateur.
TCP
Pour des protocoles comme VNC (Remote Desktop) ou les connexions socket directes. IronFlock alloue un port distant sur le serveur de tunnel et l’expose à votre application via REMOTE_PORT_FOR_<port>.
UDP
Pour des protocoles comme la communication LoRaWAN ou les tunnels VPN. Similaire à TCP — un port distant est alloué et exposé via REMOTE_PORT_FOR_<port>.
Intégration dans les boards
Vous pouvez intégrer le tunnel d’accès à distance d’un appareil directement dans un board en utilisant le Widget Intégration. Cela crée une expérience fluide où les utilisateurs peuvent :
- Surveiller les données globales de tous les appareils
- Interagir avec des appareils individuels via des interfaces web intégrées
Le tout au sein du même tableau de bord.
La configuration de l’accès à distance dans
port-template.ymln’active pas automatiquement les tunnels. Seuls les utilisateurs privilégiés peuvent activer ou désactiver les tunnels sur leurs appareils.