家用摄像头告别云存储费!飞牛 NAS + Docker 玩转 EasyNVR

image-20251218155131232

前言

在现代生活中,很多人家里多少都会装 1~2 个摄像头。 本来是为了看看家里情况、照看老人和孩子,结果用着用着才发现——真正想看回放的时候,却要额外掏钱买云存储。刚装的时候,大多数人都会先插一张内存卡,想着本地存点录像就够用了。 但实际用下来才发现,内存卡容量有限,录像留不了几天,而且长时间循环写入也容易出问题。 等哪天真需要翻回之前的录像,要么已经被覆盖了,要么卡直接读不出来,这时候厂商往往就会提示你——开通云存储,录像才能保存得更久、更稳定

如果你手上刚好有一台 NAS,其实完全没必要走到这一步。

与其反复折腾内存卡,或者长期订阅云存储,不如把这些录像直接交给 NAS 来保存。这样就不用折腾内存卡,也不用交云存储费,把所有摄像头的录像稳定地存到自己家里的 NAS 里

这篇文章,就是我利用飞牛 NAS,通过 Docker 部署 EasyNVR,把家中摄像头录像统一存进本地 NAS 的一次实践记录。

1 什么是EasyNVR?

image-20251218105203364

EasyNVR 是一款专业的软件型网络录像机(Network Video Recorder,NVR),用于集中管理和录像多路网络摄像头的视频流。它可以替代摄像头厂商提供的云存储服务,将录像统一存储在本地 NAS 或服务器上,实现完全的本地化管理。

EasyNVR 的核心功能包括:多摄像头接入,支持 RTSP、RTMP、ONVIF 等标准协议,并能够接入不同品牌和型号的摄像头,实现统一管理;本地录像存储,视频数据直接写入 NAS 或本地服务器,不依赖厂商云服务,从而避免长期订阅费用,同时支持长期录像和循环覆盖策略;实时监控与历史回放,通过 Web 界面集中管理所有摄像头,可以查看实时画面、快速定位历史录像,并支持多路同步播放和时间轴浏览;稳定运行,可在 NAS、迷你主机或家用服务器上 7×24 稳定运行,Docker 部署支持跨平台、快速安装和升级。

为了更直观理解,下面给出与摄像头官方 App 的对比:

对比项 官方 App EasyNVR
录像存储位置 云端 / 内存卡 本地 NAS / 服务器
是否依赖云服务
是否需要订阅 通常需要 不强制
多品牌摄像头管理 不支持 支持
数据控制权 厂商 用户自己

EasyNVR 允许用户完全掌控摄像头录像数据,同时实现多品牌摄像头的统一管理和长期本地存储,非常适合家庭或小型办公环境。

2 飞牛Nas中部署EasyNVR

本教程以Windows上虚拟机中部署的飞牛Nas为例,其他的Nas系统(如:群晖Nas、极空间Nas等)基本一致。首先,确保你的Nas系统开放了SSH远程,以飞牛Nas为例:
image-20251218141410498

打开以后,在电脑上摁Win+R键,然后输入cmd回车,打开命令提示符终端,输入如下命令连接你的Nas系统终端:

ssh 飞牛用户名@你的Nas系统IP地址

image-20251218141451997

连接上以后,接着使用如下命令切换root用户:

sudo -i

如下图,输入飞牛用户名的密码,即可切换至root用户(输入密码不会显示):
image-20251218141524973

切换完成后,执行下面的 Docker 一键部署命令,即可快速部署 EasyNVR 服务:

docker run -d --name easynvr --restart always --network host --log-opt max-size=50M -v "$PWD/configs:/app/configs" -v "$PWD/logs:/app/logs" -v "$PWD/temporary:/app/temporary" -v "$PWD/r:/app/r" -v "$PWD/stream:/app/stream" registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest

执行完成后,如果终端返回一串容器 ID,说明 EasyNVR 已经成功在后台运行

image-20251218143455324

如果你希望 EasyNVR 录制的视频能够直接出现在飞牛相册中统一管理和查看(可选但强烈推荐),可以在部署时,将 EasyNVR 的录像目录映射到飞牛相册的实际存储路径。像如下图一样:
image-20251218162932938

以飞牛默认相册路径为例:

/vol1/1000/Photos

建议在相册目录下单独创建一个 EasyNVR 录像目录,避免和日常照片混在一起:

mkdir -p /vol1/1000/Photos/EasyNVR

最终完整命令如下:

docker run -d --name easynvr --restart always --network host --log-opt max-size=50M -v "$PWD/configs:/app/configs" -v "$PWD/logs:/app/logs" -v "$PWD/temporary:/app/temporary" -v /vol1/1000/Photos/EasyNVR:/app/r -v "$PWD/stream:/app/stream" registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest

这样一来,所有摄像头的录像文件都会被直接写入飞牛相册目录,既不用内存卡,也不依赖厂商云存储,实现真正的本地集中存储和统一管理。

接着使用如下docker命令,确认是否启动:

docker ps

image-20251218143622303
可以看到,状态为UP,启动成功!让我们浏览器访问测试一下:

http://你的飞牛NAS系统IP地址:10000

