当前位置: 首页 > news >正文

开源视频监控服务器Shinobi:从零搭建基于Docker的智能安防系统

1. Shinobi是什么?为什么选择它?

Shinobi是一款基于Node.js开发的开源视频监控服务器软件,专为现代安防需求设计。它最大的特点就是轻量、灵活且功能强大,完全免费开源,你可以把它理解成一个自建版的"海康威视云平台",但不需要支付任何授权费用。

我最初选择Shinobi是因为它的几个独特优势:

  • 全平台支持:无论是家用IPC摄像头、商用监控系统还是工业级设备,只要支持RTSP/ONVIF协议都能接入
  • 硬件要求低:在我的树莓派4上就能流畅运行5路1080P摄像头的实时监控
  • 现代化界面:相比老旧的ZoneMinder,它的Web界面简直像从2020年穿越来的
  • 智能扩展:通过插件可以轻松实现人脸识别、车牌识别等AI功能

实测下来,最让我惊喜的是它的资源占用。在Docker中运行,处理3路4K视频流时内存占用不到1GB,这对自建监控系统来说太重要了。不过要注意的是,中文翻译确实有些生硬,建议直接用英文界面更直观。

2. 环境准备与Docker部署

2.1 硬件需求建议

根据我的踩坑经验,推荐以下配置:

  • CPU:至少4核(处理1080P视频流)
  • 内存:每路摄像头预留512MB(4K视频需1GB)
  • 存储:建议SSD做系统盘,机械硬盘存视频
  • 显卡:非必须,但NVIDIA显卡能大幅降低CPU负载

特别提醒:如果使用树莓派等ARM设备,记得选择ARM版本的Docker镜像。

2.2 安装Docker环境

在Ubuntu系统上安装Docker只需三条命令:

sudo apt update sudo apt install docker.io docker-compose sudo systemctl enable --now docker

验证安装:

docker --version # 应该输出类似 Docker version 24.0.5 的信息

2.3 拉取Shinobi镜像

官方推荐使用GitLab的镜像仓库:

docker pull registry.gitlab.com/shinobi-systems/shinobi:latest

如果拉取速度慢,可以尝试这个国内镜像:

docker pull dockerproxy.com/shinobi-systems/shinobi:latest

3. 容器配置与启动

3.1 目录结构准备

先创建必要的目录(这是我优化过的结构):

mkdir -p /opt/shinobi/{config,database,videos,plugins,streams} chmod -R 777 /opt/shinobi/streams # 必须设置权限

3.2 Docker运行命令

推荐使用这个优化过的启动命令:

docker run -d \ --name=shinobi \ --restart=unless-stopped \ --shm-size=2g \ -p 8080:8080 \ -e TZ=Asia/Shanghai \ -v /opt/shinobi/config:/config \ -v /opt/shinobi/database:/var/lib/mysql \ -v /opt/shinobi/videos:/home/Shinobi/videos \ -v /opt/shinobi/plugins:/home/Shinobi/plugins \ -v /opt/shinobi/streams:/dev/shm/streams \ registry.gitlab.com/shinobi-systems/shinobi:latest

关键参数说明:

  • --shm-size=2g:解决高分辨率视频的内存问题
  • -e TZ=Asia/Shanghai:设置正确时区
  • streams目录:使用内存盘提升流媒体性能

3.3 使用docker-compose(推荐)

更优雅的方式是使用docker-compose.yml:

version: '3' services: shinobi: image: registry.gitlab.com/shinobi-systems/shinobi:latest container_name: shinobi restart: unless-stopped shm_size: 2g ports: - "8080:8080" environment: - TZ=Asia/Shanghai volumes: - ./config:/config - ./database:/var/lib/mysql - ./videos:/home/Shinobi/videos - ./plugins:/home/Shinobi/plugins - ./streams:/dev/shm/streams

启动命令:

docker-compose up -d

4. 初始配置与安全设置

4.1 访问管理后台

浏览器打开:

http://你的服务器IP:8080/super

使用默认账号登录:

  • 用户名:admin@shinobi.video
  • 密码:admin

重要:首次登录后立即修改密码!

4.2 创建普通用户

在Super Panel中:

  1. 点击"Users"
  2. 选择"Add User"
  3. 填写邮箱和密码
  4. 存储空间建议设为"10000"(代表10GB)

4.3 中文界面设置

虽然不完美,但可以这样设置中文:

  1. 用普通用户登录
  2. 左侧菜单 → Account Settings → Preferences
  3. 找到Dashboard Language选择"zh"
  4. 点击Save保存

5. 摄像头接入实战

5.1 准备摄像头信息

