Configuración de puertos
Define qué servicios expone tu app para acceso remoto creando un archivo port-template.yml en el directorio .ironflock/.
Ejemplo básico
ports:
- name: Web Interface
port: 5000
main: true
protocol: httpsEsto hace que el puerto 5000 esté disponible para acceso remoto. Los usuarios pueden habilitar el túnel desde la configuración de la app en su dispositivo.
Ejemplo 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: udpReferencia de campos
| Campo | Requerido | Descripción |
|---|---|---|
name | Sí | Etiqueta mostrada en la configuración de la app del dispositivo |
port | Sí | Número de puerto local en el que el servicio escucha |
main | No | Si es true, este puerto se usa para el ícono de acceso rápido en la lista de apps del dispositivo |
protocol | No | http (predeterminado), https, tcp o udp |
Variables de entorno inyectadas
Por cada puerto que declaras, la plataforma inyecta variables de entorno en los contenedores de tu app para que tu código pueda descubrir dónde es realmente accesible el servicio — sin codificar direcciones de forma fija:
| Variable | Descripción |
|---|---|
DEVICE_LAN_IP | La dirección IP del dispositivo en la red local |
DEVICE_PORT_FOR_<port> | El puerto del dispositivo en el que tu puerto declarado se publica en la red local |
REMOTE_PORT_FOR_<port> | El puerto público asignado por el servidor de túneles mientras el túnel está activo (TCP y UDP) |
REMOTE_PORT_FOR_<port>_CLOUD | El puerto expuesto a internet cuando el dispositivo opera en una instancia de IronFlock que reenvía los túneles a través de la nube (TCP y UDP) |
<port> es el número de puerto que declaraste en port-template.yml. Para el ejemplo de Remote Desktop anterior, la app recibiría DEVICE_PORT_FOR_5900 y — mientras su túnel esté activo — REMOTE_PORT_FOR_5900.
Varias apps pueden ejecutarse simultáneamente en el mismo dispositivo, por lo que los puertos declarados se asignan automáticamente a un puerto libre del dispositivo. Compón siempre las direcciones de la red local a partir de los valores inyectados en lugar de asumir el puerto declarado:
import os
lan_ip = os.environ.get("DEVICE_LAN_IP")
lan_port = os.environ.get("DEVICE_PORT_FOR_5900")
# el servicio es accesible en la red local en {lan_ip}:{lan_port}Las variables se establecen cuando el contenedor arranca. Los puertos de túnel pueden cambiar mientras la app está en ejecución (por ejemplo, cuando un túnel se reconecta), por lo que los valores actuales también se mantienen actualizados como archivos en /data/env/<VARIABLE_NAME>.txt — los SDKs de IronFlock los leen automáticamente.
Cómo funcionan los protocolos
HTTP / HTTPS
Para servicios basados en web. IronFlock crea una URL pública que redirige el tráfico al puerto local del dispositivo. Los usuarios abren la URL en su navegador.
TCP
Para protocolos como VNC (Escritorio remoto) o conexiones directas por socket. IronFlock asigna un puerto remoto en el servidor de túneles y lo expone a tu app como REMOTE_PORT_FOR_<port>.
UDP
Para protocolos como comunicación LoRaWAN o túneles VPN. Similar a TCP — se asigna un puerto remoto y se expone como REMOTE_PORT_FOR_<port>.
Integración en boards
Puedes integrar el túnel de acceso remoto de un dispositivo directamente en un board usando el Embed Widget. Esto crea una experiencia fluida donde los usuarios pueden:
- Monitorear datos globales de todos los dispositivos
- Interactuar con dispositivos individuales a través de interfaces web integradas
Todo dentro del mismo dashboard.
Configurar el acceso remoto en
port-template.ymlno activa automáticamente los túneles. Solo los usuarios con privilegios pueden habilitar o deshabilitar túneles en sus dispositivos.