image-20251218143732607

成功访问到页面啦,输入用户名和密码admin,让我们登录看一下:

image-20251218143822756

成功进入EasyNVR的首页啦,这里选择简体语言,然后下一步:
image-20251218143938671

继续下一步即可:

image-20251218144001820

然后到最后一步骤,设置一个新的账号名称和密码,就初始化完成啦:
image-20251218144032834

3 配置监控接入到EasyNVR

前面已经介绍了EasyNVR支持接入 RTSP、RTMP、ONVIF 等标准协议,并能够接入不同品牌和型号的摄像头,实现统一管理。简单说一下区别:RTSP 是纯视频流协议,只能拉流观看,不支持云台控制;RTMP 主要用于推流场景,同样不支持设备控制;而 ONVIF 是一套完整的设备管理标准,除了拉流外还支持云台控制、设备发现、参数配置等功能,如果你的摄像头支持 ONVIF,优先推荐使用它接入。

3.1 固定摄像头IP

由于一般的路由器默认都是通过 DHCP 动态分配 IP 地址,摄像头每次重启或网络波动后,IP 可能会发生变化。一旦 IP 变了,EasyNVR 就会连不上摄像头,导致监控画面丢失。所以在接入之前,建议先给摄像头固定一个静态 IP

设置方法有两种:

  • 摄像头端设置(部分摄像机支持):登录摄像头的 Web 管理界面,在网络设置中将 IP 获取方式从”自动获取”改为”手动设置”,填写一个局域网内未被占用的 IP(如 192.168.1.100)、子网掩码(255.255.255.0)和网关(路由器 IP)
  • 路由器端绑定:在路由器后台找到 DHCP 静态绑定(或 IP-MAC 绑定)功能,将摄像头的 MAC 地址与一个固定 IP 绑定

推荐使用第一种方式,更加稳定可靠。设置完成后,记录下这个固定 IP,后面添加设备时会用到。

我这里使用的监控设备为乔安,它不支持将自己设置为静态IP,所以需要登录到路由器后台,找到摄像机IP,做IP-MAC绑定,如:
image-20251218151906378

这样就做好IP和Mac地址绑定啦,不同的路由器页面不同,可以搜索对应品牌设置方法。

3.2 获取流协议地址

可以看到我这台设备的IP地址为:

192.168.50.127

浏览器直接访问这个地址,登录到摄像机后台,可以看到RTSP的开关和认证:

image-20251218152055778

RTSP的协议地址一般结构为(最好的办法是可以直接询问客服,如果支持流协议,客服会给您提供):

# rtsp://用户名:密码@摄像机IP地址/live/ch00_0
rtsp://admin:admin123@192.168.50.127/live/ch00_0

我们可以拿相关支持播放流的程序进行测试,比如PotPlayer进行播放:
image-20251218152333397

可以看到,能够成功的获取到监控中的画面了!代表这个流协议地址正确!

3.3 将流协议地址接入到EasyNVR

在前面,我们已经成功的给摄像头配置了静态IP,这样我们的RTSP流协议地址就不会发生变化了。接着,我们将这个RTSP流协议地址接入到EasyNVR中。

首先打开EasyNVR的首页,然后选择设备列表菜单,点击添加按钮:
image-20251218154228277

这里由于是RTSP协议地址,所以选择PULL,下面也可以看到提示为接入设备RTSP、HTTP、TCP实时流,然后填写好拉流地址,点击确定:
image-20251218154400268

点击确定后,就可以看到你的设备添加上来了,可以看到在线状态:
image-20251218154533718

点击通道列表图表,点击进入,然后可以看到录像计划显示为未录像,这里直接将其设置为,这样就会一直录制啦:
image-20251218154658537

点击下方的直播中按钮,即可进入到观看页面:
image-20251218154805600

如下图所示:
image-20251218154838525

可以看到,该直播预览页面集成了多协议实时播放、线路切换、云台控制与参数可视化等能力,用户可根据实际场景在 WebRTC、HTTP-FLV、RTMP、RTSP 等协议间自由切换以兼顾延迟与兼容性;在视频播放的同时,页面还实时展示分辨率、编码格式、传输方式、码率等关键流媒体信息,便于调试与排障;若视频流协议源本身支持云台控制,还可直接在页面中完成方向控制、变倍与速度调节,实现从预览到运维的一体化操作。

3.4 查看录像回放

前面设置好了录像计划,设置为每天,设置好后就会即刻开始录像。我们回到首页,选择菜单的录像回放
image-20251218161547415

我们直接点击查看图表,即可进来回放页面了:
image-20251218161658990

不仅回放功能,还支持选择指定时间段进行下载:
image-20251218161908459

如果你按照前面的飞牛相册路径映射,你还可以直接在飞牛相册中查看回放:
image-20251218163421727

好啦,基本设置就完成啦,EasyNVR还拥有更多功能值得你去探索!

4 穿透EasyNVR实现公网访问

到这里,EasyNVR 已经在飞牛 NAS 上跑起来了,录像也都存在本地硬盘上,彻底告别了云存储月租费。但问题来了:虽然各家摄像头 APP 也能看实时画面,但想回看历史录像就要交钱,而且家里几个不同品牌的摄像头还得装好几个 APP,管理起来很麻烦。

