web-dev-qa-db-ja.com

Raspberry Pi Motion Cameraを搭載したUbuntuサーバー

Webサーバーとして使用するUbuntuサーバーがあります。すべてがうまく機能し、複数のサイトがセットアップされています。私のルーターでは、UbuntuサーバーであるパブリックIPを所有できるデバイスは1つだけです。カメラとモーションを使用してRaspberryPiをセットアップします。繰り返しになりますが、すべてがうまく動作します-ブラウザ(IP:8081)経由でCamにアクセスできます。

UbuntuからWebサイトを実行し、ラズベリーからのライブストリームを表示したいと思います。これは<img src="IP:8081?action=stream />でうまく機能します。ただし、ラズベリーは内部IPのみであるため、ネットワーク外にいるとストリームを見ることができません。

Ubuntuでラズベリーにアクセスし、ストリームにフィードバックするには、何をする必要がありますか?

ちなみに、このアプリはcodeigniterに基づいており、locahost以外でも動作するように設定されています。

3
sixtynine

したがって、2つのネットワーク(WANとLAN)にまたがるサーバーがあり、サーバーがホストする他のコンテンツの一部として、WAN上のLANから何かを公開したいとします。

最も簡単な方法は、HTTPサーバーに接続をプロキシするように指示することです。ほとんどのサーバーはこれを行うことができますが、最高(最速、最小など)であるため、Nginxを他のものよりも使用します。次のようなルールを使用します。

location /webcam/ {
    proxy_pass http://internal_webcam_IP:8081/?action=stream;
}

Apacheの場合、 同じことが当てはまります ...クイックリバースプロキシを作成するだけです。

ProxyRequests off
ProxyPass /webcam http://internal_webcam_IP:8081/?action=stream

次に、HTMLイメージの場所を次のように変更します。

<img src="/webcam/" />

これのネットワーク側はかなりシンプルでなければなりませんが、ウェブカメラでホストしている画像は画像タグで動作しない可能性があります(MJPEGを使用するもの、javascriptを使用するものもあります)ので、iframeを介してページを埋め込むか、画像を更新します(iframeよりもきれいですが、より多くの作業が必要です)。これを行う場合、プロキシを開いて、/?action=stream URLをミラーリングしないようにする必要があります。

それは事態を複雑にします。ここでは組み込みハードウェアについて説明しています。有名なのは更新が不十分で、全体としては悪名高いほど簡単にハッキングすることです。より幅広いURLの選択までプロキシを開く必要がある場合は、外部の人が内部ネットワークにアクセスしすぎるのを防ぐために、明示的なURLのロードをブロックして追加することをお勧めします。


他の方向は PHP および CodeIgniter を使用して必要なものをプロキシすることです。ただし、一般的なwebdevの経験則では、回避できる場合はドン面倒なタスクを処理するサーバー側の言語を拘束しないでください。これは、Webサーバー(またはネットワークスタックでさえも)オフロードできるものです。これは、セキュリティをまったく提供しないため、ここには入りません。

1
Oli