Skip to Content
远程访问配置端口

配置端口

通过在 .ironflock/ 目录中创建 port-template.yml 文件来定义应用暴露哪些服务用于远程访问。

基本示例

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

这将使端口 5000 可用于远程访问。用户可以在设备的应用设置中启用隧道。

完整示例

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

字段参考

字段必填说明
name在设备应用设置中显示的标签
port服务监听的本地端口号
main如果为 true,该端口用于设备应用列表上的快速访问图标
protocolhttp(默认)、httpstcpudp

注入的环境变量

对于您声明的每个端口,平台都会向应用的容器注入环境变量,使您的代码无需硬编码地址即可发现服务的实际可达位置:

变量说明
DEVICE_LAN_IP设备在本地网络中的 IP 地址
DEVICE_PORT_FOR_<port>您声明的端口在本地网络上发布时所使用的设备端口
REMOTE_PORT_FOR_<port>隧道激活期间由隧道服务器分配的公共端口(TCP 和 UDP)
REMOTE_PORT_FOR_<port>_CLOUD当设备运行在通过云端转发隧道的 IronFlock 实例上时面向互联网的端口(TCP 和 UDP)

<port> 是您在 port-template.yml 中声明的端口号。以上面的 Remote Desktop 示例为例,应用会收到 DEVICE_PORT_FOR_5900,并且在其隧道激活期间还会收到 REMOTE_PORT_FOR_5900

多个应用可能在同一台设备上同时运行,因此声明的端口会自动映射到设备上的空闲端口。请始终使用注入的值来组合本地网络地址,而不要假设服务使用声明的端口:

import os lan_ip = os.environ.get("DEVICE_LAN_IP") lan_port = os.environ.get("DEVICE_PORT_FOR_5900") # 服务可通过本地网络在 {lan_ip}:{lan_port} 访问

这些变量在容器启动时设置。隧道端口在应用运行期间可能发生变化(例如隧道重新连接时),因此当前值还会以文件形式保存在 /data/env/<VARIABLE_NAME>.txt 下并保持最新——IronFlock SDK 会自动读取这些文件。

协议工作方式

HTTP / HTTPS

用于基于 Web 的服务。IronFlock 创建一个公共 URL,将流量代理到设备的本地端口。用户在浏览器中打开该 URL。

TCP

用于 VNC(远程桌面)或直接套接字连接等协议。IronFlock 在隧道服务器上分配一个远程端口,并通过 REMOTE_PORT_FOR_<port> 暴露给您的应用。

UDP

用于 LoRaWAN 通信或 VPN 隧道等协议。与 TCP 类似——分配远程端口并通过 REMOTE_PORT_FOR_<port> 暴露。

嵌入到看板

您可以使用 Embed Widget 将设备的远程访问隧道直接嵌入到看板中。这创造了无缝的使用体验,用户可以:

  • 监控所有设备的全局数据
  • 通过嵌入的 Web UI 与单个设备交互

所有操作在同一个仪表板中完成。

port-template.yml 中配置远程访问不会自动激活隧道。只有具有权限的用户才能在其设备上启用或禁用隧道。

Last updated on