Skip to main content
Open source · Self-hosted · Docker-ready

All your backups. One dashboard.

Stop logging into each Duplicati web interface one by one. duplistatus monitors every server and job from a single screen — so you know your backups are fine before data loss catches you off guard.

duplistatus uses Duplicati's built-in HTTP reporting, so there is nothing to install on your backup machines.

Multi-server monitoring ntfy & email alerts Secure by default, extra protection when needed

The only question that matters

Are all my backups fine? One screen answers it, across every server, every job, and every run.

localhost:9666

Built for people who run Duplicati on more than one machine

Whether you run a NAS, a laptop, a VPS, or two home servers, duplistatus puts them all on one screen.

01

See every backup at a glance

A card per server shows the last 10 runs of each job. Switch to a sortable table when you have many servers, and open any run to read its full log, including warnings and errors.

  • Totals for servers, jobs, runs, size and storage
  • Auto-refreshing dashboard for a video wall experience
  • Duplicati server version check against the latest GitHub release
Read the dashboard guide
02

Catch problems before they become data loss

duplistatus detects overdue, warning and failed backups automatically and alerts you by ntfy push or SMTP email.

  • Overdue checks run periodically by default
  • Get notifications for each job with per-job filters: off, all, warnings or errors
  • Reduce the notification noise with the Daily Summary email.
Read about backup monitoring
03

Troubleshoot with confidence

Open any run to read its log, with warnings and errors, and see which recovery points are available. Charts for duration, size and storage are there when you want more detail.

  • Automatic log collection from your Duplicati servers
  • Available versions shown for every run
  • Charts for duration, size and storage
Read about backup details

From zero to monitored in four steps

Containerised deployment means you are up and running in minutes — not hours.

Step 1

Deploy the container

Pull the image from Docker Hub or GitHub, set your timezone, and mount a data volume. The web UI listens on port 9666. Schema migrations apply automatically on startup.

Get Started
Installation guide
Step 2

Point Duplicati at duplistatus

Configure each Duplicati server to POST JSON reports to /api/upload. Then collect historical logs so monitoring intervals are filled in automatically.

--send-http-json-urls=http://host:9666/api/upload
--send-http-log-level=Information
--send-http-max-log-lines=500
Duplicati configuration
Step 3

Configure alerts

ntfy is already configured. Change the topic to your own topic, then scan the QR code generated by duplistatus to set it up on your phone.
Configure the email server settings to start receiving emails from duplistatus.

Set how often each backup is expected to run, and on which days.
Notification settings
Step 4

Let duplistatus watch your backups

duplistatus does the watching. If a backup is overdue, or finishes with warnings or errors, you get a notification or email.
For extra peace of mind, turn on the optional Daily Summary: you receive it every day, even when everything is fine.

Overdue and failing backups stand out at a glance.
User guide

Secure by default. Add more protection when you need it.

Login is on from the first start, so a private homelab is protected out of the box. Add API keys and IP allowlists when you expose it to the internet.

Login with roles

Sign in as Admin or User. Limit which servers each user can see.

API keys

Separate keys for Duplicati uploads and for read-only dashboards or widgets, with upload size and rate limits.

IP allowlists

Two independent allowlists: one for the admin interface, one for external APIs. They protect against spoofed client IPs when duplistatus runs behind a reverse proxy.

CSRF protection

Session-based routes are protected against cross-site request forgery.

Audit logging

Every configuration change and user action is recorded. Filter, export and set how long records are kept.

Application logs

An admin-only viewer lets you search, filter, and export application logs, with live updates.

Exposing it to the internet? Run it behind a reverse proxy with HTTPS. Read the guide

Built for the self-hosting community

duplistatus is open source, self-hosted, and designed to fit the way homelab owners and small-team sysadmins actually work.

Open source on GitHub

Full source code, issues, and releases. Contribute, fork, or self-host with no vendor lock-in.

View on GitHub

Comprehensive documentation

Setup guides, configuration reference and security settings, available in seven languages.

Read the docs

Docker, Portainer, and Podman

Images are published on Docker Hub and GitHub. Deploy with your preferred container runtime — no dependencies beyond a single data volume.

See installation options

SQLite + automatic migrations

State lives in a single SQLite file with schema migrations applied on startup. Back up the file, and you are done.

5 min
Overdue checks
Default interval
SQLite
Database
Single file, auto-migrated
7
Languages
UI and docs
Apache-2.0
License
Open source

Architecture at a glance

Frontend Next.js App Router (standalone output)
Background Separate cron service (internal only)
Database SQLite via better-sqlite3
Encryption bcrypt (login)
AES-256-GCM/PBKDF2-SHA256 (secrets)
Deploy Docker · Portainer Stacks · Podman
Alerts ntfy push · SMTP email · Daily Summary

The cron service handles

Overdue checks Version refresh Daily Summary dispatch Audit-log cleanup Weekly DB compact

duplistatus is an independent project and is not affiliated with the Duplicati team.

Get started in minutes

Pull the image, mount a data volume, and open port 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

After the container starts:

  1. 1 Open http://localhost:9666 in your browser
  2. 2 Log in with the default admin account. You are asked to change the default admin password at first login.
  3. 3 Connect your Duplicati servers following these instructions, then use Collect Backup Logs to import history
  4. 4 Exposing it to the internet? Add more protection by enabling API keys and IP allowlists, and put it behind a reverse proxy with HTTPS.