树莓派⽹络监控(官⽅64位系统+docker+motioneye+内⽹穿透)
最近上⼿了⼀个树莓派4B 8G版本,装上了没出多久的官⽅64位系统,然后不⼩⼼装上了docker ,仿佛打开了新世界。
拥有了docker就拥有了“世界”。
⽬录
前⾔
实验环境:
树莓派4B 8G
系统:raspios_arm64-2021-11-08/2021-11-0807:49
⽬前树莓派天价,截⽌2022.1.18。如果没有项⽬需求,不推荐购买。最近在研究树莓派过程中发现了docker,拥有了docker的树莓派可以拓展出很多玩法,仿佛打开了新世界。本⽂使⽤docker加motioneye加内⽹穿透实现了⼀个可以外⽹访问的⽹络监控。整体效果不错,跑了⼀晚上,CPU占⽤率
邢星个人资料
不到15%,温度维持在35摄⽒度,帧率25左右。后期我打算把摄像头挂载到Home assistant,搭建⼀个智能家居。由于树莓派官⽅64位系统出的时间不长,系统搭建起来有很多坑,下⾯将分享我的搭建过程。
⼀、安装官⽅64位系统
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="你的WiFi名称"
psk="你的WiFi密码"
priority=1
}
肖战是谁
6.依次根据指⽰完成系统配置即可。
⼆、更换软件源
将默认的国外源更换成清华源,也可以使⽤其他国内源。注意⾃⼰的系统版本,我的是bullseye。
1.修改sources.list⽂件,注释原来内容添加以下内容。
sudo nano /etc/apt/sources.list
deb mirrors.tuna.tsinghua.edu/debian/ bullseye main contrib non-free
# deb-src mirrors.tuna.tsinghua.edu/debian/ bullseye main contrib non-free
deb mirrors.tuna.tsinghua.edu/debian/ bullseye-updates main contrib non-free
# deb-src mirrors.tuna.tsinghua.edu/debian/ bullseye-updates main contrib non-free
deb mirrors.tuna.tsinghua.edu/debian/ bullseye-backports main contrib non-free
# deb-src mirrors.tuna.tsinghua.edu/debian/ bullseye-backports main contrib non-free
deb mirrors.tuna.tsinghua.edu/debian-security bullseye-security main contrib non-free
# deb-src mirrors.tuna.tsinghua.edu/debian-security bullseye-security main contrib non-free
2.修改raspi.list⽂件,注释原来内容添加以下内容
sudo nano /etc/apt/sources.list.d/raspi.list
deb mirrors.tuna.tsinghua.edu/raspberrypi/ bullseye main
3.sudo apt-get update
4.sudo apt-get upgrade
三、安装docker
docker实际上是⼀个容器,可以在它上⾯装很多的镜像,镜像间彼此独⽴,有点像虚拟机。利⽤docker,可以在树莓派系统上管理和跑各种各样的镜像,例如OpenWRT、Home assistant、motione
ye,让树莓派不再吃灰。
安装docker的⽅式有很多,最简单的是利⽤脚本⼀键安装。
1.脚本安装docker
sudo curl -sSL get.docker | sh
2.⼿动安装docker
如果脚本安装失败就只能⼿动安装了。
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
sudo curl -fsSL download.docker/linux/raspbian/gpg | sudo apt-key add -
echo "deb [arch=armhf] download.docker/linux/raspbian $(lsb_release -cs) stable"| sudo tee /etc/apt/sources.list.d/docker.list
sudo apt install docker-ce
3.查看docker是否安装成功
sudo docker --version
4.设置docker国内镜像
sudo nano /etc/docker/daemon.json
添加以下内容
{
"registry-mirrors":["registry.docker-cn"]
桃花运dj}
5.设置docker开机启动
设置开机启动的⽅法有很多种,下⾯介绍⼀种简单的。
sudo systemctl restart docker.service
sudo systemctl enable docker.service
四、docker安装portainer
docker安装成功后只能通过命令⾏操作docker,portainer可以让我们⽤图形化界⾯操作docker。既然能装在docker上,那么portainer 本⾝也是⼀个镜像。
1.拉取镜像
sudo docker pull portainer/portainer-ce
酷儿音乐盒2.启动portainer
sudo docker volume create portainer_data
sudo docker run -d -p 9000:9000--name portainer \
--restart always -v /var/run/docker.sock:/var/run/docker.sock \
telephonemv-v portainer_data:/data portainer/portainer-ce
3.图形化界⾯打开docker
安装完portainer后,打开浏览器输⼊树莓派IP的9000端⼝,账号admin,输⼊设置好的密码即可打开docker界⾯。
五、测试摄像头
这⾥我⽤的是树莓派⾃带的摄像头,就是插排线那个。安装好摄像头后进⾏测试。
1.打开摄像头接⼝
sudo raspi-config
2.输⼊vcgencmd get_camera,正常返回两个1
3.树莓派64位系统不⽀持raspistill进⾏拍照,上⼀步返回两个1即可进⼊下⼀部分。
六、安装motion
在安装motioneye之前要先安装motion,motion的作⽤是打开⼀个⽹络端⼝驱动摄像头。
1.依次输⼊以下命令
bash <(curl sumju/motioneye.sh)
sudo apt-get install ffmpeg v4l-utils
sudo apt-get install libmariadbclient18 libpq5
sudo apt-get install python-pip python-dev libssl-dev
sudo apt-get install motion
2.参数配置
sudo nano /etc/f
daemon off 改成 on
stream_localhost on 改成 off
sudo service motion start
sudo motion
3.配置motion开机启动
sudo nano /etc/rc.local
在⽂件exit 0的前⾯添加motion即可。
4.浏览器输⼊树莓派IP的8081端⼝即可查看摄像头
七、安装motioneye
有了motion已经可以在浏览器查看摄像头,为什么还要motioneye?motioneye的作⽤是管理摄像头,motion只有⼀个界⾯,motioneye 可以管理多个摄像头和配置摄像头。⽽且motioneye的界⾯更好看。
1.下载镜像⽂件
sudo docker pull ccrisan/motioneye:master-armhf
2.配置容器
sudo docker run --name="motioneye" \
-p 8765:8765-p 80:8081\
--hostname="motioneye" \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/motioneye:/etc/motioneye \
-v /var/lib/motioneye:/var/lib/motioneye \
--restart="always" \
--detach=true \
angelbeats主题曲ccrisan/motioneye:master-armhf64
3.portainer 查看容器状态,浏览器打开9000端⼝。
⼋、motioneye添加摄像头
motioneye的端⼝是8765。在motioneye界⾯添加摄像头,可以选择Network Camera或者Simply MJPG Camera。
左边可以配置参数,例如开启摄像、运动检测。把帧率拉满后可以看到,帧率可以稳定在20-30帧。但是延迟有点严重,不适合动态拍。
查看树莓派的运⾏情况。跑了⼀晚上后,情况很稳定,CPU占有率在15%左右,温度在35摄⽒度。在docker上跑motioneye完全不影响树莓派的运⾏。
九、内⽹穿透
⽬前motioneye只能在局域⽹内打开,断了WiFi就打开不了。解决⽅法是进⾏内⽹穿透。内⽹穿透的⽅法有很多,这⾥采⽤最简单的路由器映射,其他⽅法⾃⾏搜索。路由器映射的前提是拥有⼀个公⽹IP,打开浏览器搜索ip.gs查看当前IP,然后进⼊路由器后台查看IP与浏览器搜出来的IP是否相同,如果相同那路由器的IP就是公⽹IP。另⼀种⽅法是看路由器后台的IP是否处于以下⽹段,如果不属于就是公⽹IP。
10.0.0.0/8
10.0.0.0 - 10.255.255.255
172.16.0.0/12
172.16.0.0 - 172.31.255.255
192.168.0.0/16
192.168.0.0 - 192.168.255.255
确认路由器是公⽹IP后,直接在后台打开虚拟服务器,添加端⼝号映射,然后打开浏览器输⼊路由器IP加端⼝号。此时在不接WiFi的情况下也能查看摄像头,成功实现内⽹穿透。
⼩结
motioneye有点bug,如果添加摄像头后没有画⾯,可以删除后添加多⼏次。注意树莓派的IP地址,最好设置IP固定。后期还可以把摄像头加⼊Home assistant。⽂章仅供学习参考。