
autopulse 是一款轻量级自动化 Web 服务,作为媒体管理器与媒体服务器之间的桥梁,接收来自 Sonarr、Radarr、Lidarr 等媒体管理器(称为"触发器")的通知,自动更新 Plex、Jellyfin、Emby 等媒体服务器(称为"目标")中的媒体内容。其核心优势在于仅更新已变更的项目,而非对整个文件夹执行通用扫描,显著降低媒体服务器负载,提升更新效率。
与 https://github.com/Cloudbox/autoscan 相比:autoscan 是优秀的先驱项目,但已停止维护,且采用文件夹级扫描导致效率较低。autopulse 则直接定位对应媒体库项目并发送更新请求,更为高效。
术语说明
主要功能
适用于需要自动化同步媒体内容的个人或家庭媒体中心环境:
Docker 部署
镜像标签
latest:完整镜像,支持 Postgres/SQLitelatest-postgres:仅支持 Postgres 的轻量镜像latest-sqlite:仅支持 SQLite 的轻量镜像stable:最新版本化发布镜像ui:自托管 UI 镜像(需配合 autopulse 后端)基础部署命令
使用 Postgres 数据库
bash# 创建网络 docker network create autopulse # 启动 Postgres docker run -d --net autopulse --name postgres \ -e POSTGRES_PASSWORD=autopulse \ -e POSTGRES_DB=autopulse \ postgres # 启动 autopulse docker run -d --net autopulse --name autopulse \ -e AUTOPULSE__APP__DATABASE_URL=postgres://postgres:autopulse@postgres/autopulse \ ghcr.io/dan-online/autopulse
使用 SQLite 数据库
bash# 文件存储 SQLite docker run -d --net autopulse --name autopulse \ -e AUTOPULSE__APP__DATABASE_URL=sqlite://database.db \ -v $(pwd)/data:/app/data \ # 挂载目录持久化数据库 ghcr.io/dan-online/autopulse # 内存 SQLite(数据不持久化) docker run -d --net autopulse --name autopulse \ -e AUTOPULSE__APP__DATABASE_URL=sqlite://:memory: \ ghcr.io/dan-online/autopulse
Docker Compose 示例
yamlversion: '3' services: autopulse: image: ghcr.io/dan-online/autopulse container_name: autopulse environment: - AUTOPULSE__APP__DATABASE_URL=sqlite:///data/database.db - AUTOPULSE__AUTH__USERNAME=admin - AUTOPULSE__AUTH__PASSWORD=securepassword # 建议修改默认密码 volumes: - ./autopulse-data:/app/data ports: - "2875:2875" # 默认端口 restart: unless-stopped
配置说明
配置方式
autopulse 支持通过配置文件(支持 json/toml/yaml/json5/ron/ini 格式)或环境变量配置,环境变量格式为 AUTOPULSE__{SECTION}__{KEY}(如 AUTOPULSE__APP__DATABASE_URL)。默认读取当前目录下的 config.toml。
核心配置参数
| 环境变量 | 描述 | 默认值 |
|---|---|---|
AUTOPULSE__APP__DATABASE_URL | 数据库连接 URL | sqlite://database.db |
AUTOPULSE__AUTH__USERNAME | API 访问用户名 | admin |
AUTOPULSE__AUTH__PASSWORD | API 访问密码 | password |
AUTOPULSE__APP__PORT | 服务端口 | 2875 |
授权配置
默认用户名/密码为 admin/password,强烈建议通过配置文件或环境变量修改:
yamlauth: username: 自定义用户名 password: 强密码
示例配置
配置文件示例(yaml 格式)
yamltriggers: my_sonarr: type: "sonarr" rewrite: # 路径重写:将 Sonarr 中的 /downloads 路径转换为媒体服务器的 /tvshows from: "/downloads" to: "/tvshows" my_radarr: type: "radarr" rewrite: from: "/downloads" to: "/movies" my_notify: # 监控文件系统变化 type: "notify" paths: - "/watch" # 监控 /watch 目录 rewrite: from: "/watch" to: "/media" targets: my_plex: type: "plex" url: "http://plex:32400" token: "你的 Plex Token" my_jellyfin: type: "jellyfin" url: "http://jellyfin:8096" token: "你的 Jellyfin API 密钥" webhooks: my_discord: # 发送通知到 Discord type: "discord" url: "https://discord.com/api/webhooks/你的webhook地址"
手动触发扫描
通过默认手动触发器端点触发扫描:
bash# 使用用户名密码认证 curl -u '用户名:密码' 'http://localhost:2875/triggers/manual?path=/media/movies/新电影.mkv&hash=文件哈希值' # 使用 Basic Auth 头认证 curl -H 'Authorization: Basic base64编码的用户名密码' 'http://localhost:2875/triggers/manual?path=/media/tv/新剧集.mkv'
配置模板 API
通过 API 动态生成配置模板:
bash# 获取基础模板 curl -u "用户名:密码" "http://localhost:2875/api/config-template" # 指定数据库类型、触发器和目标类型,输出 JSON 格式 curl -u "用户名:密码" "http://localhost:2875/api/config-template?database=postgres&triggers=sonarr,radarr&targets=plex,jellyfin&output=json"
autopulse 提供 Web UI 用于管理扫描请求,可通过 Docker 部署:
bashdocker run -d --name autopulse-ui \ -e DEFAULT_SERVER_URL=http://autopulse:2875 \ # 连接后端地址 -p 2885:2885 \ ghcr.io/dan-online/autopulse:ui
UI 支持通过环境变量配置默认服务器地址、强制认证等,详细参数见官方文档。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务