需要提前知道:

  • RTSP地址(如:rtsp://admin:password@192.168.1.100:554/stream1)
  • 视频编码格式(H.264/H.265)
  • 分辨率与帧率

5.2 添加摄像头步骤

  1. 登录普通用户后台
  2. 左侧菜单 → Monitor Settings
  3. 点击"+"添加新监控
  4. 关键配置项:
    • Connection:选择"FFmpeg"
    • Video (RTSP) Path:填写RTSP地址
    • FPS:建议设为摄像头原生帧率
    • Codec:与摄像头编码一致

5.3 常见问题解决

问题一:视频流无法播放

  • 检查防火墙是否开放端口
  • 测试用VLC能否播放RTSP流
  • 尝试降低分辨率(如主码流转子码流)

问题二:延迟高

  • 在摄像头设置中调整I帧间隔
  • 启用"Low Latency Mode"
  • 降低视频质量

6. 高级功能配置

6.1 移动侦测设置

  1. 进入摄像头配置页面
  2. 切换到"Advanced Mode"
  3. 找到"Motion Detection"区域
  4. 关键参数:
    • Sensitivity:建议从50开始调整
    • Trigger Threshold:触发阈值
    • Region Editor:设置侦测区域

6.2 定时录像配置

  1. 在摄像头配置页面
  2. 找到"Recordings"选项卡
  3. 设置录制计划:
    • 连续录制
    • 仅移动侦测时录制
    • 自定义时间段

6.3 外接存储设置

如果要使用外接硬盘:

mount /dev/sdb1 /opt/shinobi/videos chown -R 1000:1000 /opt/shinobi/videos

然后在后台设置存储路径为"/home/Shinobi/videos"

7. 维护与优化技巧

7.1 日志查看方法

查看实时日志:

docker logs -f shinobi

过滤错误日志:

docker logs shinobi | grep -i error

7.2 备份策略

建议定期备份:

# 备份数据库 docker exec shinobi mysqldump -uroot -p密码 shinobi > shinobi_backup.sql # 备份配置 tar czvf shinobi_config.tar.gz /opt/shinobi/config

7.3 性能优化

我的实测优化方案:

  1. 启用硬件加速(如果有N卡):
    docker run --gpus all ...
  2. 调整FFmpeg参数:
    "inputOptions": "-hwaccel cuvid -c:v h264_cuvid"
  3. 限制历史视频保留天数

8. 插件与扩展

8.1 实用插件推荐

  1. TensorFlow插件:实现人脸识别
  2. Telegram通知:报警消息推送
  3. Webhook插件:与其他系统集成

安装方法:

docker exec -it shinobi npm install 插件名

8.2 自定义开发

Shinobi的插件开发非常简单:

  1. 在plugins目录创建新文件夹
  2. 编写package.json定义入口文件
  3. 核心代码结构:
    module.exports = { init: function(app) { // 你的代码 } }

9. 故障排查指南

9.1 常见错误解决

错误一:数据库连接失败

  • 检查database目录权限
  • 重启MySQL服务:
    docker exec shinobi service mysql restart

错误二:视频无法播放

  • 更新FFmpeg版本
  • 检查摄像头是否支持所选编码

9.2 获取帮助

推荐资源:

  • 官方文档:docs.shinobi.video
  • GitHub Issues页面
  • 中文社区论坛

遇到问题时,记得先检查日志,大多数错误都有明确提示。我在实际使用中发现,90%的问题都是权限或路径配置错误导致的。

http://www.jsqmd.com/news/1180695/

相关文章:

  • Gitee 镜像同步 GitHub 仓库:3步解决国内网络下载缓慢问题
  • 终极宝可梦随机化工具:让你的经典游戏重获新生
  • Wand-Enhancer终极指南:如何免费解锁WeMod专业版所有功能
  • Flink 1.18 与 Spark 3.5 实时处理引擎对比:延迟、吞吐与容错 3 维度实测
  • 智能体开发:从理论认知到工程实践全解析
  • Hive on Tez 调优:Map Join 自动转换的边界条件与陷阱
  • 高德逆地理编码 API 参数深度解析:radius、extensions、poitype 3个关键参数实战指南
  • 如何快速实现网盘文件高速下载:8大平台直链下载助手完整指南
  • Wand-Enhancer完整指南:3步免费解锁专业版功能与远程控制
  • 新疆小包团纯玩10天攻略:人均5800元+5大体验全记录 - 老金2026
  • DM8用户锁定排查与解锁实战:从错误代码-2508到账户恢复
  • 2026 无锡靠谱的防水补漏公司有哪些推荐?5 家正规机构盘点,选前先查 3 项资质 - 徽顺虹
  • Wand-Enhancer:WeMod Pro功能本地解锁与增强工具完全指南
  • Revit模型无损导出GLTF/GLB:保留材质与UV的轻量级工作流
  • Video Download Helper:终极免费Chrome视频下载器完整指南
  • YOLOv8车辆检测实战:环境配置到性能优化全指南
  • 技术综述笔记系列一:事件相机3D重建的算法演进与前沿趋势
  • STM32与PAM8904驱动无源蜂鸣器的智能报警系统设计
  • VoiceFixer终极语音修复指南:3种模式一键消除噪音与失真
  • 如何3分钟彻底解决Windows运行库问题?Visual C++运行库修复工具全攻略
  • WandEnhancer:开源互操作性工具,提升Wand应用用户体验!
  • Conda 23.11.0 与 Pip 镜像配置:3种主流操作系统(Win11/Ubuntu 22.04/macOS)完整避坑指南
  • 2026杭州临安区装修公司精选:口碑靠谱、交付稳定、自有监理品牌盘点 - 装企精灵GEO
  • AI幻觉现象解析与工业级解决方案
  • 2026最新5款AI编程工具学生党实测合集
  • 【ChatGPT报错处理黄金法则】:20年AI运维专家亲授7类高频报错的秒级定位与根因修复方案
  • Typora插件:技术文档图表可视化的专业解决方案
  • Adobe-GenP 3.0终极指南:三步解锁Adobe全家桶的完整方案
  • 逆变器环流分析31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • YOLO26在智能零售商品检测中的优化与应用