Skip to Content
Acceso remotoConfigurar puertos

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: https

Esto 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: udp

Referencia de campos

CampoRequeridoDescripción
nameEtiqueta mostrada en la configuración de la app del dispositivo
portNúmero de puerto local en el que el servicio escucha
mainNoSi es true, este puerto se usa para el ícono de acceso rápido en la lista de apps del dispositivo
protocolNohttp (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:

VariableDescripción
DEVICE_LAN_IPLa 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>_CLOUDEl 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.yml no activa automáticamente los túneles. Solo los usuarios con privilegios pueden habilitar o deshabilitar túneles en sus dispositivos.

Last updated on