跳转到内容

更新

新手入门

有新版本时 HolyArrs 会告诉你,但从不自己安装。什么时候方便,你就什么时候拉取新镜像。

看有没有新版本

看有没有新版本 的链接
  1. 打开 Status(状态)页面(http://your-server:6262/health)。
  2. 看 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: …” 在设置里关掉了
  1. 想现在就检查,点击 Check now(立即检查)(或 Check again(再检查一次))。需要 Change settings(更改设置)权限。

有更新的版本时,还会显示为一条健康警告。检查失败只显示在 Updates 下面。

  1. 拉取新镜像并重启:先 docker compose pull,再 docker compose up -d。
  2. HolyArrs 启动。如果新版本改了数据的存储方式,它会先做一个备份,再更新数据。你应该会看到应用在新版本上打开。

HolyArrs 改不了自己的镜像,所以由你来运行旧镜像,HolyArrs 把旧数据放回去。

  1. 把 compose 文件(或 docker run)里的镜像标签改成旧的,比如 holyarrs/holyarrs:<older version>。
  2. 运行 docker compose up -d。
  3. 如果这次更新没有改数据,旧版本会直接启动。到这里就完成了。
  4. 否则旧版本显示的是一个页面,而不是应用。点击 Put back the data from before the update(放回更新前的数据)。
  5. 输入一次性验证码。用 docker logs <container> 找到它,找“one-time code”那一行。
  6. 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 会:

  1. 检查有没有空间放一份副本和更新。没有的话,什么都不改。用 HOLYARRS_SKIP_SPACE_CHECK=yes 跳过。
  2. 把每个数据库复制到 backups,检查副本,并在旁边写一个 sha256 文件。复制失败 3 次后,什么都不改。
  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、赞助它或请我喝杯咖啡。