更新
新手入门
有新版本时 HolyArrs 会告诉你,但从不自己安装。什么时候方便,你就什么时候拉取新镜像。
看有没有新版本
看有没有新版本 的链接- 打开 Status(状态)页面(
http://your-server:6262/health)。 - 看 Updates(更新)。你应该会看到下面其中一条:
| 消息 | 含义 |
|---|---|
| “HolyArrs 1.2.0 is out, newer than this one.” | 准备好了就更新 |
| “This is the newest version.” | 不用做什么 |
| “No HolyArrs release is published yet.” | 订阅源是空的。没有出问题 |
| “The last check did not work: …” | 连不上订阅源,多半是没有网络 |
| “The update check is off: …” | 在设置里关掉了 |
- 想现在就检查,点击 Check now(立即检查)(或 Check again(再检查一次))。需要 Change settings(更改设置)权限。
有更新的版本时,还会显示为一条健康警告。检查失败只显示在 Updates 下面。
更新
更新 的链接- 拉取新镜像并重启:先
docker compose pull,再docker compose up -d。 - HolyArrs 启动。如果新版本改了数据的存储方式,它会先做一个备份,再更新数据。你应该会看到应用在新版本上打开。
回退到旧版本
回退到旧版本 的链接HolyArrs 改不了自己的镜像,所以由你来运行旧镜像,HolyArrs 把旧数据放回去。
- 把 compose 文件(或
docker run)里的镜像标签改成旧的,比如holyarrs/holyarrs:<older version>。 - 运行
docker compose up -d。 - 如果这次更新没有改数据,旧版本会直接启动。到这里就完成了。
- 否则旧版本显示的是一个页面,而不是应用。点击 Put back the data from before the update(放回更新前的数据)。
- 输入一次性验证码。用
docker logs <container>找到它,找“one-time code”那一行。 - HolyArrs 检查备份,把它放回原位,然后停止。你应该会看到容器通过重启策略用这份数据重新启动。没有设置重启策略的话,自己启动它。
不用这个页面:docker exec <container> /holyarrs restore --pre-update,然后 docker restart <container>。不用 Docker:停止 HolyArrs,运行 holyarrs restore --pre-update,再启动它。
不会删除任何东西。较新的数据会移到 backups/before-restore-<time>/,所以你可以撤销。回退超过一个版本时,会选那个版本能读取的最新的更新前备份。
可选项
可选项 的链接都在 Settings > Health checks(设置 > 健康检查)里。最后三项在卡片的高级部分下面。
| 设置项 | 默认 | 什么时候改 |
|---|---|---|
| Check for a newer HolyArrs(检查 HolyArrs 新版本) | 开 | 你不想有任何对外请求 |
| Check for updates every(检查更新的间隔) | 1 天 | 你想少检查几次:3、7、14 或 30 天 |
| Release feed(版本订阅源) | 空(HolyArrs 的正式版) | 你自己托管订阅源 |
| Feed may be on the local network(订阅源可以在局域网上) | 关 | 你的订阅源在自己的网络里 |
| Include test versions (like 1.2.0-rc1)(包括测试版,比如 1.2.0-rc1) | 关 | 你想收到测试版的提示 |
如果不成功
如果不成功 的链接现象:“The last check did not work.” 原因:服务器没有网络,或者你自己的订阅源在局域网上。 解决办法:检查网络,或者打开 Feed may be on the local network。
现象:版本订阅源保存不了。
原因:地址里带了用户名、密码、?query 或 #fragment,或者不是以 http:// 或 https:// 开头。
解决办法:去掉这些部分。
现象:更新因为磁盘空间不够而停止。 原因:放不下副本和更新。 解决办法:在配置文件夹所在的位置腾出空间,然后重新启动。
现象:回退页面不接受你的验证码。 原因:验证码是旧的,或者上次启动以来已经输错 10 次。 解决办法:从最新的那行日志里复制验证码。输错 10 次之后,重启容器,用新的验证码。
暂未开放的功能
暂未开放的功能 的链接这个版本里有些功能默认是关的。打开它们的风险由你自己承担。暂未开放期间,它们的页面和菜单项是隐藏的,它们的 API 路由返回“not found”,它们的后台任务也不运行。你为它们保存的数据会保留。
要打开某一个,把它的开关加到 HOLYARRS_FLAGS 里,用逗号分隔,然后重启容器:
environment: HOLYARRS_FLAGS: "subtitle_sites,alert_channels_more"去掉这个名字再重启就是关闭。再次打开时,隐藏的设置会回来。
| 开关 | 功能 |
|---|---|
plex_watchlists |
Plex 待看列表变成请求 |
row_title_stats |
Appearance(外观)里的探索行标题统计 |
trakt_lists |
Trakt 密钥、Trakt 列表和 Trakt 评论。TMDB 列表保持开启 |
alert_channels_more |
Telegram、ntfy、Gotify、Pushover 和 webhook 通知。Discord 和邮件保持开启 |
subtitle_sites |
字幕站和字幕搜索。你的字幕语言保持开启 |
emby_signin |
用 Emby 登录。Emby 媒体库刷新仍然可用 |
go_back |
状态页面上的 Go back(回退)面板。回退里的步骤没有它也能用 |
加了开关却没有变化?检查拼写(小写、下划线),并且要重启容器,不只是刷新页面。
进阶
进阶 的链接检查时发送什么
向 api.github.com 发一个请求,查最新的正式版,只带 User-Agent: HolyArrs/<version>。不带账户、密钥或媒体列表。关掉检查后,一个请求都不发。
上一次的结果会保存下来,所以重启后不会没到时间就检查。一次检查最多等 15 s,最多读 512 KB,最多跟随 3 次重定向,并且从不在 http 和 https 之间切换。只有当版本说明链接指向 GitHub 上 HolyArrs 的版本页面时才显示链接,否则版本显示为纯文本。
Release feed 接受 GitHub 格式的版本响应、版本列表、任何带 version 的 JSON,或者包含版本号的纯文本。云元数据地址一律拒绝。测试版算作比正式版旧。
更新前的备份
在改动存储的数据之前,HolyArrs 会:
- 检查有没有空间放一份副本和更新。没有的话,什么都不改。用
HOLYARRS_SKIP_SPACE_CHECK=yes跳过。 - 把每个数据库复制到
backups,检查副本,并在旁边写一个 sha256 文件。复制失败 3 次后,什么都不改。 - 每个更新步骤单独运行并检查。失败的步骤会被撤销,完成的步骤保留。再次启动同一个版本,就会用同一份副本从失败的步骤接着做。
第一次正常启动后,这份副本会变成 holyarrs-backup-pre-update-<time>.zip,说明类似“before updating from 1.1.0 to 1.2.0”。它显示在 Settings > Backups(设置 > 备份)和 holyarrs restore --list 里。保留最新的 3 份,备份计划从不删除它们。全新安装,或者不改动数据的更新,不会生成这种备份。
相关页面
相关页面 的链接HolyArrs 是免费的。如果它帮你省了时间,欢迎在 GitHub 上点个 Star、赞助它或请我喝杯咖啡。