ラズパイを remote.it(Weaved?)で外部公開する
1.概要
Raspberry piでIoT Gatewayを開発することになったので、
Raspberry piをローカルより外側のネットワークに公開する方法を調べました。
このサイトよりルータの設定を変える方法とWeavedサービスなるものを適用する方法があることが分かったのですが、(ちなみに最新のラズパイ公式ドキュメントではWeavedの指定は消えています。)
Weavedサービスを用いた方法を紹介しているページがあまりなかったので今回実践しつつ手順をまとめます。なお、Weavedへのリンクへ飛ぶとremote.itのサイトへ飛んだので現在はremote.itに変わったみたいです。
2.インストール手順
本章はRaspberry piで行う手順となります。
2-1
https://remote.it/ にアクセスして[Sign up]からアカウントを作成します。
※記事作成終盤で気づきましたが日本語サイトもあるみたいです。
2-2
E-mailアドレス、passwordを入力し、ポリシーの同意にチェックを入れて[CREATE ACCOUNT]をクリックします。
2-3
登録したE-mailアドレスにメールが届くので[Verify Email]をクリックしてアカウントを確定します。
2-4
アカウントの作成に成功すると以下の画面が表示されます。
[CONTINUE →]で次に進みます。
2-5
下記画面に作成したアカウント情報を入力してログインします。
2-6
[DOWNLOAD]をクリックしてダウンロードの選択画面に遷移します。
今回はRaspbianの32bit環境なので下記画像の選択となります。
(ちなみにドキュメントへのリンクもあり、
日本語のドキュメントも用意されているので安心します。)
2-7
ダウンロードが完了したらファイルを右クリックしてパッケージのインストールからインストールを実行します。
3.設定手順
本章はRaspberry piで行う手順となります。
3-1
インストールが完了したらコンソールを開いて以下のコマンドを実行します。
UsernameとPasswordを聞かれるのでremote.itアカウントの情報を入力します。
sudo remoteit signin
3-2
signinが完了したら以下のコマンドを実行します。
Device nameの入力が求められるのでネットワーク上のデバイス名を入力します。
(今回の例では"pi"としています。)
sudo remoteit register
3-3
最後に下記のコマンドを実行します。
サービスのタイプ、ポート、サービス名の入力が求められます。
(今回の例では"http","8000","ykwmt"としています。)
sudo remoteit add
4.動作確認
4-1
以下、4-3までRaspberry piで行う手順となります。
外部公開用のフォルダを作成し、
"index.html"を作成します。
(今回の例では"ykwmt_demo"としています。)
4-2
"index.html"に以下のコードを書込みます。
<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="UTF-8">
<title>ハロワ</title>
</head>
<BODY>
ハロワ!!
</BODY>
</html>
4-3
コンソールを開き作成した外部公開用のフォルダに移動します。
下記のコードを実行しフォルダを公開します。
※デフォルト設定で8000番ポートが割り当てられるはずですが、
8000番以外が割り当てられる場合はサービスとポートが合うよう対処して下さい。
python3 -m http.server --cgi
4-4
以下、4-5までRaspberry pi以外のデバイス(PCやスマホ)で行う手順となります。
PCやスマホからhttps://remote.it/ にアクセスします。
サインインすると登録したラズパイが確認できます。
4-5
Device Name("pi")をクリックしてDevice Servicesダイアログを開きます。
更にService("ykwmt")をクリックしてWeb Connectionダイアログを開きます。
表示されたURLにウェブブラウザでアクセスすると、
"index.html"の内容が確認できます。
5.まとめ
以上で外部からラズパイに対してアクセスすることができました。
今回はHTTPでのアクセスでしたが、他のプロトコルも用意されていたり、
スマホで利用する為のアプリも用意されていたりとフォローが手厚いなと感じました。
あとは、公式のドキュメントページでAWSというワードがたくさん見られたので、
もしかしたらAWSと使うといいことがあるのかな?
6.参照