RaspberryPi 4B でZoneMinderを使用する Part7 - 外部からのアクセス

# 全体の目次
[目標の設定と環境の準備](https://qiita.com/BUBUBB/items/b7f3eb0e16a1c1a938b2)
[ZoneMinderのインストール](https://qiita.com/BUBUBB/items/bdf6df6b1d0ee1e14bc0)
[ZoneMinderの全般設定](https://qiita.com/BUBUBB/items/9de905615f389fd9ed50)
[カメラの登録](https://qiita.com/BUBUBB/items/f9415bc8bc526d0d84a5)
[パフォーマンスの調整](https://qiita.com/BUBUBB/items/9f98c91479a2ab6d8c0c)
[アクセスのブロック](https://qiita.com/BUBUBB/items/dbc7d59065484cd32476)
[外部からのアクセス]()
[ZmNinjyaの使用（未)]()


## このページでやること

このページでは、インターネット側からLAN側にあるZoneMinderを使用する設定を行う。また、RTSPで外部ノスマホからカメラに直接アクセスするための設定を行う。



# 目次
[Dynamic DNSの登録](#Dynamic DNSの登録)
[ZoneMinderの外部アクセス](#ZoneMinderの外部アクセス)
　[ポートフォワーディングの指定](#ポートフォワーディングの指定)
　[スマートフォンからZoneMinderにアクセス](#ススマートフォンからZoneMinderにアクセス)
[カメラに対して直接アクセス](#カメラに対して直接アクセス)
　[ポートフォワーディングの設定](#ポートフォワーディングの設定)
　[ポートフォワーディング設定後の状態](#ポートフォワーディング設定後の状態)
[スマートフォンからの](#osのインストール)
　[SSDの接続とフォーマット](#SDの接続とフォーマット)
　[マウントポイントの作成](#マウントポイントの作成)

# Dynamic DNSの登録
外部からアクセスするためには、IPアドレスを使用してアクセスするか、名前をどこかに登録しておく必要がある。一般的な家庭では、IPアドレスは固定ではないし、ドメイン名と呼ばれる名前を持っていない。
そのため、無料の Dynamic DNSと呼ばれるサービスを使用する。

Dynamic DNSの例

[MyDNS.JP](http://MyDNS.JP) 日本語。利用者多。サポートも手厚く使いやすい。無料で利用可能。
[DDNS Now](https://ddns.kuku.lu)　日本語。高い安定性。無料で利用可能。
[Dynamic Do!.jp](http://ddo.jp/)　日本語。無償だと最長利用期間が９か月であり、事実上￥500/月。

Dynamic DNSについては各サービスを参照のこと。　また、IPアドレスでのアクセスで不便が無い場合、特にこの作業は必要ない。
IPアドレスはルータの電源をオフにしたまましばらく置かないと変換しないことが多い。光回線など常時接続であれば、IPアドレスの変化をあまり気にしなくても良い。




# ZoneMinderの外部アクセス
ここでは、ZoneMinderをインターネット側（スマホなど）に公開する設定を行う。基本的には、ポート80を外部に公開し、Raspberry Piにフォワーディングする。

この設定を行うと、Raspberry PIが外部に公開されることになるため、注意が必要。可能ならDMZ内に配置したりすべきだが、お手軽に設定するのでそういう指定はしない。

ここで設定する前に、必ず、ZoneMinderのログインにユーザー名とパスワードが必要になっていることを確認しておく。

[ZoneMinderの全般設定 - SystemタブとUserタブの設定](https://qiita.com/BUBUBB/items/9de905615f389fd9ed50#system%E3%82%BF%E3%83%96%E3%81%A8user%E3%82%BF%E3%83%96%E3%81%AE%E8%A8%AD%E5%AE%9A)




## ポートフォワーディングの指定

ルーターに対して、外部（インターネット）から来たポート9999番の接続）を、内部にあるRaspberry PI(
LAN側のIPアドレスが192.168.0.100）の80番に転送させる。外部ポートを80としても問題ないが、あまりにバレバレなので一応気休め程度に番号を変えてある。9999などもありがちなので、もっとわかりにくい番号でも良い。ただ、この番号がセキュリティ向上に役立つとは思えないので、そこまで気を遣う必要はない。

FT660Aの場合、管理画面から [アプリケーション] > [ポートフォワーディング]を選択、値を設定して[追加]をクリックする。

![35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/a0c7e62d-e31b-92db-1a19-2bd92ad00c5e.png)


|項目|値|説明|
|:--|:--|:--|
|有効にする|オン|この設定を有効にするかどうか|
|名前|任意|任意のわかりやすい名前を付けておく|
|プロトコル|TCP|httpアクセスなのでTCPだけで問題ない|
|外部ホストIPアドレス|空欄|空欄にしておくことですべてのIPアドレスからの要求が転送対象となる|
|WAN接続|プロバイダ指定|WAN側の接続名。LANではない方。|
|外部ポート番号|9999|開始、終了とも9999。この値は任意の整数値。80でも構わない。|
|MACアドレスのマッピングを有効にする|オフ|どうしてもLAN側のIPアドレスが固定できない場合に、ここをオンにすると、MACアドレスでフォワーディングを行うことが出来る。（ルータ側に機能がある場合のみ）|
|内部ホストのIPアドレス|RaspberryPIのアドレス|ZoneMinderが動作しているRaspberry PIのLAN側IPアドレスを指定する|
|内部ポート番号|80|ZoneMinderのLAN内でのポート番号。80でよい|

## スマートフォンからZoneMinderにアクセス

設定が終わったら、スマホなどのWifiを切断し、外部からブラウザで
http://dnyamicDNSで取得したドメイン名(あるいはグローバルIPアドレス)/zm
にアクセスする。ログイン画面が表示されれば成功。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/695cecdd-f57d-024a-4868-2faa8f0d0bcc.png" width=60%>

後は、普通にブラウザから画像を表示できる。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/69bc171a-8b79-a243-01f5-5ea9b4a4a435.png)


# カメラに対して直接アクセス

次に、LAN内のカメラに対してスマートフォンからRTSPを使用してカメラに直接アクセスするための設定を行う。この記事では、ZoneMinderはパフォーマンス上の理由から低解像度のセカンドストリームで運用している。そのため、高解像度のライブビューを確認したり、Tapo C-200などでカメラのPTZコントロール（上下左右の首振り）を行うためには、別途ソフトウエアを使用する。

RTSPで使用するソフトウェアは、IPCam Viewer。ほかにも色々あるので自由に選択してよい。

Android版
[IPCam Viewer Pro (有償)](https://play.google.com/store/apps/details?id=com.rcreations.WebCamViewerPaid&hl=ja&gl=US)
[IPCam Viwer Lite (無料版)](https://play.google.com/store/apps/details?id=com.rcreations.ipcamviewer&hl=ja&gl=US)

iOS
[ipCam Viewer Pro (有償)](https://apps.apple.com/jp/app/ip-cam-viewer-pro/id402656416)
[ipCam Viewer Lite (無料版)](https://apps.apple.com/jp/app/ip-cam-viewer-lite/id397322405)

## ポートフォワーディングの設定

外部ネットワークの任意の番号から、LAN内にあるカメラの554に対してフォワーディングする。PTZがあるカメラ(C-200など）は、2020も同様にフォワーディングを行う。

具体的な操作方法は[ポートフォワーディングの指定](#ポートフォワーディングの指定)と同じ。

Tapo C-100 （PTZなし）の場合、外部ネットワーク(omc1_dhcp)の適当なポート(120）を、LAN側のカメラのIPアドレス(192.168.0.101)のポート554にフォワーディングする。

![38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/65b4f0d6-ebc2-ce61-1aa5-92f56d54c9bb.png)

Tapo C-200の場合、C-100の設定に加えて、ONVIFの設定として、ポート2020もフォワーディング設定する。

![39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/59cd3f48-8d2e-8204-1524-ad3780b5b2a7.png)

#ポートフォワーディング設定後の状態
ポートフォワーディングの設定が終わると、ルーターのポートフォワーディングが行われ、次のように外部にLAN側のPCが公開されるようになる。

* 外部ポートの999は、Raspberry PIのポート80に接続されている。
* LAN内のRaspberry PiのZoneMinderは、各カメラのRTSPポート554に直接接続されている。
* 外部ポートの120は、C-100の554ポートに接続する。
* 外部ポートの124は、C-200の554ポートに接続する。
* 外部ポートの125は、C-200の2020ポートに接続する。

![40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/81f63e48-a32e-7255-fe9f-f9af9c80b0fe.png)

このように、外部ネットワークに、特定のカメラやPCのネットワークポートの一部分だけを安全に公開できる。

繰り返しになるが、必ず、カメラやZoneMinderのアクセスには認証を有効にしておく。

[ZoneMinderの全般設定](https://qiita.com/BUBUBB/items/9de905615f389fd9ed50#system%E3%82%BF%E3%83%96%E3%81%A8user%E3%82%BF%E3%83%96%E3%81%AE%E8%A8%AD%E5%AE%9A)
[カメラのMACアドレスを求める](https://qiita.com/BUBUBB/items/f9415bc8bc526d0d84a5#%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AEmac%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E6%B1%82%E3%82%81%E3%82%8B)



#スマートフォンからカメラにアクセス

スマホ側のアプリが、IP Cam Viewerの場合。IP Cam viewerにはカメラを検索して自動的に設定する機能があるが、2021年現在でtapoは登録されていない。また、それ以外の設定でもイマイチ適合しないことがあるので、手動で設定する。

IPCamViewerを起動し、右上の　[＞＝]アイコンからカメラの管理を選択する。インストール後初回起動時は自動的にカメラの管理画面が表示されるので操作不要。

![41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/f8000379-755d-12f8-5d58-a93c74252159.png)


画面下の＋ボタンを押して、カメラの登録＞IPカメラ、DVR、NVRを選択。

![42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/a6be7c58-8a33-388d-ae97-57ae07740906.png)

製造元の右にある、Findボタンを押す

![43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/5026b7ce-8b98-ac4f-db00-256cb5366af6.png)

generic、と入力し、Generic RTSP over TCPを選択する。

![44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/9347399f-5996-84fc-05c3-7cb04187e375.png)

基本的な項目が入力されるので、環境に合わせて値を設定していく。
![45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096509/aba399a2-9d3d-4c67-f7dc-a642806ac4bf.png)

|項目|入力値|
|:--|:--|
|カメラ名|任意の値|
|製造元|変更不要。Generic URLのまま|
|モデル|変更不要。Generic RTSP over TCPで良い|
|URL|カメラのURL。カメラのURLは、[ZoneMinderの設定時に確認したもの](https://qiita.com/BUBUBB/items/f9415bc8bc526d0d84a5##%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AEURL%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B)を使用する。（メインストリーム）　ただし、URLにはユーザー名とパスワードは記述しない。 <br>http：//DynamicDNSで取得した名前:ポートフォワーディングで指定した外向けポート/カメラのパス<br>例：http：//myname.mydns.jp:82/Stream1|
|User|カメラのユーザー名。Tapoの場合Administrator。imou、ctronicsの場合admin。|
|Password|カメラのパスワード|

設定が終わったら、テストボタンを押して画面が表示されることを確認する。