有人值守 Sysupgrade 服务器
本项目简化了升级运行 OpenWrt 或基于其的发行版设备固件的 sysupgrade 流程。这些工具提供了一种简便的方式,无需使用 opkg 即可使用新的固件版本(包括所有软件包)重新刷写路由器。
ASU 基于一个 API,用于请求预装任意所选软件包的定制固件镜像。这避免了搭建构建环境的需要,并使得即使使用移动设备也能创建定制固件镜像。
Sysupgrade Server 的客户端
OpenWrt 固件选择器
一个使用原生 JavaScript 开发的简单 Web 界面,目前由 @mwarning 开发。 它提供基于型号名称的设备搜索,并显示指向 官方镜像 的链接,或通过 asu API 请求镜像。请加入 GitHub 仓库 的开发。

LuCI 应用
软件包
luci-app-attendedsysupgrade
在 System > Attended Sysupgrade 下提供了一个简单的工具。它会请求一个包含当前软件包集合的新固件镜像,等待其构建完成并刷入。如果 GUI 中勾选了“保留配置”,设备将升级到新固件,无需重新输入任何配置或重新安装任何软件包。

CLI
在 OpenWrt SNAPSHOT-r26792 or newer(以及 24.10 版本)中,CLI 应用
auc 已被替换为
owut
作为更全面的 CLI 工具,以提供升级设备的便捷方式。

服务器
服务器监听镜像请求,如果请求有效,则自动生成 镜像。它协调多个 OpenWrt ImageBuilder,并将生成的 镜像缓存在 Redis 数据库中。如果镜像已缓存,服务器可以 立即提供该镜像,而无需重新构建。
活跃服务器
[!NOTE] 使用在 OpenWrt Downloads 上发布的 ImageBuilder 的官方服务器。
[!NOTE] 非官方服务器,可能运行修改过的 ImageBuilder
- ImmortalWrt
- LibreMesh
- sysupgrade.guerra24.net
- sysupgrade.antennine.org
- 创建一个 pull request 以在此处添加您的服务器
运行您自己的服务器
出于安全原因,每次构建都在容器内进行,以便一个构建 不会影响另一个构建。使用 Podman socket,以便 worker 可以在 容器内执行构建。
安装
服务器使用 podman-compose 来管理容器。在基于 Debian 的
系统上,安装以下软件包:
sudo apt install podman-compose
一个 Python 库 用于 通过 socket 与 Podman 进行通信。将 socket 符号链接到项目 目录中:
ln -sf /run/user/$(id -u)/podman/podman.sock podman.sock
如果 Podman 套接字未运行,请启用它:
systemctl --user enable --now podman.socket
为构建容器创建隔离网络(无法访问 Redis 或其他服务):
podman network create asu-build
复制示例配置并根据需要进行调整:
cp asu.example.toml asu.toml
现在您可以使用最新的 ASU 容器,也可以自行构建:
# use existing containers
podman-compose pull
# build containers locally
podman-compose build
启动所有服务:
podman-compose up -d
这将启动服务器、一个 Redis 实例和一个 worker。运行后,
API 可在 http://localhost:8000 访问。修改 podman-compose.yml
以更改端口。
可选:缓存代理
要在构建之间缓存上游软件包下载,请启用 nginx 缓存 代理:
podman-compose -f podman-compose.yml -f podman-compose.cache.yml up -d
将 cache_url = "http://cache" 设置为 asu.toml,以通过缓存路由构建容器的
软件包下载。
生产环境
对于生产环境,建议使用 nginx 或 caddy 等反向代理。
您可以在 misc/Caddyfile 中找到 Caddy 示例配置。
如果您希望服务器在注销后保持活动状态,请启用 "linger":
loginctl enable-linger
系统要求
- 2 GB 内存(推荐 4 GB)
- 2 个 CPU 核心(推荐 4 个核心)
- 50 GB 磁盘空间(推荐 200 GB)
开发
克隆此仓库后,安装 uv 以管理 Python
依赖项。
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync --extra dev
运行 Redis
podman run -d --name redis -p 6379:6379 redis:alpine
运行服务器
uv run fastapi dev asu/main.py
运行一个 worker
uv run rq worker
API
API 通过 OpenAPI 进行文档化,并可在服务器上交互式查看: