Shinobi

来自 ArchWiki

Shinobi 是一个现代的开源 NVR (网络视频录像机),使用 Node.js 编写。对于个人或教育用途,Pro 版本不需要许可证密钥。如果计划用于商业目的,请参阅上游文档

注意: 支持 h.265 的摄像头无法在 Shinobi 仪表板的浏览器中查看。录制(复制视频)仍然有效,但如果目的是使用浏览器查看,则这是不可能的。可以使用移动应用程序查看这些流。

安装

安装 shinobi-gitAUR

注意: Shinobi 将以非特权用户身份运行,而不是 root 用户,这与上游期望 node 运行的方式一致。因此,施加了一些限制
  1. 从 webUI 安装插件将不起作用。如果需要这些插件,请以 root 用户身份手动启动服务器。
  2. webUI 中的重启功能将不起作用,因为没有使用 pm2
  3. 绑定到 <1000 的端口将不起作用,因为只有 root 用户才能这样做。这仅在使用 FTP 或 SMTP 接收运动/物体检测时相关。请参阅#来自摄像机的运动/物体检测,了解几种解决方法。

配置

安装并设置 MariaDB 服务器

有关初始设置,请参阅MariaDB#安装,然后使用以下命令为 Shinobi 创建数据库

# mysql
> CREATE DATABASE ccio; flush privileges; \q

创建 Shinobi 的用户 majesticflame 并授予其对新数据库的所有权限

# mysql < /usr/share/shinobi/sql/user.sql
注意: shinobi-gitAUR 依赖于 mariadb,因此 MariaDB 将与 Shinobi 安装在同一服务器上。但是,如果您手动安装 Shinobi 或在没有 mariadb 依赖项的情况下安装了 Shinobi,并且 MariaDB 安装在单独的服务器上,那么您将需要复制和修改 /usr/share/shinobi/sql/user.sql,例如,如果您的 LAN IP 是 192.168.9.100
$ sed 's/127.0.0.1/192.168.9.100/g' < /usr/share/shinobi/sql/user.sql > /tmp/user.sql

然后使用 scp 或任何其他机制将文件复制到您的 MariaDB 服务器,然后运行修改后的 sql 文件

# mysql < /tmp/user.sql

最后,使用表填充数据库

# mysql ccio < /usr/share/shinobi/sql/framework.sql

设置 Shinobi

注意: 如果 MariaDB 在单独的服务器上,请编辑 /etc/shinobi/conf.json 并替换 db.host 下的 127.0.0.1

根据需要自定义 /etc/shinobi/conf.json

可以选择相应地设置邮件部分,并将 cron 密钥替换为注释中指示的随机内容。

可以选择通过编辑 /etc/shinobi/super.json 并将 "pass" 的值替换为 md5sum 哈希密码来更改超级管理员密码。像这样生成一个

$ echo -n PASSWORD | md5sum

启动启用带有 shinobi.target 单元的 shinobi。shinobi.target 将启动/停止 shinobi-camera.serviceshinobi-cron.service。浏览至 https://127.0.0.1:8080/super 以执行初始设置,包括创建用户。请参阅官方配置指南以获得详细的演练。完成后,浏览至 https://127.0.0.1:8080 并以非管理员用户身份登录。

注意: 如果在单独的计算机上,请将 localhost 替换为 LAN IP,并将 /etc/shinobi/conf.jsonip 下的 127.0.0.1 替换为 LAN IP。

Android 和 iOS 应用

适用于 Android 和 iOS 的 Shinobi 移动应用程序可通过公共测试获得。

技巧和窍门

摄像机视频和 Shinobi 之间的延迟

摄像机和 Shinobi 仪表板之间存在一定程度的滞后或延迟是正常的,并且取决于流类型和视频设置。请参阅上游文档,了解有关最大限度减少延迟的一些技巧。

Shinobi 原生的运动/物体检测

Shinobi 可以监视视频源,并且仅在检测到运动时才录制。原生支持全帧或触发区域。请参阅上游文档的 setting-up-motion-detection 文章。

来自摄像机的运动/物体检测

一些摄像机制造商在其摄像机固件中提供原生运动/物体检测。当摄像机检测到运动时,Shinobi 可以接受外部事件来触发录制,并且这些事件通过 SMTPFTP 进行通信。

注意: 如果摄像机检测到运动和 Shinobi 触发视频开始之间存在延迟,则可能需要将分段长度变量调整为更高的值。要测试这一点,只需在有人触发运动时观看直播流。观察摄像机时钟上触发运动的时间,并将其与视频进行比较。设置更高的值并再次测试。

由于我们的软件包不是以 root 用户身份运行 node,因此它无法使用这些服务的本机端口(STMP 为 25,FTP 为 21)。

建议只需在 Shinobi 和摄像机上为这些服务选择一个高于 1,000 的端口。

如果硬性要求使用本机端口,请为 shinobi-camera.service 使用drop-in snippet

[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE

资源