Jetson Xavierを使ってみる その2(通信周りの設定、Node-RED、TailScale)
はじめに
今回は以前OSのセットアップを行ったJetson Xavierの通信周りの設定を行いました。
自宅サーバーとして使いたかったので、外部のネットワークからでもアクセスできるようにしています。今回利用したTailscaleが便利で、Windowsでも導入して利用しています。
▼以前の記事はこちら
インターネットとの接続
Jetson Nanoのときもそうだったのですが、Jetson Xavierには無線接続するための部品がありません。
▼Jetson NanoのときはUSBで挿して使えるWi-Fi無線LANで接続していました。
有線LANのポートはあるのですが、無線LANが別の部屋にあったので、有線LANを差すことができない状況でした。今回は中継機があったので、そこに有線LANで差しています。
▼使わずに余っていたこちらの中継機を使っています。有線LANのポートもあります。
無線LANと中継機を接続するための設定を行いました。中継機への接続先のアドレスやユーザー名、パスワードは本体に書かれていました。
▼中継機のアクセスポイントに接続して、ログインしました。

▼接続先を設定しました。

この後Jetson Xavierと中継機を有線で接続し、別のPCからSSH接続で入ることができました。
Node-REDをインストールする
普段から使い慣れているNode-REDをインストールしました。フロー型のプログラミングツールで、特に通信周りの実装が簡単にできます。
▼以下のページのRaspberry Pi用のスクリプトは、Ubuntuでも利用できます。
https://nodered.jp/docs/getting-started/raspberrypi
別のPCからJetson XavierにSSH接続し、コマンドを実行しました。
sudo apt update
sudo apt upgrade
sudo apt install curl
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
▼curlが無いというエラーは起きていたので、インストールしました。

ターミナルに表示される設定項目は基本的にデフォルトのままなのですが、今回はネットワークを超えて入れるようにしたかったので、セキュリティの設定を行いました。
▼User Securityを有効にしておくと、アクセスしたときにユーザー名とパスワードの入力が求められます。

▼この後ターミナルでnode-redを実行し、http://<IPアドレス>:1880にアクセスすると、ユーザー名とパスワードの入力が求められました。

Node-REDのエディタ画面にアクセスできました。
Tailscaleを使ってみる
ローカルネットワークではSSH接続やNode-REDへのログインはできるようになりました。さらにネットワークを超えて、どこからでも家のJetson Xavierにアクセスする方法を探していました。
▼以前Ngrokは使ったことがあるのですが、無料枠では通信量が月に1GBまでで、すぐに使い果たしたことがありました。
ChatGPTに聞いてみたところ、Tailscaleというものがあることを教えてもらいました。
▼Tailscaleの説明についてはこちら。
https://tailscale.com/blog/how-tailscale-works
簡単にVPNを導入するための仕組みのようです。VPNについては詳しくないのですが、まずは使ってみました。
▼Tailscaleの各環境へのインストール方法は以下のページにあります。
https://tailscale.com/kb/1347/installation
今回はChatGPTにコマンドを提示してもらいました。snapでインストールできました。
sudo snap install tailscale
sudo tailscale up
▼問題なくインストールできました。

▼ログイン用のURLが表示されました。

sudo tailscale upを実行した時点で、ログインするためのURLが表示されます。そのURLにアクセスし、ログインしたところ、問題なくセットアップできました。
▼他のデバイスでもインストールしてセットアップした状態ですが、このようにブラウザでアドレスを確認できます。このアドレスでSSH接続もできました。

Ngrokのようにポートを開放する、Funnelという仕組みもあります。
▼Funnelについてはこちらのページで説明されています。現在はベータ版の機能のようです。
https://tailscale.com/kb/1223/funnel
▼ブラウザの管理画面でFunnelを有効にしました。

1880ポートで起動しているNode-REDに外部からアクセスしたかったので、1880ポートに対してFunnelを利用しました。
sudo tailscale funnel 1880
▼sudoをつけて実行する必要がありました。

HTTPS通信で接続するためのURLが発行されるので、そのURLにアクセスすると、またNode-REDのログイン画面が表示されました。
SSH接続したターミナルを閉じるとFunnelも無効になるので、Node-REDのexecノードを利用して、起動時に1880ポートに対してFunnelを実行するようにしてみました。
▼sudoをつけて実行する必要があるので、コマンドを実行するときにパスワードを渡す必要があります。

▼フローは以下のように作成してみました。

これで起動時にFunnelも実行されるようになりました。
▼emailノードと組み合わせて、発行されたURLを通知するようになっています。
なおFunnelで発行されたURLは、Tailscaleの管理画面でも確認できます。
最後に
Tailscaleを利用して、簡単に外部ネットワークからでもアクセスできるようになりました。WindowsのPCでも便利に利用できたので、また別の記事にまとめようと思っています。
▼SSH接続だとコマンドでの操作なので、GUIでの操作はGoogle Chromeのリモートデスクトップを使っています。