Show HN: CheapSecurity – 轻量级,自托管的 Linux SBC CCTV
该项目提供了一种轻量级的自托管 CCTV 解决方案,专为基于 Linux 的单板计算机 (SBC) 和标准 USB 摄像头设计。它为家庭监控提供了一种经济实惠、注重隐私的替代方案,确保您的视频数据完全在您的控制之下。 项目理念 隐私优先:通过将所有视频存储在本地,该系统消除了对第三方云订阅的需求,并确保您的数据永不离开您的网络。 经济实惠:利用现有的硬件——如备用的 Linux 板和 USB 摄像头——在没有持续费用的情况下构建一个功能齐全的监控系统。 简约架构:该软件经过优化,可以高效地在低功耗设备上运行,即使在入门级硬件上也能确保高性能。 主要特性 硬件无关性:与广泛的标准 USB 摄像头高度兼容。 资源高效:专门针对基于 Linux 的单板计算机(如 Raspberry Pi、Orange Pi 或类似的 SBC)进行了优化。 数据主权:完全控制您的存储路径、保留政策和访问方式。 简单部署:设计为快速设置和易于维护。 功能 实时 MJPEG 流配有网络仪表板 帧差分运动检测 带有预运动缓冲的自动录制 当运动开始时发送带快照的电子邮件警报 Telegram 集成:录制后自动视频上传 机器人命令:/snapshot, /video <秒>, /help 夜间模式低光增强(软件 CLAHE + 亮度/对比度提升) 录制批量操作:全选、发送到 Telegram、下载 ZIP、删除 通过年龄、总大小和应急低磁盘清理进行存储清理 systemd 自动启动就绪 许可证:GNU AGPLv3 要求 Python 3.10 或更新版本 带 V4L2 支持的 OpenCV(见下面的安装选项) USB 摄像头(默认是 /dev/video0) 可选:用于 Telegram 通知的 Telegram bot 令牌 可选:用于电子邮件警报的 SMTP 凭据 快速开始 验证 OpenCV 是否可用:python3 -c " import cv2; print(cv2.__version__) " 如果未安装 OpenCV,您有两个选项: 选项 A — 使用系统 OpenCV 包(推荐用于如 Odroid XU4 的 ARM 板,在该板上,通常会针对该板优化预构建系统包)。 选项 B — 通过 pip 安装 OpenCV(在 x86/amd64 机器或没有系统包时方便)。 使用 opencv-python-headless,因为该应用不需要 GUI。 创建并激活虚拟环境并安装应用: 选项 A:系统 OpenCV(推荐用于 ARM) 这创建一个可以看到系统 site-packages 的 venv,因此系统 cv2 在 venv 中可用。 cd $HOME/CheapSecurity python3 -m venv venv --system-site-packages source venv/bin/activate pip install -e . 选项 B:通过 pip 安装所有内容 如果您没有系统 OpenCV 或更喜欢自包含的 venv,请使用此选项。 cd $HOME/CheapSecurity python3 -m venv venv source venv/bin/activate pip install opencv-python-headless pip install -e . 注意:在某些较旧的 ARM 板上,可能没有 pip opencv-python-headless wheel 或可能很慢。如果发生这种情况,请从您的发行版的包管理器中安装 OpenCV,然后使用选项 A。 找到您的摄像头设备(通常是 /dev/video0): v4l2-ctl --list-devices 将 config.json.example 复制到 config.json 并进行编辑: cp config.json.example config.json nano config.json 设置摄像头设备、分辨率和帧速率 填写 SMTP 凭据(如果您希望收到电子邮件警报) 填写 Telegram bot 令牌和聊天 ID(如果您希望上传到 Telegram) 安全性:config.json 在 .gitignore 中列出,绝不可提交。它包含密码和令牌。始终编辑 config.json,而不是 config.json.example。如果您添加新的设置,请更新两个文件,以便示例保持同步。 运行应用: ./venv/bin/python -m cheapsecurity.app 在浏览器中打开仪表板:http://<odroid-ip>:5000 配置 编辑 config.json: 章节 键 描述 camera device V4L2 设备索引(0 = /dev/video0) camera width, height, fps 捕获分辨率和帧速率 camera night_mode 启用低光增强 camera night_mode_fps 夜间模式下的目标 FPS(摄像头可能会忽略此项) camera night_mode_gain 夜间模式下的目标模拟增益(摄像头可能会忽略此项) camera night_mode_brightness 夜间模式下的亮度提升 camera night_mode_contrast 夜间模式下的对比度提升 motion threshold 像素差异阈值(0-255) motion min_area 触发运动的最小轮廓面积(全分辨率像素) motion cooldown_seconds 停止运动后继续录制的时间 motion scale 运动检测的下采样因子(节省 CPU) recording dir 视频保存位置 recording max_duration_seconds 一段视频的最大长度 recording pre_buffer_seconds 视频片段中包含的运动前几秒 recording codec 优先使用的四字节编码(MJPG 用于低 CPU,mp4v 用于较小的文件) notifications enabled 运动时发送电子邮件警报 notifications smtp SMTP 服务器、端口、用户名、密码、TLS notifications from, to, subject 电子邮件通知的发件人、收件人和主题
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