Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to set up a Raspberry Pi camera with Shinobi for reliable, 24/7 CCTV monitoring

2025年09月17日に「Dev.to」が公開したITニュース「How to set up a Raspberry Pi camera with Shinobi for reliable, 24/7 CCTV monitoring」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

ラズベリーパイとオープンソースの監視ソフトウェアShinobiを使い、24時間稼働のCCTVシステムを構築する。リソースが限られた環境でも安定動作させるため、ハードウェア、ネットワーク設定、パフォーマンス調整、セキュリティ対策まで、具体的な手順で解説する。

ITニュース解説

この解説文では、Raspberry Piという小型コンピューターとShinobiというオープンソースの監視カメラソフトウェアを組み合わせて、24時間365日安定して動作する防犯カメラシステムを構築する手順を説明する。特に、Raspberry Pi 2のようなリソースが限られたデバイスでも問題なく動作させるための、ハードウェア、ネットワーク、パフォーマンスに関する具体的な設定方法に焦点を当てる。システムエンジニアを目指す初心者にとって、これは実践的なプロジェクトであり、Linuxシステムの基本操作やネットワーク設定、ソフトウェアの連携について学ぶ良い機会となるだろう。

まず、システム構築に必要なものを準備する。ハードウェアとしては、Raspberry Pi(Pi 2以降のモデルが推奨される)、対応するCSIカメラモジュール(例:OV5647)、安定した電源、そして32GB以上のSDカードが必要である。ソフトウェアの準備としては、Raspberry Pi OSのクリーンなインストール、遠隔操作のためのSSHクライアント、そしてインターネット接続が可能なネットワーク環境が必須となる。ルーターの基本的な設定知識があると、ネットワーク関連の作業がスムーズに進む。

最初のステップは、Raspberry Piの基本的なセットアップから始める。公式のRaspberry Pi Imagerを使用して、Raspberry Pi OS Lite(デスクトップ環境のない軽量版)をSDカードに書き込む。この際、高度なオプションからSSH接続を有効にしておくことが重要である。これにより、モニターやキーボードを直接接続しなくても、別のPCからRaspberry Piをコマンドラインで操作できるようになる。SDカードを差し込んでRaspberry Piを起動したら、SSHで接続し、sudo apt-get update && sudo apt-get upgrade -yというコマンドを実行して、システムを最新の状態に更新しておく。これは、後のソフトウェアインストール時のトラブルを避けるために非常に重要だ。

次に、カメラモジュールが正しく機能するかを確認する。libcamera-hello -t 2000というコマンドを実行し、2秒間のプレビューが表示されるか、または「カメラが見つからない」というエラーが表示されないかを確認する。もしエラーが出る場合は、カメラモジュールとRaspberry Pi本体をつなぐリボンケーブルの接続を再確認する。カメラの動作は、この後の全ての工程の前提となる。

Shinobi監視カメラソフトウェアのインストールに進む。まず、sudo suコマンドで管理者権限に切り替える。その後、Shinobiの公式インストーラーをダウンロードして実行する。インストーラーが起動したら、「Ubuntu Touchless」というオプションを選択するのが、Raspberry Piへのインストールに最も適している。また、インストールの途中でIPv6を無効にするか尋ねられた場合は、「Yes」を選択することで、後々のネットワーク接続の問題を回避できる場合がある。

Shinobiのインストール後、多くのガイドで見落とされがちな非常に重要なネットワーク設定の修正が必要となる。Shinobiはデフォルトのままだと、IPv6アドレスでのみ接続を受け付けるように設定されることがあり、ローカルネットワーク上の他のデバイスからアクセスできなくなる問題が発生する。この問題を解決するため、/home/Shinobi/conf.jsonという設定ファイルを編集し、ファイルの冒頭に"ip": "あなたのRaspberry PiのIPアドレス"というパラメータを追加する。例えば、"ip": "192.168.20.15"のように、自分のRaspberry Piの実際のIPv4アドレスを記述する。この変更を適用するために、sudo pm2 restart cameraコマンドでShinobiを再起動する。最後に、sudo netstat -tlnp | grep :8080コマンドを実行し、ShinobiがIPv4 (tcp) とIPv6 (tcp6) の両方で接続を受け付けていることを確認する。

Shinobiの初期設定として、まずブラウザからhttp://あなたのRaspberry PiのIPアドレス:8080/superにアクセスし、スーパーユーザーパネルを開く。初期のログイン情報はユーザー名admin@shinobi.video、パスワードadminである。ログイン後、必ず新しい管理者アカウントを作成し、すぐにスーパーユーザーの認証情報を変更してセキュリティを強化する。その後、http://あなたのRaspberry PiのIPアドレス:8080にアクセスし、作成した新しいアカウントでメインインターフェースにログインできる。

次に、カメラからの映像ストリームをShinobiが受け取れる形に整える。これには、GStreamerというメディア処理ツールとその他必要なパッケージをインストールする。これらのツールは、カメラからの生映像をShinobiが解釈できるMJPEG形式のストリームに変換し、ネットワーク経由で送信するために使われる。

