
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像基于OliveTin构建,专为Channels DVR用户设计,提供一站式管理解决方案。通过集成多DVR服务器支持、邮件通知、日志管理及Portainer集成等功能,帮助用户简化Channels DVR的日常运维与监控。
适用于所有使用Channels DVR的用户,尤其适合:
| 环境变量 | 默认值 | 描述 |
|---|---|---|
| TAG | latest | 镜像标签,可选值:latest、test |
| DOMAIN | Tailscale用户的Tailnet(如tailxxxxx.ts.net)或本地域名 | |
| HOST_PORT | 1337 | 主机映射端口,容器内固定使用1337端口 |
| CHANNELS_DVR_HOST | Channels DVR主服务器主机名或IP | |
| CHANNELS_DVR_PORT | 8089 | Channels DVR主服务器端口 |
| CHANNELS_DVR2_HOST | 备用DVR服务器2主机名或IP(可选) | |
| CHANNELS_DVR2_PORT | 备用DVR服务器2端口(可选) | |
| CHANNELS_DVR3_HOST | 备用DVR服务器3主机名或IP(可选) | |
| CHANNELS_DVR3_PORT | 备用DVR服务器3端口(可选) | |
| CHANNELS_CLIENTS | 接收通知的Channels DVR客户端列表(空格分隔) | |
| ALERT_SMTP_SERVER | 发送告警邮件的SMTP服务器(如smtp.gmail.com:587) | |
| ALERT_EMAIL_FROM | 告警邮件发送地址 | |
| ALERT_EMAIL_PASS | SMTP应用密码(非日常***密码) | |
| ALERT_EMAIL_TO | 告警邮件接收地址 | |
| UPDATE_YAMLS | true | 是否自动更新配置文件yaml |
| UPDATE_SCRIPTS | true | 是否自动更新所有脚本 |
| TZ | 时区设置(如US/Eastern、Asia/Shanghai) | |
| PORTAINER_TOKEN | Portainer API令牌 | |
| PORTAINER_HOST | $CHANNELS_DVR_HOST | Portainer主机名或IP |
| PORTAINER_PORT | 9443 | Portainer HTTPS端口 |
| PORTAINER_ENV | 2 | Portainer环境ID |
| PERSISTENT_LOGS | false | 是否启用日志持久化 |
| 卷挂载路径 | 用途 | 配置说明 |
|---|---|---|
| /config | 配置文件存储 | 通过HOST_DIR环境变量指定主机目录,格式:HOST_DIR=/path/to/host/dir |
| /mnt/[hostname-port] | DVR媒体文件共享 | 通过DVR_SHARE指定主机目录或Docker卷,映射到DVR服务器的媒体共享 |
| /mnt/[hostname-port]_logs | DVR日志共享 | 通过LOGS_SHARE指定主机目录或Docker卷,映射到DVR服务器的日志共享 |
| /mnt/[hostname-port]_ta | TubeArchivist视频共享 | 通过TUBEARCHIVIST_SHARE指定主机目录或Docker卷,映射到TubeArchivist视频共享 |
| /var/run/docker.sock | Docker socket | 用于与Docker引擎通信,实现容器管理功能 |
基础配置
yamlversion: '3.9' services: olivetin: image: docker.xuanyuan.run/bnhf/olivetin:${TAG:-latest} container_name: ${OLIVETIN_NAME:-olivetin} hostname: ${OLIVETIN_NAME:-olivetin} dns_search: ${DOMAIN:+${DOMAIN}} ports: - ${HOST_PORT:-1337}:1337 environment: - OLIVETIN_COMPOSE=2025.03.26 - CHANNELS_DVR=${CHANNELS_DVR_HOST}:${CHANNELS_DVR_PORT:-8089} - ${CHANNELS_DVR2_HOST:+CHANNELS_DVR_ALTERNATES=${CHANNELS_DVR2_HOST}:${CHANNELS_DVR2_PORT}} ${CHANNELS_DVR3_HOST:+${CHANNELS_DVR3_HOST}:${CHANNELS_DVR3_PORT}} - CHANNELS_CLIENTS=${CHANNELS_CLIENTS} - ALERT_SMTP_SERVER=${ALERT_SMTP_SERVER} - ALERT_EMAIL_FROM=${ALERT_EMAIL_FROM} - ALERT_EMAIL_PASS=${ALERT_EMAIL_PASS} - ALERT_EMAIL_TO=${ALERT_EMAIL_TO} - UPDATE_YAMLS=${UPDATE_YAMLS:-true} - UPDATE_SCRIPTS=${UPDATE_SCRIPTS:-true} - TZ=${TZ} - PORTAINER_TOKEN=${PORTAINER_TOKEN} - PORTAINER_HOST=${PORTAINER_HOST:-$CHANNELS_DVR_HOST} - PORTAINER_PORT=${PORTAINER_PORT:-9443} - PORTAINER_ENV=${PORTAINER_ENV:-2} - PERSISTENT_LOGS=${PERSISTENT_LOGS:-false} volumes: - ${HOST_DIR:-/unused}${HOST_DIR:+/olivetin:/config} - ${DVR_SHARE:-/unused}${DVR_SHARE:+:/mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}} - ${LOGS_SHARE:-/unused}${LOGS_SHARE:+:/mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}_logs} - ${TUBEARCHIVIST_SHARE:-/unused}${TUBEARCHIVIST_SHARE:+:/mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}_ta} - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped static-file-server: image: docker.xuanyuan.run/halverneus/static-file-server:latest container_name: ${SFS_NAME:-static-file-server} dns_search: ${DOMAIN} ports: - ${HOST_SFS_PORT:-0}:8080 environment: - FOLDER=${FOLDER:-/web} volumes: - ${HOST_DIR:-/unused}${HOST_DIR:+/olivetin/data:${FOLDER:-/web}} restart: unless-stopped
示例环境变量文件 (.env)
envTAG=latest DOMAIN=localdomain tailxxxxx.ts.net HOST_PORT=1337 CHANNELS_DVR_HOST=local-server CHANNELS_DVR_PORT=8089 CHANNELS_DVR2_HOST=another-server CHANNELS_DVR2_PORT=8089 CHANNELS_CLIENTS=appletv4k firestick-master amazon-aftkrt ALERT_SMTP_SERVER=smtp.gmail.com:587 ALERT_EMAIL_FROM=username@gmail.com ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx ALERT_EMAIL_TO=username@gmail.com UPDATE_YAMLS=true UPDATE_SCRIPTS=true TZ=US/Mountain HOST_DIR=/data DVR_SHARE=/mnt/dvr LOGS_SHARE=/mnt/channelsdvr TUBEARCHIVIST_SHARE=/mnt/dvr HOST_SFS_PORT=8080 FOLDER=/web PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx PORTAINER_HOST=docker-host PORTAINER_PORT=9443 PORTAINER_ENV=2 PERSISTENT_LOGS=false
.env,根据实际需求配置参数docker-compose.yml 文件,复制上述基础配置docker-compose up -dhttp://<主机IP>:<HOST_PORT>(默认1337端口)打开Web界面如需管理多个DVR服务器,需配置:
CHANNELS_DVR2_HOST 和 CHANNELS_DVR2_PORT:第二台DVR服务器信息CHANNELS_DVR3_HOST 和 CHANNELS_DVR3_PORT:第三台DVR服务器信息DVR2_SHARE、LOGS2_SHARE、TUBEARCHIVIST2_SHARE 等如需使用Docker外部卷挂载共享目录,可取消注释 volumes 部分并配置:
yamlvolumes: channels-dvr: external: true channels-dvr-logs: external: true tubearchivist: external: true
然后在环境变量中设置 DVR_SHARE=channels-dvr 等对应卷名。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务