포트 구성
.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이면 디바이스 앱 목록의 빠른 접근 아이콘에 이 포트가 사용됨 |
protocol | 아니오 | http(기본값), https, tcp, 또는 udp |
주입되는 환경 변수
선언한 모든 포트에 대해 플랫폼이 앱의 컨테이너에 환경 변수를 주입하므로, 주소를 하드코딩하지 않고도 코드에서 서비스가 실제로 접근 가능한 위치를 확인할 수 있습니다:
| 변수 | 설명 |
|---|---|
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
웹 기반 서비스를 위한 프로토콜입니다. IronFlock이 디바이스의 로컬 포트로 트래픽을 프록시하는 공개 URL을 생성합니다. 사용자가 브라우저에서 URL을 엽니다.
TCP
VNC(원격 데스크톱) 또는 직접 소켓 연결과 같은 프로토콜을 위한 것입니다. IronFlock이 터널 서버에 원격 포트를 할당하고 이를 REMOTE_PORT_FOR_<port>로 앱에 노출합니다.
UDP
LoRaWAN 통신 또는 VPN 터널과 같은 프로토콜을 위한 것입니다. TCP와 유사하게 원격 포트가 할당되고 REMOTE_PORT_FOR_<port>로 노출됩니다.
보드에 임베드
Embed Widget을 사용하여 디바이스의 원격 접근 터널을 보드에 직접 임베드할 수 있습니다. 이를 통해 다음이 가능한 원활한 경험을 만들 수 있습니다:
- 모든 디바이스에서 글로벌 데이터 모니터링
- 임베드된 웹 UI를 통해 개별 디바이스와 상호 작용
모두 동일한 대시보드 내에서.
port-template.yml에서 원격 접근을 구성한다고 해서 터널이 자동으로 활성화되지는 않습니다. 권한이 있는 사용자만 디바이스에서 터널을 활성화하거나 비활성화할 수 있습니다.