こんにちは。
別の部屋で寝ている子どもが夜泣きで起きていないかを、ラズベリーパイを使って動体検知するシステムを1回目の記事、2回目の記事で作ってきました。
前回で要件を満たすものは作れたのですが、もう1歩進めてみます。
動体検知と見守りは超便利ソフトウェアであるmotionを使ったわけですが、ラズパイ自体は家のネットワークにつながっているだけなので、ストリーム配信は当然家にいる時にしか見られません。
今回は**remote.it**を使って家のセキュリティ設定を変えずに、セキュアにリモートからも家のラズパイカメラを見れるようにしてみます。
『remote.it』って?
**remote.it**は非常に簡単にリモートネットワークから、家などのプライベートネットワーク内の機器にアクセスできるサービスです。
事前にremote.it上にアクセスしたいデバイスと利用するサービス(ポート)を登録しておくだけで、**家のルーターやデバイスには通常必要となるグローバルIPの設定やFWの穴あけといった作業を行う必要がありません。**信じられないほど簡単です。
SSHフォワーディングで構築されているものと思われます。
remote.itの導入
では早速remote.itを導入してみます。
アカウントの作成
remote.itの利用にはアカウントが必要です。
トップページ右上の「Sign Up」から登録します。
サインインするとこのようなページが確認できます。まだデバイスは登録されていません。
ラズパイの設定
remote.itのインストールとデバイス登録
それではremote.itで接続したいラズパイの設定を行います。
ラズパイへログインしてパッケージconnectd
をインストールします。
sudo apt install connectd
インストールが終わったらラズパイの登録を行うためにコマンドconnectd_installer
を実行します。
sudo connectd_installer
するとこのようなSign Inメニューが表示されるので「1」を選択します。
********************* Sign In Menu *********************
1) Sign in to your remote.it account
2) Exit
********************************************************
Choose a menu selection (1 - 2):
1
メールアドレスとパスワードを入力してEnter。
Please enter your remote.it Username (e-mail address):
mail@example.com
Please enter your remote.it password:
初回起動時はこのデバイスをremote.itに登録するため、remote.it上でのデバイスの識別名を入力します。
Enter a name for your device (e.g. my_Pi_001).
The Device Name identifies your device in the remote.it portal.
Your services will be grouped under the Device Name.
Only letters, numbers, underscore, space and dash are allowed.
raspberrypi
メインメニューが表示されるので**「1」**を選択します。
============================ Main Menu ============================
1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit
===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
1
ラズパイ上で使うサービスのプロトコル(ポート)を選択します。ストリーム配信はHTTPなので**「2) Web(HTTP) on port 80」**を選びます。
*********** Protocol Selection Menu ***********
1) SSH on port 22
2) Web (HTTP) on port 80
3) Secure Web (HTTPS) on port 443
4) VNC on port 5900
5) nxWitness on port 7001
6) Samba (SMB) on port 445
7) Remote Desktop (RDP) on port 3389
8) NextCloud on port 443
9) OpenVPN on port 1194
10) Custom (TCP)
11) Return to previous menu
***********************************************
You can change the port value during install
***********************************************
Choose a menu selection (1 - 11):
2
HTTPなのでデフォルトポートは80ですがmotionのストリーム配信はポート8081なので、デフォルトから変更したポートを入力します。
The default port for Web (http) is 80.
Would you like to continue with the default port assignment? [y/n]
n
Enter the port value to use (1 - 65535):
8081
登録するサービスを識別するための名前を入力します。何でも良いです。
Enter a name for this remote.it service (e.g. ssh-Pi).
This name will be shown in your remote.it Service List.
Only letters, numbers, underscore, space and dash are allowed.
raspberrypi-motion
登録されるとメインメニューに戻り、上部に登録したサービスの一覧が表示されます。(私は試しにSSHも登録してみたのでその分も表示されています)
========================= Installed remote.it Services ======================
Service Name | Protocol | LAN Address | Port | Application
-------------------------------------------------------------------------------
raspberrypi-motion | HTTP | localhost | 8081 | OK: motion
raspberrypi-ssh | SSH | localhost | 22 | OK: sshd
-------------------------------------------------------------------------------
Device Name: raspberrypi Platform: arm-linaro-pi
Hardware ID: XX:XX:XX:XX:XX:XX-XXXXXXXXXXXXXXXXX
============================ Main Menu ============================
motionのパスワード設定
remote.itの設定とは関係ありませんが、念には念を入れてmotionのwebページアクセス時にID/パスワードの認証ができるようにします。
/etc/motion/motion.conf
を以下のように設定します。
# Set the authentication method (default: 0)
# 0 = disabled
# 1 = Basic authentication
# 2 = MD5 digest (the safer authentication)
stream_auth_method 1
# Authentication for the stream. Syntax username:password
# Default: not defined (Disabled)
stream_authentication ユーザー名:パスワード
これでmotionへのhttpアクセス時にパスワード認証が行われます。(認証方式はMD5 digestにしたかったのですが、remote.itからのアクセス時にうまくいかず……)
remote.itで外からアクセスしてみる
設定がすべて終わったので外からアクセスしてみます。
remote.itのマイページを見ると、先ほど登録したラズパイが表示されているので開いてみます。
登録したサービスが表示されています。Webサービスを選択します。
設定したユーザー名/パスワードを入力すれば見事、家のカメラに接続できました!!
スマホアプリも使える
ちなみにremote.itはAndroid,iPhoneアプリも用意されており、スマートフォンからも簡単に接続できます。
以上、全3回でラズパイで作る見守りシステム開発を紹介してきました。
私自身、ラズパイに触れるのは初めてでしたが比較的簡単に実装することができました。何より様々なデバイスやツール、ソフトウェアが利用できる環境に感心しました。
見守りシステムに限らず、今後もいろいろなものを手作りしていきたいなと思います。
参考URL