Show HN:CheapSecurity —— Linux SBC向け軽量・セルフホスト型CCTV

2026/07/27 0:53

Show HN:CheapSecurity —— Linux SBC向け軽量・セルフホスト型CCTV

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

以下の改善版は、ハードウェア固有のインストール手順における粒度を向上させ、インターネットへの公開に関する展開セキュリティのニュアンスを明確にしています。

Improved Summary: 本文は、Linux のシングルボードコンピュータ(SBC)および USB ウェブカメラ向けに開発された、プライバシー重視で軽量な CCTV ソフトウェアである CheapSecurity を紹介しています。本ソフトウェアはクラウドへの依存よりもローカルデータストレージを優先しており、Python および OpenCV を利用することで低電力デバイス向けの費用対効果の高いソリューションを提供し、GNU AGPLv3 ライセンスの下で映像データの完全な制御を確保します。ソフトウエアはハードウェア非依存の展開を特徴とし、具体的なインストールパスとして、ARM ボード向けに Option A(システム OpenCV)、x86/amd64 建築向けに Option B(pip)を提供しています。主な機能には、ライブ MJPEG ストリーミング、設定可能な閾値を持つ運動検出、ナイトモードの強化、および年齢またはディスクサイズに基づいた自動化されたクリーンアップルーチンが含まれます。ユーザーは運動イベント後に電子メールへのスナップショット送信、あるいは Telegram への動画アップロードを通じてアラートを受け取ることができます。本番環境での使用においては、ローカルアクセスをポート 5000 でサポートするとともに、HTTPS および認証が付与された信頼できるリバースプロキシを介してインターネットへの公開に対応しています。重要なセキュリティ対策としては、機密情報(ボットトークンや SMTP 認証情報など)を含む

config.json
ファイルをバージョン管理から除外することがあります。結局のところ、CheapSecurity は小規模な企業および個人に対し、再課金なしでカスタマイズ可能で安全な監視ネットワークを実現し、真のデータ主権を獲得することを可能にします。

本文

CheapSecurity プロジェクト概要

Linux ベースのシングルボードコンピューター(SBC)および USB ウェブカメラ向けに設計された、軽量なセルフホスト型 CCTV ソリューションです。映像データを完全にローカル管理し、低コストかつプライバシーを重視した家庭用監視システムの代替案となります。

プロジェクトの理念

  • プライバシー第一: 全データはローカル保存のため、サードパーティクラウドサブスクリプション不要
  • 費用対効果: 既存の廃棄 Linux ボードや USB カメラを活用し、リカレントコストなしでシステム構築。
  • ミニマリストなアーキテクチャ: 低消費電力での動作最適化を実現。

メインの特徴

  • ハードウェア非依存: 幅広い標準的な USB ウェブカメラとの互換性が高い。
  • リソース効率: Raspberry Pi や Orange Pi などの SBC で効率的に動作。
  • データ主権: ストレージパス、保存ポリシー、アクセス制御を完全に行える。
  • シンプルな展開: 素早いセットアップとメンテナンスが可能。

機能詳細

  • Web ダッシュボードでのライブ MJPEG 配信
  • フレーム差分による動き検出
  • 動き発生前の事前バッファを確保した自動録画
  • 動き検出時、スナップショット付きメール通知
  • Telegram インテグレーション:
    • 動き検出後の自動ビデオアップロード
    • ボットコマンド:
      /snapshot
      /video <秒数>
      /help
  • ナイトモード用低照度強調処理(CLAHE + Brightness/Contrast 調整)
  • 録画のバッチ操作(ZIP ダウンロード、削除等)
  • ディスク容量管理(年齢ベース、サイズベース、緊急時対応)
  • systemd での自動起動
  • GNU AGPLv3 ライセンス

