> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 从 Web 界面更新

> 在浏览器中安装 ipmideck 的新版本，并为 Docker 安装配置 Watchtower 以实现同样的操作。

发布了更新的版本时，ipmideck 会显示一次通知，并且在你安装之前，侧边栏版本号旁会一直显示更新按钮（向上的箭头；安全版本则为盾牌）。两者都会打开新版本的发行说明；如果 ipmideck 能够自行安装，还会显示 **下载并安装** 按钮。

## 按钮的作用

在做任何更改之前，ipmideck 会将数据库、加密密钥和 `config.yaml` 备份到[数据目录](/zh-Hans/configuration#配置文件位于何处)中的 `backups/`。

| 安装方式 | 结果 |
| - | - |
| 虚拟环境中的 pip、pipx、uv | 安装新版本并重启 ipmideck。新版本运行后页面会自动重新加载。 |
| Windows 上的 pip、pipx、uv | ipmideck 会停止以便安装更新，之后需要你再次启动它。进度记录在数据目录的 `update.log` 中。 |
| 使用 Watchtower 的 Docker | Watchtower 拉取新镜像并替换容器。页面会自动重新加载。 |
| 未使用 Watchtower 的 Docker | 对话框会显示需要在 Docker 主机上执行的命令。 |
| git 检出、系统 Python、可编辑安装 | 对话框会说明原因并显示需要执行的命令；由系统管理的 Python 请按原安装方式更新。 |

## 要求

* 必须开启登录：该按钮会替换正在运行的程序。
* 演示模式下不提供该按钮。
* 要自动重启，ipmideck 必须是通过 `ipmideck` 命令启动的。如果以其他方式启动，它会安装更新并提示你重启；在 Windows 上则改为显示命令。

## Docker 与 Watchtower

容器无法替换自己的镜像，而让 ipmideck 访问 Docker 套接字就等于让它控制主机。因此由一个独立的 [Watchtower](https://github.com/nicholas-fedor/watchtower) 容器在 ipmideck 请求时执行替换。

<Steps>
  <Step title="为 ipmideck 容器添加标签">
    使用允许 Watchtower 管理的标签启动 ipmideck：

    ```bash theme={null}
    docker run -d --name ipmideck --network host \
      --label com.centurylinklabs.watchtower.enable=true \
      -v ipmideck-data:/data devluigi06/ipmideck:latest
    ```
  </Step>

  <Step title="启动 Watchtower">
    启动 Watchtower，开启其 HTTP API，并仅允许从主机访问：

    ```bash theme={null}
    docker run -d --name watchtower \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -p 127.0.0.1:8080:8080 \
      -e WATCHTOWER_HTTP_API_UPDATE=true \
      -e WATCHTOWER_HTTP_API_TOKEN=replace-with-a-long-random-token \
      -e WATCHTOWER_LABEL_ENABLE=true \
      nickfedor/watchtower
    ```
  </Step>

  <Step title="连接 ipmideck">
    在 `config.yaml` 已有的 `updates:` 部分中添加 Watchtower 的地址和令牌，然后重启 ipmideck：

    ```yaml config.yaml theme={null}
    updates:
      watchtower_url: http://127.0.0.1:8080
      watchtower_token: replace-with-a-long-random-token
    ```

    同样的设置也可以通过 `IPMIDECK_UPDATES_WATCHTOWER_URL` 和 `IPMIDECK_UPDATES_WATCHTOWER_TOKEN` 指定。使用 Docker Compose 时两个容器在同一网络中，地址请使用 `http://watchtower:8080`。
  </Step>
</Steps>

<Warning>
  Watchtower 通过套接字控制 Docker。请使用足够长的随机令牌，并像示例中那样将端口绑定到 `127.0.0.1`。
</Warning>

<Note>
  Watchtower 拉取的是容器当前使用的标签。使用 `latest` 时会升级到最新版本；固定在版本标签（例如 `2.0.0`）上的容器会保持该版本。
</Note>

## 安装失败时

对话框会显示原因、安装程序输出以及手动安装更新的命令。不会删除任何内容：安装前创建的备份位于 `backups/`，[备份与恢复](/zh-Hans/backup-restore) 说明了如何恢复。

## 后续步骤

* [更新 ipmideck](/zh-Hans/updating): 从命令行更新。
* [备份与恢复](/zh-Hans/backup-restore): 更新前为数据创建快照。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.