
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像基于 Ubuntu 22.04 LTS,集成 Zoneminder 1.37.20 和 MariaDB,提供全功能开源视频监控解决方案。支持本地数据库和外部数据库两种部署模式,已通过 Intel 芯片组硬件加速测试,可灵活适配从家庭到企业级的监控需求。
若仅使用摄像头直通模式,可能无需配置FFMPEG。如需自定义,在Zoneminder选项中修改以下设置:
PATH_FFMPEG= /usr/bin/ffmpegFFMPEG_OUTPUT_OPTIONS= -r 30 -vcodec libx264 -threads 2 -b 2000k -minrate 800k -maxrate 5000kFFMPEG_FORMATS= mpg mpeg wmv asf mp4* avi mov swf 3gp建议在FFMPEG_FORMATS中添加mp4(可在mp4后添加*并移除avi后的*,使mp4成为默认格式)。
所有数据存储在容器外部,通过卷映射实现持久化:
/var/cache/zoneminder/(事件、图像和临时文件)可按存储需求单独映射各目录:
bash-v /path_to_storageA/data:/config/data:rw -v /path_to_storageB/perl:/config/perl:rw -v /path_to_storageC/config/mysql:rw
1. 本地数据库模式
bashdocker create -p 8080:80 --name=zoneminder \ --mount type=tmpfs,destination=/dev/shm,tmpfs-size=2G \ --mount type=tmpfs,destination=/tmp \ --restart=unless-stopped -p 6802:6802 \ -v /path_to_storage:/config:rw \ -e TZ="Europe/Riga" \ --log-opt max-size=10m --log-opt max-file=5 \ gkirsteins/zoneminder.storage:latest docker run docker.xuanyuan.run/zoneminder
2. 外部数据库模式
创建数据库容器:
bashdocker create --name=mariadb --restart=unless-stopped \ -v ~/zm_video/r_mysql:/var/lib/mysql \ --restart=always \ -e TZ="Europe/Riga" -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \ mariadb:latest
创建Zoneminder容器:
bashdocker create --name=zoneminder --restart=unless-stopped -p 8080:80 -p 6802:6802 \ -v ~/zm_video:/config \ --mount type=tmpfs,destination=/dev/shm,tmpfs-size=2G \ --mount type=tmpfs,destination=/tmp \ --privileged="true" \ --restart=always \ --log-opt max-size=10m --log-opt max-file=5 \ -e ZM_DB_USER=zmuser \ -e ZM_DB_PASS=zmpass \ -e ZM_DB_HOST=mariadb \ -e ZM_DB_NAME=zm \ -e TZ="Europe/Riga" gkirsteins/zoneminder.storage:latest
创建并连接网络:
bashdocker network create "Surveillance" docker start mariadb docker start zoneminder docker network connect Surveillance mariadb zoneminder
3. 反向代理配置(Traefik v1)
在创建命令末尾添加以下标签:
bash--net=traefik-net --label traefik.frontend.rule="PathPrefix:/zm;Host:your.dns.com" --label traefik.port=80
创建并连接Traefik网络:
bashdocker network create "traefik-net" docker network connect traefik-net zoneminder
| 参数 | 说明 |
|---|---|
-p 8080:80 | Web服务端口映射(可自定义8080为其他端口) |
--name=zoneminder | 容器名称 |
--mount type=tmpfs,destination=/dev/shm,tmpfs-size=2G | 用于映射内存文件的RAM磁盘 |
--mount type=tmpfs,destination=/tmp | 临时文件系统 |
-v /path_to_storage:/config:rw | 数据存储目录映射 |
--restart=unless-stopped | 容器退出时自动重启(除非手动停止) |
-p 6802:6802 | 外部触发报警端口(需在ZM设置中启用OPT_TRIGGERS) |
-e TZ="Europe/Riga" | 设置时区(支持所有tz数据库时区,参考时区列表) |
--log-opt max-size=10m --log-opt max-file=5 | 限制日志大小(单个文件最大10MB,最多保留5个文件) |
如需启用硬件加速,添加设备映射参数:
bash--device /dev/dri:/dev/dri
(已通过VAAPI选项测试)
http://host_ip:port/zm/docker exec zoneminder /usr/bin/zmpkg.pl Daytimedocker exec -it zoneminder bashdocker logs zoneminder 或 docker logs zoneminder -f(实时日志)其中:7=监控ID,on+5=报警持续时间,6=报警分数,xxx.xxx.xxx.xxx=Zoneminder服务器IPbashecho "7|on+5|6|cause|text|show text" | netcat xxx.xxx.xxx.xxx 6802
bashapt update apt install zoneminder zmupdate.pl
bashzmupdate.pl -f
:latest标签创建新容器备份数据库:
bash# 本地数据库 docker exec -it zoneminder zmpkg.pl stop docker exec -it zoneminder mysqldump zm -u root > backup.sql # 远程数据库(使用数据库容器名称) docker exec -it zoneminder zmpkg.pl stop docker exec -it [数据库容器名] mysqldump zm -u root > backup.sql
恢复数据库:
bash# 远程数据库 cat backup.sql | docker exec -i mariadb mysql -u root zm # 本地数据库 docker exec -it zoneminder zmpkg.pl stop cat backup.sql | docker exec -i zoneminder mysql -u root zm
注意:外部数据库连接时,以下环境变量不可修改:
ZM_DB_USER=zmuserZM_DB_PASS=zmpassZM_DB_NAME=zmZM_DB_HOST=mariadb(需替换为实际数据库容器名称)
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务