备份状态一览无余
每台服务器的卡片会显示每个任务最近 10 次的运行记录。服务器较多时可切换为可排序表格,并可打开任意一次运行以查看完整日志(包括警告和错误)。
- 服务器、任务、运行次数、大小和存储空间的统计总览
- 自动刷新的仪表板,带来大屏展示体验
- 对照 GitHub 最新版本检查 Duplicati 服务器版本
无需再逐一登录各个 Duplicati Web 界面。duplistatus 通过单一屏幕监控所有服务器和任务——让您在遭遇突发数据丢失前,就能确信备份一切正常。
duplistatus 使用 Duplicati 的内置 HTTP 报告功能,因此无需在备份机器上安装任何软件。
我的所有备份都正常吗?一屏解答,覆盖每台服务器、每个任务和每次运行。
无论您运行的是 NAS、笔记本电脑、VPS 还是两台家庭服务器,duplistatus 都能将它们汇总到同一个屏幕上。
每台服务器的卡片会显示每个任务最近 10 次的运行记录。服务器较多时可切换为可排序表格,并可打开任意一次运行以查看完整日志(包括警告和错误)。
duplistatus 自动检测过期、警告和失败的备份,并通过 ntfy 推送或 SMTP 电子邮件向您发出告警。
打开任意一次运行以阅读其日志(包含警告和错误),并查看有哪些可用恢复点。需要更多详细信息时,还可查看耗时、大小和存储空间的图表。
容器化部署让您在数分钟内即可启动并运行 — 无需耗费数小时。
配置每个 Duplicati 服务器将 JSON 报告 POST 到 /api/upload。然后收集历史日志,以便自动填充监控间隔。
--send-http-json-urls=http://host:9666/api/upload --send-http-log-level=Information --send-http-max-log-lines=500Duplicati 配置
ntfy 已配置完成。将主题更改为你自己的主题,然后扫描 duplistatus 生成的二维码,即可在手机上完成设置。
配置电子邮件服务器设置,开始接收来自 duplistatus 的邮件。
duplistatus 负责监控。如果备份过期,或在完成时出现警告或错误,你将收到通知或电子邮件。
若想更加省心,可以开启可选的每日摘要:即使一切正常,你每天也能收到它。
从首次启动起就已开启登录,因此私有家庭实验室开箱即可获得保护。将其暴露给互联网时,可添加 API 密钥和 IP 允许列表。
以管理员或普通用户身份登录。限制每个用户可以查看的服务器。
分别为 Duplicati 上传和只读仪表盘或小部件提供独立的密钥,并配有上传大小和速率限制。
两个独立的允许列表:一个用于管理界面,一个用于外部API。当 duplistatus 运行在反向代理之后时,它们可防止伪造的客户端 IP。
基于会话的路由受跨站请求伪造保护。
记录每一次配置更改和用户操作。支持筛选、导出并设置记录保留时长。
仅管理员可见的查看器支持搜索、筛选和导出应用程序日志,并带有实时更新。
要暴露给互联网?请在支持 HTTPS 的反向代理后运行。 阅读指南
duplistatus 是开源且自托管的,旨在贴合 家庭实验室所有者和小型团队系统管理员的实际工作方式。
状态保存在单个 SQLite 文件中,在启动时应用架构迁移。 备份该文件即可完成。
duplistatus 是一个独立项目,和 Duplicati 团队无任何关联。
拉取镜像,挂载数据卷,并开放 9666 端口。
# download the compose file wget https://github.com/wsj-br/duplistatus/raw/refs/heads/master/production.yml -O duplistatus.yml # start the container docker compose -f duplistatus.yml up -d
# duplistatus production compose.yml
services:
duplistatus:
image: ghcr.io/wsj-br/duplistatus:latest
container_name: duplistatus
restart: unless-stopped
environment:
- TZ=Europe/London
- PWD_ENFORCE=true
- PWD_MIN_LEN=8
ports:
- "9666:9666"
volumes:
- duplistatus_data:/app/data
networks:
- duplistatus_network
networks:
duplistatus_network:
driver: bridge
volumes:
duplistatus_data:
name: duplistatus_data
# Create the volume docker volume create duplistatus_data # Start the container docker run -d \ --name duplistatus \ -p 9666:9666 \ -e TZ=Europe/London \ -e LANG=en_GB \ -v duplistatus_data:/app/data \ ghcr.io/wsj-br/duplistatus:latest
mkdir -p ~/duplistatus_data # Start the container (standalone) podman run -d \ --name duplistatus \ --userns=keep-id \ -e TZ=Europe/London \ -e LANG=en_GB \ -p 9666:9666 \ -v ~/duplistatus_data:/app/data \ ghcr.io/wsj-br/duplistatus:latest