Skip to Content
Acesso RemotoConfigurando Portas

Configurando Portas

Defina quais serviços seu app expõe para acesso remoto criando um arquivo port-template.yml no diretório .ironflock/.

Exemplo Básico

ports: - name: Web Interface port: 5000 main: true protocol: https

Isso torna a porta 5000 disponível para acesso remoto. Os usuários podem ativar o túnel nas configurações do app no dispositivo.

Exemplo 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

Referência de Campos

CampoObrigatórioDescrição
nameSimRótulo exibido nas configurações do app no dispositivo
portSimNúmero da porta local em que o serviço escuta
mainNãoSe true, esta porta é usada para o ícone de acesso rápido na lista de apps do dispositivo
protocolNãohttp (padrão), https, tcp ou udp

Variáveis de Ambiente Injetadas

Para cada porta que você declara, a plataforma injeta variáveis de ambiente nos containers do seu app, para que seu código possa descobrir onde o serviço está realmente acessível — sem endereços fixos no código:

VariávelDescrição
DEVICE_LAN_IPO endereço IP do dispositivo na rede local
DEVICE_PORT_FOR_<port>A porta no dispositivo em que sua porta declarada é publicada na rede local
REMOTE_PORT_FOR_<port>A porta pública alocada pelo servidor de túnel enquanto o túnel está ativo (TCP e UDP)
REMOTE_PORT_FOR_<port>_CLOUDA porta voltada à internet quando o dispositivo roda em uma instância IronFlock que encaminha túneis através da nuvem (TCP e UDP)

<port> é o número da porta que você declarou em port-template.yml. Para o exemplo de Remote Desktop acima, o app receberia DEVICE_PORT_FOR_5900 e — enquanto seu túnel estiver ativo — REMOTE_PORT_FOR_5900.

Apps podem rodar simultaneamente no mesmo dispositivo, portanto as portas declaradas são mapeadas automaticamente para uma porta livre no dispositivo. Sempre componha os endereços de rede local a partir dos valores injetados, em vez de assumir a porta declarada:

import os lan_ip = os.environ.get("DEVICE_LAN_IP") lan_port = os.environ.get("DEVICE_PORT_FOR_5900") # o serviço está acessível na rede local em {lan_ip}:{lan_port}

As variáveis são definidas quando o container inicia. As portas de túnel podem mudar enquanto o app está rodando (por exemplo, quando um túnel reconecta), então os valores atuais também são mantidos atualizados como arquivos em /data/env/<VARIABLE_NAME>.txt — os SDKs do IronFlock leem esses arquivos automaticamente.

Como os Protocolos Funcionam

HTTP / HTTPS

Para serviços baseados na web. O IronFlock cria uma URL pública que faz proxy do tráfego para a porta local do dispositivo. Os usuários abrem a URL no navegador.

TCP

Para protocolos como VNC (Remote Desktop) ou conexões de socket diretas. O IronFlock aloca uma porta remota no servidor de túnel e a expõe ao seu app como REMOTE_PORT_FOR_<port>.

UDP

Para protocolos como comunicação LoRaWAN ou túneis VPN. Semelhante ao TCP — uma porta remota é alocada e exposta como REMOTE_PORT_FOR_<port>.

Incorporando em Boards

Você pode incorporar o túnel de acesso remoto de um dispositivo diretamente em um board usando o Embed Widget. Isso cria uma experiência integrada em que os usuários podem:

  • Monitorar dados globais de todos os dispositivos
  • Interagir com dispositivos individuais por meio de interfaces web incorporadas

Tudo dentro do mesmo dashboard.

Configurar o acesso remoto em port-template.yml não ativa túneis automaticamente. Apenas usuários com privilégios podem ativar ou desativar túneis em seus dispositivos.

Last updated on