有了 cpolar 内网穿透,这些问题就迎刃而解了。只需简单配置,就能让 EasyNVR 通过公网地址随时随地访问——不仅能看实时画面,更重要的是免费回放本地存储的所有录像。而且一个链接就能分享给家人,不用每个人都装 APP、注册账号,浏览器打开就能看

4.1 什么是cpolar?

image-20250910114418412

  • cpolar 是一款内网穿透工具,可以将你在局域网内运行的服务(如本地 Web 服务器、SSH、远程桌面等)通过一条安全加密的中间隧道映射至公网,让外部设备无需配置路由器即可访问。
  • 广泛支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台,并提供一键安装脚本方便部署。

4.2 安装cpolar

在前面连接的飞牛终端中输入如下命令,一键安装cpolar:

sudo curl https://get.cpolar.sh | sh

image-20251218165154961

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

image-20251218165228464

4.3 注册及登录cpolar web ui管理界面

官网链接:https://www.cpolar.com/

访问cpolar官网,点击免费注册按钮,进行账号注册

image-20250804085039567

进入到如下的注册页面进行账号注册:
image-20250804085208319

注册完成后,在浏览器中输入飞牛NAS的IP地址+9200端口访问 web ui管理界面:

http://192.168.184.137:9200/

image-20251014164829371

输入刚才注册好的cpolar账号登录即可进入后台页面:

image-20251014164856740

4.4 穿透EasyNVR的WebUI界面

点击左侧菜单栏的隧道管理,展开进入隧道列表页面,页面下默认会有 2 个隧道:

  • ssh隧道,指向22端口,tcp协议
  • website隧道,指向8080端口,http协议(http协议默认会生成2个公网地址,一个是http,另一个https,免去配置ssl证书的繁琐步骤)

image-20251218165452591

点击编辑website的隧道,这里设置名称为easynvr方便辨识,然后本地地址填写10000端口系统的访问地址,地区这里选择的China Top,然后点击更新:

image-20251218165710198

接着,点击左侧菜单的状态菜单,接着点击在线隧道列表菜单按钮,可以看到有2个easynvr的隧道,一个为http协议,另一个为https协议:

image-20251218165830760

接下来在浏览器中访问easynvr隧道生成的公网地址,这里以https为例:

image-20251218165942550

可以看到成功的访问到EasyNVR的页面啦!不过随机域名方式适合预算有限的用户。使用此方式时,系统会每隔 24 小时 左右自动更换一次域名地址。对于长期访问的不太友好,但是该方案是免费的,如果您有一定的预算,可以查看大纲5固定域名方式,且访问更稳定哦。

5 固定二级子域名

随机域名虽然免费,但每 24 小时左右会自动更换一次,每次变化都要重新记地址、重新分享链接,用起来确实不太方便。如果你希望拥有一个固定不变、简短易记的专属域名,只需升级 cpolar 任意付费套餐,即可配置固定二级子域名,彻底告别域名频繁变化的烦恼。下面我们来看看如何操作。

首先,进入官网的预留页面:

https://dashboard.cpolar.com/reserved

然后,选择预留菜单,即可看到保留二级子域名项,填写其中的地区、名称、描述(可不填)项,然后点击保留按钮,操作步骤图如下:

image-20251218171936173

列表中显示了一条已保留的二级子域名记录:

  • 地区:显示为China Top
  • 二级域名:显示为easynvr

注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主

接着,进入侧边菜单栏的隧道管理下的隧道列表,可以看到名为easynvr的隧道:

image-20251218172009215

点击编辑按钮进入编辑页面,修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:

image-20251218172120553

接着来到状态菜单下的在线隧道列表可以看到隧道名称为easynvr的公网地址已经变更为二级子域名+固定域名主体及后缀的形式了:

image-20251218172150224

这里以https访问测试一下:

image-20251218172241180

访问成功!

总结

从 Docker 一键部署 EasyNVR,到摄像头固定 IP 配置、RTSP 流接入,再到用 cpolar 将监控画面稳定暴露到公网——我们把原本需要交云存储费才能实现的”随时随地看监控”,变成了完全自主可控的本地方案。

  • 彻底告别云存储费:录像直接存在飞牛 NAS 本地硬盘,不依赖厂商云服务,想存多久存多久
  • 多品牌统一管理:家里不同牌子的摄像头,一个 EasyNVR 界面全搞定,不用装一堆 APP
  • 历史录像免费看:本地存储的录像随时回放、下载,再也不用为”回看要付费”买单
  • 一键分享给家人:cpolar 生成的公网链接直接分享,不用每个人都装 APP、注册账号,浏览器打开就能看

这不仅是一份部署教程,更是一套让家用摄像头真正”为你所用”的完整方案。无论是想省下云存储费,还是想统一管理家里的监控设备,这套方案都能让你在几十分钟内搭建好自己的私有监控平台。现在就动手试试吧!

感谢您阅读本篇文章,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Share:

发表回复

目录

On Key

推荐文章