その後、ストリーミング用のシェルスクリプトファイル(例:/home/first/streamscript)を作成する。このスクリプトは、Raspberry Piのカメラから映像を取り込み、MJPEG形式にソフトウェアでエンコードし、HTTPで配信する処理を実行する。古いRaspberry Piではハードウェアエンコードが利用できないため、ソフトウェアエンコードを使用することで、画質は控えめになるものの、CPUへの負荷を抑え安定した動作を確保できる。スクリプトを作成したら、chmod +x /home/first/streamscriptコマンドで実行権限を付与する。

作成したストリーミングスクリプトを、Raspberry Piの起動時に自動で開始させ、万が一停止しても自動的に再起動するように設定する。これには、Linuxのサービス管理システムであるsystemdのユーザーサービス機能を利用する。まず、ユーザーサービス用のディレクトリを作成し、その中にshinobi-stream.serviceというサービス設定ファイルを作成する。このファイルには、スクリプトの実行パス、そしてエラー時に5秒間待機してからサービスを再起動する設定などを記述する。

サービス設定ファイルを作成したら、systemctl --user daemon-reloadコマンドでsystemdに新しい設定を読み込ませ、systemctl --user enable shinobi-stream.serviceでサービスの自動起動を有効にし、systemctl --user start shinobi-stream.serviceでサービスを起動する。これらのコマンドはsudoをつけずに実行することに注意する。

さらに重要なステップとして、sudo loginctl enable-linger firstコマンドを実行する。これにより、ユーザーがログインしていなくても、そのユーザーのサービスがRaspberry Piの起動と同時に自動的に開始されるようになる。この設定なしでは、Raspberry Piを再起動した際にストリームが自動で開始されない可能性がある。全てのサービス設定が完了したら、Raspberry Piを再起動し、ストリーミングサービスが正しく自動で開始されるかを確認すると良い。

Shinobiのウェブインターフェースに戻り、監視モニターを追加する。Shinobiダッシュボードの「+」アイコンをクリックし、入力タイプを「MJPEG」に設定する。フルURLパスにはhttp://127.0.0.1:8090と入力する。これは、先ほど作成したストリーミングスクリプトが、Raspberry Pi自身の8090番ポートでMJPEGストリームを配信しているためである。ストリーム設定では、フレームレートを10、幅を320、高さを240に設定し、保存する。設定が正しければ、すぐにShinobiのダッシュボードでカメラのライブ映像が表示されるはずだ。

リソースが限られたRaspberry Piで安定したシステムを運用するためには、パフォーマンスのチューニングが不可欠である。古いRaspberry Piモデルではハードウェアビデオエンコーダーへのアクセスが難しく、映像処理のほとんどがCPUで行われるため、CPU使用率が高くなりやすい。ストリーミングスクリプト内のPIPELINE変数を調整することで、パフォーマンスと画質のバランスを取ることができる。例えば、解像度やフレームレートを低くしたり、JPEGの品質を下げたりすることで、CPUへの負荷を軽減し、システムの安定性を向上させられる。htopなどのツールでCPU使用率を監視しながら、最適な設定を見つけることが重要である。

トラブルシューティングとして、よくある問題とその解決策を理解しておくことは役に立つ。「他のデバイスからShinobiにアクセスできない」場合は、IPv4/IPv6のバインディング問題が考えられるため、Shinobiの設定ファイルで"ip"パラメータが正しく設定されているかを確認する。「ストリームが開始しない」場合は、systemdサービスのログを確認し、カメラ自体が正常に動作するかを直接テストする。「CPU使用率が高い」場合は、ストリーミングスクリプト内の解像度、フレームレート、JPEG品質の設定を見直す必要がある。

最後に、構築したシステムのセキュリティに関する考慮事項も重要である。Shinobiのデフォルトの認証情報はすぐに変更し、強力なパスワードを設定する。また、Shinobiのポート8080をルーターのポートフォワーディング機能を使ってインターネットに直接公開することは避けるべきである。もし外部からのアクセスが必要な場合は、VPNのようなより安全な方法を検討する。ufwなどのファイアウォールを設定し、特定のIPアドレス範囲からのアクセスのみを許可するように制限することも有効である。Raspberry Pi自体のデフォルトパスワードも変更し、定期的にシステムアップデートを行うことで、システム全体のセキュリティを維持することが重要である。

この構築方法は、派手な機能よりも「信頼性」を重視している。古いRaspberry Piのような環境でも、安定して24時間365日動作する監視ソリューションを実現するための鍵は、ソフトウェアエンコーディングの活用、ShinobiのIPv4バインディング問題の修正、systemdサービスによる自動起動と復旧の確立、そしてシステム負荷を考慮したパフォーマンス設定にある。これらの基本的なポイントを押さえることで、実用的な防犯カメラシステムが手に入るだろう。この基礎の上に、将来的に高解像度化や複数カメラの追加、Shinobiの高度な機能への挑戦も可能になる。これは、システムエンジニアとしての実践的なスキルと知識を深めるための、確かな一歩となる。