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の場合、デバイスのアプリ一覧のクイックアクセスアイコンにこのポートが使用されます
protocolいいえhttp(デフォルト)、httpstcp、または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で宣言したポート番号です。上記のリモートデスクトップの例では、アプリは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>として公開されます。

ボードへの埋め込み

埋め込みウィジェットを使用して、デバイスのリモートアクセストンネルをボードに直接埋め込むことができます。これにより、ユーザーはシームレスな体験を得られます:

  • すべてのデバイスからのグローバルデータを監視
  • 埋め込まれたWeb UIを通じて個々のデバイスと対話

すべてを同じダッシュボード内で行えます。

port-template.ymlでリモートアクセスを設定しても、トンネルは自動的に有効化されません。権限を持つユーザーのみがデバイス上でトンネルの有効化・無効化を行えます。

Last updated on