跳转到主要内容

API 密钥

管理员可以为 Duplicati 和 Homepage 使用的外部 HTTP API 创建作用域 API 密钥。密钥默认是可选的,因此现有的 Duplicati 任务可以继续工作。

API 密钥

作用域​

作用域端点
上传POST /api/upload
读取GET /api/summary, GET /api/lastbackup/:id, GET /api/lastbackups/:id

上传密钥不能调用读取 API,读取密钥不能上传报告。

创建密钥​

  1. 打开 设置 → API 密钥。
  2. 点击 API 密钥卡片底部的 创建 API 密钥。
  3. 输入名称,选择作用域,并可选择性地设置过期时间(YYYY-MM-DD)。
  4. 生成密钥并立即复制密钥串。它只在对话框中显示一次。
  5. 之后的列表显示指纹,如 Qk7v…3xTa(前四个和后四个字符)、过期日期和状态。相同的指纹也会出现在审计日志中。

禁用或删除​

使用 操作 列中的复选框来禁用密钥而不删除它。禁用的密钥无法进行身份验证。再次勾选复选框以重新启用密钥。已过期的密钥无法启用;请创建新密钥。删除将永久移除密钥。

过期​

可选的过期日期是密钥保持有效的最后一天。它在 当天 23:59:59 浏览器本地时区 过期,而不是在当天开始时的午夜过期。

选择 2026-12-01 在本地构建 2026-12-01T23:59:59,然后将该时刻存储为 UTC。对于 UTC+1 的浏览器,这是 2026-12-01T22:59:59.000Z。密钥在整个 12 月 1 日保持有效,并从 23:59:59 本地时间开始被视为过期(expires_at <= now)。API 密钥表显示过期日期(或如果未设置则显示 永不)。在此时刻之后,状态徽章会变为 已过期(灰色);即使过期的密钥仍被启用,也无法进行身份验证。

使用密钥​

Duplicati 无法设置自定义标头。将密钥放在报告 URL 中:

--send-http-json-urls=https://your-host/api/upload?api_key=YOUR_KEY

Homepage 小组件可以使用相同的查询参数:

url: http://your-host/api/summary?api_key=YOUR_READ_KEY

能够发送标头的客户端可以改用 X-Api-Key 或 Authorization: Bearer。查询字符串密钥会出现在反向代理访问日志中。

要求密钥​

要求外部 API 使用 API 密钥 开关默认处于关闭状态。当它关闭时,允许没有密钥的请求。如果客户端仍然发送密钥,有效的匹配作用域密钥会被接受并记录;无效、禁用、过期或错误作用域的密钥会被忽略,请求仍然被允许。当您打开开关时,四个外部数据 API 在没有有效密钥的情况下返回 401(并拒绝错误的密钥)。请先至少启用一个上传密钥和一个读取密钥,否则 Duplicati 上传和 Homepage 小组件将停止工作。更改会自动保存。

外部 API 保护​

同一页面可以为公共上传和读取 API 要求 API 密钥,并配置最大正文大小(默认 5 MB)和针对每个 IP 地址的速率限制,适用于 /api/upload。即使密钥是可选的,大小和速率限制也会生效,并且是防止泛洪攻击的主要防护措施。开关和限制字段会自动保存;没有单独的保存按钮。

另请参见 IP白名单。IP白名单和 API 密钥是独立的功能;您可以使用其中任一功能或同时使用两者。启用两者可以通过基于 IP 地址限制访问并要求 API 密钥来增加安全性。