要件事項

  • Python 3.10 以上
  • V4L2 サポート付き OpenCV
  • USB ウェブカメラ(デフォルト:
    /dev/video0
  • オプション: Telegram ボットトークン、SMTP クレデンシャル

クイックスタート

OpenCV の確認とインストール

まず、OpenCV が利用可能か確認します。

python3 -c "import cv2; print(cv2.__version__)"

インストールされていない場合は以下から選択してください。

  • オプション A: システムパッケージを使用(ARM ボード推奨)
    • Odroid XU4 など、プリビルトパッケージが最適化されているボード向け。
  • オプション B: pip を介してインストール(x86/amd64 推奨)
    • GUI が不要なため
      opencv-python-headless
      を使用。

仮想環境の作成とアプリのインストール

方法 A: システム OpenCV を使用 venv 内にシステムの

cv2
を読み込ませるため、システムサイトパッケージを読み込みます。

cd $HOME/CheapSecurity
python3 -m venv venv --system-site-packages
source venv/bin/activate
pip install -e .

方法 B: pip 経由で完結な環境を作成

cd $HOME/CheapSecurity
python3 -m venv venv
source venv/bin/activate
pip install opencv-python-headless
pip install -e .

注意: 一部の古い ARM ボードでは、

opencv-python-headless
のホイールが利用できないか動作が遅いため、その場合はシステムパッケージ(方法 A)を使用してください。

設定の準備

  1. Web カメラデバイスの確認: 通常は
    /dev/video0
    です。
  2. 設定ファイルのコピーと編集:
    cp config.json.example config.json
    nano config.json
    
    • カメラデバイス、解像度、フレームレートの設定
    • メール通知用 SMTP クレデンシャルの入力
    • Telegram 通知用 ボットトークンとチャット ID の入力

セキュリティ注意:

config.json
.gitignore
で管理されているため、絶対に関係ありません。パスワードやトークンは含んでおり、必ず
config.json.example
を編集せず、既存の設定ファイルを更新してください。

  1. アプリの実行:

    ./venv/bin/python -m cheapsecurity.app
    
  2. ブラウザでのアクセス: ダッシュボード URL にアクセスします。

設定 (
config.json
)

主要な設定項目一覧です。

セクションキー説明
cameradeviceV4L2 デバイスインデックス(0 = /dev/video0)
camerawidth, height, fps撮影解像度とフレームレート
cameranight_modeロー照度強調を有効化
cameranight_mode_*ナイトモードの詳細設定(FPS、ゲイン、明るさ、コントラスト)
motionthresholdピクセル差分閾値(0-255)
motionmin_area動きトリガー用の最小コンタクト面積(ピクセル単位)
motioncooldown_seconds動き終了後の継続録画時間
recordingdirビデオ保存先ディレクトリ
recordingcodecFourCC コーデック(MJPG: 低 CPU, mp4v: 小容量)
notificationsenabledメール通知の有効化
notificationssmtpSMTP サーバー、ポート、ユーザー名、パスワード
telegrambot_token, chat_idTelegram Bot API の認証情報
storagemax_age_days古い録画を削除する日数(デフォルト 3 日)
storagemax_size_gb容量超過時の自動削除閾値
webhost, portダッシュボードのバインドアドレスとポート
web.authusername, passwordHTTP ベーシック認証情報

Telegram セットアップ

1. ボットの作成

Telegram を開き、

@BotFather
にメッセージを送ります。
/newbot
を選択し、表示名とユーザー名を設定してトークンを取得します。

2. チャット ID の取得

ボットとプライベートチャットを作成後、以下の API エンドポイントにアクセスして確認します。

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates

レスポンス内の

"chat":{"id":123456789}
の部分の
id
がチャット ID です。グループの場合は ID は負の値になります。

3. アプリ設定と再起動

取得したトークンと ID を

config.json
に設定後、サービスを再起動します。

sudo systemctl restart cheapsecurity@$(whoami).service

ボットコマンド:

  • /snapshot
    — カメラ画像の受信
  • /video 10
    — 指定秒数のビデオ録画と送信(例:10 秒)
  • /help
    — コマンド一覧表示

動き優先: システムがすでに動き検出により録画中の場合、手動で

/video
を発令しても中断されません。

メール通知設定

Gmail や Google Workspace の場合、通常のパスワードは使用不可です。App Password を作成する必要があります。

  1. Google アカウントで2 段階認証を有効化。
  2. アプリ用パスワードを作成(
    https://myaccount.google.com/apppasswords
    )。
    • アプリ種別: Mail
    • デバイス名: Other (Custom name) に「CheapSecurity」と入力。

config.json
notifications.smtp.password
には、この App Password(スペースなし)を入力します。

複数の宛先へ送信

"to": [
  "you@gmail.com",
  "family@example.com"
]

ナイトモード

ダッシュボードから切り替え可能です。以下の要素を組み合わせ、低照度環境での可視性を向上させます。

  • ソフトウェア強化(CLAHE)
  • カメラの明るさ/コントラストブースト

重要: 多くの USB ウェブカメラは V4L2 経由で ISO/ゲイン制御を提供しないため、これらの設定は無視される可能性があります。真の夜間監視にはIR 感応型カメラと IR イリミネータが必要です。

ストレージとクリーンアップ

  • 自動削除:
    max_age_days
    経過後や
    max_size_gb
    超え時に最古ファイルを削除(起動時ではなく定期タスクで行うことが推奨)。
  • 緊急時対応: ディスク空き容量が
    emergency_free_space_gb
    を下回ると、新しいクリップ開始前に最古の録画を
    emergency_delete_count
    分削除します。

ウェブインターフェース(ダッシュボード)

  • ステータスペネル: 解像度、FPS、録画状態、動き検出状況を表示。
  • 設定トグル: ナイトモード、メール通知、Telegram アップロード、認証の有効化/無効化。
  • 録画リスト管理: チェックボックス付きで以下のバッチ操作が可能。
    • すべて選択
    • Telegram へ送信
    • ZIP でダウンロード
    • 削除

本番環境へのデプロイ

セキュリティ警告: Flask 開発サーバーはインターネット公開に適していません。Gunicorn とリバースプロキシ(HTTPS+認証)を使用してください。

Gunicorn のインストールと実行

cd $HOME/CheapSecurity
source venv/bin/activate
pip install -e .

systemd サービスファイルを作成し、起動します。

sudo cp cheapsecurity.service /etc/systemd/system/cheapsecurity@.service
sudo systemctl daemon-reload
sudo systemctl enable --now cheapsecurity@$(whoami).service

この設定により、Gunicorn は

0.0.0.0:5000
にバインドされ、1 ワーカーで動作します(カメラ単一プロセスのため)。

セキュリティ: 本番公開時は、必ず Gunicorn の前にHTTPS と認証付きリバースプロキシを配置してください。

プロジェクト構造

CheapSecurity/
├── src/cheapsecurity/      # Python パッケージ
│   ├── app.py              # 開発用ランチャー
│   ├── cctv.py             # 核心機能(検出、録画、通知)
│   ├── web.py              # Flask ダッシュボード
│   └── diagnose.py         # デバッグツール
├── tests/                  # テストスイート
├── config.json             # ローカル設定(絶対に関係ありません!)
├── config.json.example     # 例設定テンプレート
├── pyproject.toml          # パッケージメタデータ
├── cheapsecurity.service   # systemd サービスファイル
└── LICENSE                 # GNU AGPLv3

ライセンス

本プロジェクトは GNU Affero General Public License v3.0 (AGPLv3) の条件下でライセンスされています。

同じ日のほかのニュース

一覧に戻る →

2026/07/27 3:23

ヒパーカードとクラシックの macOS を継承・発展させたプラットフォーム「Decker」

## Japanese Translation: Decker は、クリエイターが標準的な Web ブラウザ内でインタラクティブなドキュメント、ゲーム、デジタル雑誌を構築できるようにする革新的でオープンソースのマルチメディアプラットフォームです。クラシックな MacOS の美意識や HyperCard の伝統に触発され、深いUndo履歴、バッチ編集、音声およびピクセルアートのサポートなど、モダンな機能を備えたノスタルジックなデザインの独自の世界観を提供します。その際立った特徴は、スタンドアロンの HTML 出力形式であり、プロジェクトが完了すると、視聴者が特定のソフトウェアやプラグインをインストールする必要なく、あらゆるデバイス上で自動的に実行されます。 プラットフォームは独自のスクリプト言語「Lil」を導入しており、統合された SQL 風のクエリによる複雑なロジックのサポート、クリップボードシステムを通じてアクセス可能なカスタムウィジェット、暗黙のスカラーベクトル演算などの機能を提供します。広告、テレメトリー、ゲーミフィケーションを徹底的に排除することでユーザーのプライバシーを最優先し、MIT オープンソースライセンスの下で運用されています。さらに、行ベースのテキスト形式のソースフォーマットにより、Git や SVN などのバージョン管理ツールとのシームレスな統合が可能となっています。コミュニティからの継続的なサポート、年間ゲームジャム、Linux/BSD での将来リリースへの計画、そして無頭環境での実行を可能にするスタンドアロンインタプリタ「Lilt」を通じて、Decker は多様なクリエイティブ分野におけるモジュラー設計と知識共有が容易な強力なツールキットを提供しています。

2026/07/27 2:58

詳細を引き渡すのは画策にはなりません。

## 日本語翻訳: Docket は、人工知能の代替品ではなく、深い人間活動にとって不可欠な専用メモツールであると位置付けています。中心的なメッセージは、真の専門知識と新しい洞察は、技術が模倣できない詳細への細やかな注意力に依存しており、現実をより密接に検討するにつれ、状況はより複雑でニュアンス豊かになり、そのため深層の個人的知識なしに自動化システムにのみ頼ると、能動化ではなく非効率に終わるということです。 本テキストは、タスクを機械に任せるだけで安易な結果が得られるという夢論に対して反発し、熟達には自動化からの思考のパラダイムシフトであり、特定の詳細への集中した関与へと向かう必要があると主張しています。この人間専門知識が欠如すると、ユーザーは複雑な現実を効果的にナビゲートする能力を失います。したがって、企業および個人は、高品質な結果に必要な認知的努力をサポートし、代替するのではなく、Docket のようなツールを最優先する必要があります。結局のところ、良い結果を獲得するには、人間が具体的な分析に直接関与することが求められ、技術が私たちの批判的思考の能力を減らすのではなく援助するように確保する必要があります。

2026/07/27 5:31

プラズマトンネルが、死にゆく人工衛星が地球へ落ちるメカニズムを明らかに

## Japanese Translation: シュトゥットガルト大学のドイツ研究者らは、大気圏再突入時に人工衛星の破片が必ずしも完全には燃え尽きないことを示し、従来の安全上の前提に疑問を投げかけた。5,000–8,000 °C の高温プラズマ風洞および約 3 km/s の速度で電気アークを使用することにより、インコネルのような耐久性のある材料は炎天下の下降にも耐えることが、アルミニウム合金(例:Al-7075)は溶けることが、100 グラムのシリンダー実験で実証された。これには、2024 年 3 月、ISS のインコネル製バッテリーパレットが再突入条件を生き延びてフロリダの家屋の屋根を損傷させたという出来事が裏付けられている。現在地球軌道上を運行中および無効となっている人工衛星は約 18,000 に及ぶとされ、今後計画される打ち上げも数百機以上に達するため、現在の風洞能力では実規模の衛星破壊を再現することができず、重要な知識のギャップが生じている。破壊の大部分は標高 60–80 km の間で起こり、空中観測では酸化アルミニウムなどの排出物が検出されており、これが大気オゾンの減少に寄与し、上部大気の熱平衡を変化させる可能性がある。欧州で定められた再突入時の生存確率 ≤1/10,000 という規制はもはや十分ではなく、地上へ到達する人間由来の物体の増加量を管理し、インフラストラクチャおよび惑星の健康を保護するためのより強力な安全プロトコルの導入を促している。

Show HN:CheapSecurity —— Linux SBC向け軽量・セルフホスト型CCTV | そっか~ニュース