菅平高原 ゆたか山荘周辺の写真

長野県上田市菅平高原にある「ゆたか山荘」周辺を定点観測しています。

システム構成

本システムの構成について説明します。そもそもが趣味の範囲なのでいかに費用をかけずに実現できるかを最重要ポイントとしました。

ネットワークについて

菅平側と自宅側で2つのインターネット回線を使用しています。

  1. 菅平側

    回線、プロバイダは上田ケーブルビジョン。プランの関係でプライベートアドレスが付与されているため、菅平側でWebサーバーの公開ができません。別途ルーターを設置しWiFi環境を構築しています。

  2. 自宅側

    回線はFlets光、プロバイダはリコーひかり。ルーターにてポート転送を行っており、外部からの接続は指定されたサーバーへ転送しています。

ドメインについて

DDNSにて運用しています。自宅には他のドメインも存在しているためProxyサーバーを立てています。

  1. MyDNSでサブドメインを取得
  2. 自宅サーバーから定期的にMyDNSへ接続
  3. 自宅LAN内にProxyサーバーを立てる
  4. 外部からの接続があればProxyサーバーからAPPサーバーへ転送

サーバーについて

以下4つのサーバーで稼働しています。

  • カメラサーバー(写真を撮影)
  • ファイルサーバー(NAS 画像を保存)
  • Webサーバー(画像を表示)
  • APPサーバー(ホームページを表示)

カメラサーバー

Raspberry PiにUSBカメラを接続して画像を撮影し、ファイルサーバーに送信するまでを行っています。手順としては以下の通りです。

  1. USBカメラの最大画質で撮影
  2. MD5の値をファイル名に付与
  3. 最大画質の画像から縮小版を作成
  4. 最大画質と縮小版をファイルサーバーへ送信

ファイルサーバー

撮影された画像を保存しています。NASの共有フォルダをWebサーバーにマウントしています。主な手順は以下の通りです。

  1. 撮影日、ホスト名、デバイス名ごとにディレクトリを分ける。

    ex) 2025年3月4日、raspberrypi32(ホスト名)、video0(デバイス名)だった場合

    2025/03/04/raspberrypi32/video0

    に画像が保存される。

Webサーバー

保存された画像を表示したり、画像パスのリストを生成しています。主な手順は以下の通りです。

  1. NASの共有フォルダをマウント
  2. カメラサーバーから画像を受信し、保存
  3. nginexを使用して画像表示用ドメインを展開
  4. 定時に画像パスのリストを生成

APPサーバー

ホームページを表示するサーバーです。以下の手順でデータを更新しています。

  1. Webサーバーで生成された画像パスのリストをDBに取り込む
  2. DBに保存された画像パスを使用し、任意のカメラ、日時の画像を表示
created by ゆたか山荘