# Duplicati

Sistema de backups

# Instalação e configurações Duplicati

Procedimentos de instalação e configuração.

# Instalação Duplicati  (Linux Server)

Link: [https://github.com/linuxserver/docker-duplicati](https://github.com/linuxserver/docker-duplicati)

18/05/2025

The [LinuxServer.io](https://linuxserver.io/) team brings you another container release featuring:

- regular and timely application updates
- easy user mappings (PGID, PUID)
- custom base image with s6 overlay
- weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
- regular security updates

Find us at:

- [Blog](https://blog.linuxserver.io/) - all the things you can do with our containers including How-To guides, opinions and much more!
- [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
- [Discourse](https://discourse.linuxserver.io/) - post on our community forum.
- [Fleet](https://fleet.linuxserver.io/) - an online web interface which displays all of our maintained images.
- [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
- [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget

# [linuxserver/duplicati](https://github.com/linuxserver/docker-duplicati)

<div class="markdown-heading" dir="auto" id="bkmrk-" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#linuxserverduplicati)</div>[![Scarf.io pulls](https://camo.githubusercontent.com/71c397fd1522d6fd3f5ac264783f10c5b2e471bed2104c9bcf3a6db35cd00696/68747470733a2f2f73636172662e73682f696e7374616c6c732d62616467652f6c696e75787365727665722d63692f6c696e75787365727665722532466475706c69636174693f636f6c6f723d393433393864266c6162656c2d636f6c6f723d353535353535266c6f676f2d636f6c6f723d666666666666267374796c653d666f722d7468652d6261646765267061636b6167652d747970653d646f636b6572)](https://scarf.sh/) [![GitHub Stars](https://camo.githubusercontent.com/c56ba1fe103f7b5b47bc7c0b5704a3019970bd7beec5fd71a5a85a8d71d5477f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c696e75787365727665722f646f636b65722d6475706c69636174692e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6f676f3d676974687562)](https://github.com/linuxserver/docker-duplicati) [![GitHub Release](https://camo.githubusercontent.com/eb656a4d14e07b2666e200e401ab22f9b102a0d8b8e75b4ece2e725d09b7266d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6c696e75787365727665722f646f636b65722d6475706c69636174692e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6f676f3d676974687562)](https://github.com/linuxserver/docker-duplicati/releases) [![GitHub Package Repository](https://camo.githubusercontent.com/1f594eaaf805a9428ee37c12cd49218b52ac74e83618e4b7b6c004860cdaf96a/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76312e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d6c696e75787365727665722e696f266d6573736167653d4769744875622532305061636b616765266c6f676f3d676974687562)](https://github.com/linuxserver/docker-duplicati/packages) [![GitLab Container Registry](https://camo.githubusercontent.com/61016415992881b024fb77c00e202727e0e5c1d7ff26bb0b002d2359947bba01/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76312e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d6c696e75787365727665722e696f266d6573736167653d4769744c61622532305265676973747279266c6f676f3d6769746c6162)](https://gitlab.com/linuxserver.io/docker-duplicati/container_registry) [![Quay.io](https://camo.githubusercontent.com/b170dc305ac9bf57bed4299dfb6a4b7b49dce97620f9daa7ad705801d1fa639c/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76312e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d6c696e75787365727665722e696f266d6573736167653d517561792e696f)](https://quay.io/repository/linuxserver.io/duplicati) [![Docker Pulls](https://camo.githubusercontent.com/58a60c2b05b5a8f5dc99524f76f70f98e85430e8c10ecdd120531bf6530c55ff/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6c696e75787365727665722f6475706c69636174692e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d70756c6c73266c6f676f3d646f636b6572)](https://hub.docker.com/r/linuxserver/duplicati) [![Docker Stars](https://camo.githubusercontent.com/4f90ed55ea6cb32e42b562bb1ab9365e877eb9d654aea74fa616e30a6e40d239/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f73746172732f6c696e75787365727665722f6475706c69636174692e7376673f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d7374617273266c6f676f3d646f636b6572)](https://hub.docker.com/r/linuxserver/duplicati) [![Jenkins Build](https://camo.githubusercontent.com/7650cf3ac10049460827ced62c6059ef321286333fda278a84942ee7cf7cd57c/68747470733a2f2f696d672e736869656c64732e696f2f6a656e6b696e732f6275696c643f6c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266a6f6255726c3d687474707325334125324625324663692e6c696e75787365727665722e696f2532466a6f62253246446f636b65722d506970656c696e652d4275696c646572732532466a6f62253246646f636b65722d6475706c69636174692532466a6f622532466d6173746572253246266c6f676f3d6a656e6b696e73)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-duplicati/job/master/) [![LSIO CI](https://camo.githubusercontent.com/af83c4deca251b9386a03ef09e8f5eeeeec090d73d8314479c8ffdd37c343ef1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f79616d6c3f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d43492671756572793d43492675726c3d687474707325334125324625324663692d74657374732e6c696e75787365727665722e696f2532466c696e75787365727665722532466475706c69636174692532466c617465737425324663692d7374617475732e796d6c)](https://ci-tests.linuxserver.io/linuxserver/duplicati/latest/index.html)

[Duplicati](https://www.duplicati.com/) is a backup client that securely stores encrypted, incremental, compressed backups on local storage, cloud storage services and remote file servers. It works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon S3, Google Drive, box.com, Mega, B2, and many others.

[![duplicati](https://github.com/linuxserver/docker-templates/raw/master/linuxserver.io/img/duplicati-icon.png)](https://www.duplicati.com/)

## Supported Architectures

<div class="markdown-heading" dir="auto" id="bkmrk--3" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#supported-architectures)</div>We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).

Simply pulling `lscr.io/linuxserver/duplicati:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

<table id="bkmrk-architecture-availab"><thead><tr><th align="center">Architecture</th><th align="center">Available</th><th>Tag</th></tr></thead><tbody><tr><td align="center">x86-64</td><td align="center">✅</td><td>amd64-&lt;version tag&gt;</td></tr><tr><td align="center">arm64</td><td align="center">✅</td><td>arm64v8-&lt;version tag&gt;</td></tr><tr><td align="center">armhf</td><td align="center">❌</td><td> </td></tr></tbody></table>

## Version Tags

<div class="markdown-heading" dir="auto" id="bkmrk--5" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#version-tags)</div>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

<table id="bkmrk-tag-available-descri"><thead><tr><th align="center">Tag</th><th align="center">Available</th><th>Description</th></tr></thead><tbody><tr><td align="center">latest</td><td align="center">✅</td><td>Stable releases of Duplicati</td></tr><tr><td align="center">development</td><td align="center">✅</td><td>Beta releases of Duplicati</td></tr></tbody></table>

## Application Setup

<div class="markdown-heading" dir="auto" id="bkmrk--7" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#application-setup)</div>The webui is at `<your ip>:8200`.

For local backups select `/backups` as the destination. For more information see [Duplicati](https://www.duplicati.com/).

## Usage

<div class="markdown-heading" dir="auto" id="bkmrk--9" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#usage)</div>To help you get started creating a container from this image you can either use docker-compose or the docker cli.

<svg aria-hidden="true" class="octicon octicon-info mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note

Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.

### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))

<div class="markdown-heading" dir="auto" id="bkmrk--11" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#docker-compose-recommended-click-here-for-more-info)</div>```
---
services:
  duplicati:
    image: lscr.io/linuxserver/duplicati:latest
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - SETTINGS_ENCRYPTION_KEY=
      - CLI_ARGS= #optional
      - DUPLICATI__WEBSERVICE_PASSWORD= #optional
    volumes:
      - /path/to/duplicati/config:/config
      - /path/to/backups:/backups
      - /path/to/source:/source
    ports:
      - 8200:8200
    restart: unless-stopped
```

<div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto" id="bkmrk--13" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))

<div class="markdown-heading" dir="auto" id="bkmrk--14" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#docker-cli-click-here-for-more-info)</div>```
docker run -d \
  --name=duplicati \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e SETTINGS_ENCRYPTION_KEY= \
  -e CLI_ARGS= `#optional` \
  -e DUPLICATI__WEBSERVICE_PASSWORD= `#optional` \
  -p 8200:8200 \
  -v /path/to/duplicati/config:/config \
  -v /path/to/backups:/backups \
  -v /path/to/source:/source \
  --restart unless-stopped \
  lscr.io/linuxserver/duplicati:latest
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--16" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>## Parameters

<div class="markdown-heading" dir="auto" id="bkmrk--17" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#parameters)</div>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.

<table id="bkmrk-parameter-function--"><thead><tr><th align="center">Parameter</th><th>Function</th></tr></thead><tbody><tr><td align="center">`-p 8200:8200`</td><td>http gui</td></tr><tr><td align="center">`-e PUID=1000`</td><td>for UserID - see below for explanation</td></tr><tr><td align="center">`-e PGID=1000`</td><td>for GroupID - see below for explanation</td></tr><tr><td align="center">`-e TZ=Etc/UTC`</td><td>specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).</td></tr><tr><td align="center">`-e SETTINGS_ENCRYPTION_KEY=`</td><td>Encryption key for settings database. Minimum 8 characters, alphanumeric.</td></tr><tr><td align="center">`-e CLI_ARGS=`</td><td>Optionally specify any [CLI variables](https://duplicati.readthedocs.io/en/latest/07-other-command-line-utilities/) you want to launch the app with</td></tr><tr><td align="center">`-e DUPLICATI__WEBSERVICE_PASSWORD=`</td><td>Password for the webui. If left unset will default to `changeme` and can be changed from the webui settings.</td></tr><tr><td align="center">`-v /config`</td><td>Contains all relevant configuration files.</td></tr><tr><td align="center">`-v /backups`</td><td>Path to store local backups.</td></tr><tr><td align="center">`-v /source`</td><td>Path to source for files to backup.</td></tr></tbody></table>

## Environment variables from files (Docker secrets)

<div class="markdown-heading" dir="auto" id="bkmrk--19" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#environment-variables-from-files-docker-secrets)</div>You can set any environment variable from a file by using a special prepend `FILE__`.

As an example:

```
-e FILE__MYVAR=/run/secrets/mysecretvariable
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--21" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.

## Umask for running applications

<div class="markdown-heading" dir="auto" id="bkmrk--22" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#umask-for-running-applications)</div>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.

## User / Group Identifiers

<div class="markdown-heading" dir="auto" id="bkmrk--24" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#user--group-identifiers)</div>When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:

```
id your_user
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--26" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>Example output:

```
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)

```

<div class="snippet-clipboard-content notranslate position-relative overflow-auto" id="bkmrk--27" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>## Docker Mods

<div class="markdown-heading" dir="auto" id="bkmrk--28" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#docker-mods)</div>[![Docker Mods](https://camo.githubusercontent.com/9883c8aee6c0ba6beeec3ed76309c9385247caa6a6757c9e65fc8a0a4ad3b06b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f79616d6c3f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d6475706c69636174692671756572793d2532342e6d6f64732535422532376475706c69636174692532372535442e6d6f645f636f756e742675726c3d68747470732533412532462532467261772e67697468756275736572636f6e74656e742e636f6d2532466c696e7578736572766572253246646f636b65722d6d6f64732532466d61737465722532466d6f642d6c6973742e796d6c)](https://mods.linuxserver.io/?mod=duplicati "view available mods for this container.") [![Docker Universal Mods](https://camo.githubusercontent.com/5fd7f2836ef672b3860ed7c359d13fa2ab96a45ade2df0ee36b4f28d52b30960/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f79616d6c3f636f6c6f723d393433393864266c6162656c436f6c6f723d353535353535266c6f676f436f6c6f723d666666666666267374796c653d666f722d7468652d6261646765266c6162656c3d756e6976657273616c2671756572793d2532342e6d6f6473253542253237756e6976657273616c2532372535442e6d6f645f636f756e742675726c3d68747470732533412532462532467261772e67697468756275736572636f6e74656e742e636f6d2532466c696e7578736572766572253246646f636b65722d6d6f64732532466d61737465722532466d6f642d6c6973742e796d6c)](https://mods.linuxserver.io/?mod=universal "view available universal mods.")

We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

## Support Info

<div class="markdown-heading" dir="auto" id="bkmrk--30" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#support-info)</div>- Shell access whilst the container is running:
    
    ```
    docker exec -it duplicati /bin/bash
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- To monitor the logs of the container in realtime:
    
    ```
    docker logs -f duplicati
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- Container version number:
    
    ```
    docker inspect -f '{{ index .Config.Labels "build_version" }}' duplicati
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- Image version number:
    
    ```
    docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/duplicati:latest
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>

## Updating Info

<div class="markdown-heading" dir="auto" id="bkmrk--32" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#updating-info)</div>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](https://github.com/linuxserver/docker-duplicati#application-setup) section above to see if it is recommended for the image.

Below are the instructions for updating containers:

### Via Docker Compose

<div class="markdown-heading" dir="auto" id="bkmrk--34" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#via-docker-compose)</div>- Update images:
    
    
    - All images:
        
        ```
        docker-compose pull
        ```
        
        <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
    - Single image:
        
        ```
        docker-compose pull duplicati
        ```
        
        <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- Update containers:
    
    
    - All containers:
        
        ```
        docker-compose up -d
        ```
        
        <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
    - Single container:
        
        ```
        docker-compose up -d duplicati
        ```
        
        <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- You can also remove the old dangling images:
    
    ```
    docker image prune
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>

### Via Docker Run

<div class="markdown-heading" dir="auto" id="bkmrk--36" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#via-docker-run)</div>- Update the image:
    
    ```
    docker pull lscr.io/linuxserver/duplicati:latest
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- Stop the running container:
    
    ```
    docker stop duplicati
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- Delete the container:
    
    ```
    docker rm duplicati
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>
- Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
- You can also remove the old dangling images:
    
    ```
    docker image prune
    ```
    
    <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>

### Image Update Notifications - Diun (Docker Image Update Notifier)

<div class="markdown-heading" dir="auto" id="bkmrk--38" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#image-update-notifications---diun-docker-image-update-notifier)</div><svg aria-hidden="true" class="octicon octicon-light-bulb mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip

We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

## Building locally

<div class="markdown-heading" dir="auto" id="bkmrk--40" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#building-locally)</div>If you want to make local modifications to these images for development purposes or just to customize the logic:

```
git clone https://github.com/linuxserver/docker-duplicati.git
cd docker-duplicati
docker build \
  --no-cache \
  --pull \
  -t lscr.io/linuxserver/duplicati:latest .
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--42" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>The ARM variants can be built on x86\_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`

```
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--43" style="text-align: justify;"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.

## Versions

<div class="markdown-heading" dir="auto" id="bkmrk--44" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/linuxserver/docker-duplicati#versions)</div>- **31.01.25:** - Make `latest` stable releases, move beta releases to `development`.
- **28.01.25:** - Add xz-utils.
- **03.12.24:** - Add mscorefonts for captcha support.
- **29.11.24:** - Rebase to Noble, add support for settings DB encryption.
- **15.02.23:** - Rebase to Jammy.
- **03.08.22:** - Deprecate armhf.
- **25.04.22:** - Rebase to mono:focal.
- **01.08.19:** - Rebase to Linuxserver LTS mono version.
- **16.07.19:** - Allow for additional command line arguments in an environment variable.
- **28.06.19:** - Rebase to bionic.
- **23.03.19:** - Switching to new Base images, shift to arm32v7 tag.
- **28.02.19:** - Allow access from all hostnames, clarify info on image tags.
- **13.01.19:** - Use jq instead of awk in dockerfiles.
- **11.01.19:** - Multi-arch image.
- **09.12.17:** - Fix continuation lines.
- **31.08.17:** - Build only beta or release versions (thanks deasmi).
- **24.04.17:** - Initial release.

# Customizações Duplicati

# Duplicati Monitor

Link: [https://github.com/RafaMunoz/duplicati-monitor](https://github.com/RafaMunoz/duplicati-monitor) git clone [https://github.com/RafaMunoz/duplicati-monitor.git](https://github.com/RafaMunoz/duplicati-monitor.git)

# Duplicati Monitor

<div class="markdown-heading" dir="auto" id="bkmrk-">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#duplicati-monitor)</div>Duplicati Monitor is a docker-packaged monitoring solution for Duplicati.

It allows you to control the status of your backups and statistics for each report and notifies you by any means supported by **Apprice**. It is meant to be self-hosted and powered by docker.

## Quick Start

<div class="markdown-heading" dir="auto" id="bkmrk--2">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#quick-start)</div>### Notifications

<div class="markdown-heading" dir="auto" id="bkmrk--4">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#notifications)</div>To send notifications and satisfy the end user, it has been implemented with the Apprise library, which allows you to send a notification to almost all the most popular notification services available today, such as: Telegram, Discord, Slack, Amazon SNS, Gotify, etc.

You can check all the services available in the [official documentation](https://github.com/caronc/apprise#productivity-based-notifications).

### Templates

<div class="markdown-heading" dir="auto" id="bkmrk--6">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#templates)</div>You can create your own templates to receive the information you exactly need.

By default we use the following two:

```
# Succes backup
💾 🟢 <Extra.backup-name>

# Error backup 
💾 🔴 <Extra.backup-name>

```

<div class="snippet-clipboard-content notranslate position-relative overflow-auto" id="bkmrk--8"><div class="zeroclipboard-container">  
</div></div>You can create your own templates in a simple way. You only have to use the symbols `<` and `>` delimit the fields and separating keys with dots `.` to send along with the message that you want.

In the [docs/examples\_report](https://github.com/RafaMunoz/duplicati-monitor/blob/main/docs/examples_report) folder of this repository you have two examples of the JSON reports that Duplicati sends and in which you can see the fields that compose it.

For example, with the following template, the result shown in the telegram image would be obtained.

```
💾 🟢 Backup: <Extra.backup-name>\n - Examined Files: <Data.ExaminedFiles>\n - Duration: <Data.Duration>\n - Status: *<Data.TestResults.ParsedResult>*

```

<div class="snippet-clipboard-content notranslate position-relative overflow-auto" id="bkmrk--9"><div class="zeroclipboard-container">  
</div></div>[![telegram-example-notication](https://github.com/RafaMunoz/duplicati-monitor/raw/main/docs/img/telegram-example-notication.png)](https://github.com/RafaMunoz/duplicati-monitor/blob/main/docs/img/telegram-example-notication.png)

### Environment Variables

<div class="markdown-heading" dir="auto" id="bkmrk--11">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#environment-variables)</div><table id="bkmrk-environment-variable-1" style="width: 100%;"><thead><tr><th style="width: 17.998%;">ENVIRONMENT VARIABLE</th><th style="width: 9.6518%;">TYPE</th><th style="width: 18.1199%;">DEFAULT</th><th style="width: 54.2323%;">DESCRIPTION</th></tr></thead><tbody><tr><td style="width: 17.998%;">`URI_NOTIFICATION`</td><td style="width: 9.6518%;">required</td><td style="width: 18.1199%;"> </td><td style="width: 54.2323%;">URI in Apprise format where the notifications will be sent.</td></tr><tr><td style="width: 17.998%;">`TEMPLATE_SUCCESS`</td><td style="width: 9.6518%;">opcional</td><td style="width: 18.1199%;">💾 🟢 &lt;Extra.backup-name&gt;</td><td style="width: 54.2323%;">Message template to be sent when the backup is successful.</td></tr><tr><td style="width: 17.998%;">`TEMPLATE_ERROR`</td><td style="width: 9.6518%;">opcional</td><td style="width: 18.1199%;">💾 🔴 &lt;Extra.backup-name&gt;</td><td style="width: 54.2323%;">Message template that will be sent when the backup is executed in an erroneous way.</td></tr><tr><td style="width: 17.998%;">`PORT`</td><td style="width: 9.6518%;">opcional</td><td style="width: 18.1199%;">8000</td><td style="width: 54.2323%;">Listening port on which the service is set up to receive the reports.</td></tr></tbody></table>

### Docker Run

<div class="markdown-heading" dir="auto" id="bkmrk--13">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#docker-run)</div>To start the container you can do it with the following command.

```
docker run -d --name=duplicati-monitor -p 8000:8000 -e URI_NOTIFICATION=tgram://<TOKEN_TELEGRAM_BOT>/<CHANEL_ID>/?format=markdown rafa93m/duplicati-monitor

```

<div class="snippet-clipboard-content notranslate position-relative overflow-auto" id="bkmrk--15"><div class="zeroclipboard-container">  
</div></div>Or you can also use the following docker compose.

```
version: "3"
services:
    duplicati-monitor:
        container_name: duplicati-monitor
        image: rafa93m/duplicati-monitor
        ports:
            - 8000:8000
        environment:
            URI_NOTIFICATION: "tgram://<TOKEN_TELEGRAM_BOT>/<CHANEL_ID>/?format=markdown"
            TEMPLATE_SUCCESS: "💾 🟢 Backup: <Extra.backup-name>"
            TEMPLATE_ERROR: "💾 🔴 Backup <Extra.backup-name> failed 🔥 🔥"
        restart: unless-stopped
```

<div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto" id="bkmrk--16"><div class="zeroclipboard-container">  
</div></div>### Setup Duplicati

<div class="markdown-heading" dir="auto" id="bkmrk--17">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/RafaMunoz/duplicati-monitor#setup-duplicati)</div>Add theses two options for each backup you want to monitor:

- **send-http-result-output-format**: json
- **send-http-url**: http://**IP\_ADDRESS**:**PORT**/report

[![advanced-options](https://github.com/RafaMunoz/duplicati-monitor/raw/main/docs/img/advanced-options.png)](https://github.com/RafaMunoz/duplicati-monitor/blob/main/docs/img/advanced-options.png)

# Duplicati Dashboard

Link: [https://github.com/fabien-github/duplicati\_dashboard?tab=readme-ov-file#demo](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#demo)   
git clone [https://github.com/fabien-github/duplicati\_dashboard.git](https://github.com/fabien-github/duplicati_dashboard.git)

Duplicati Dashboard is a monitoring solution for [Duplicati](https://www.duplicati.com/).

It allows you to monitor your backups status, collects stats for each reports and alerts you by email when a backup fails. It is intended to be self-hosted and works with [docker-compose](https://docs.docker.com/compose/).

Everything is already pre-configured and ready to be deployed.

- [Duplicati Dashboard](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#duplicati-dashboard)
- [Demo](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#demo)
- [Quick Start](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#quick-start)
    - [Running with docker-compose](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#running-with-docker-compose)
    - [Setup Duplicati](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#setup-duplicati)
    - [Connect to your dashboard](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#connect-to-your-dashboard)
- [Configuration](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#configuration)
    - [Env file](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#env-file)
- [Notes](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#notes)
    - [Grafana configuration locked](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#grafana-configuration-locked)
    - [Backup over more than 30 days rotation](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#backup-over-more-than-30-days-rotation)
    - [Alerting graph](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#alerting-graph)
    - [Deleting removed backup data](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#deleting-removed-backup-data)
    - [Docker-compose](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#docker-compose)
- [Other informations](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#other-informations)
- [License](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#license)

# Demo

<div class="markdown-heading" dir="auto" id="bkmrk-" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#demo)</div>[![](https://github.com/fabien-github/duplicati_dashboard/raw/main/docs/img/demo.gif)](https://github.com/fabien-github/duplicati_dashboard/blob/main/docs/img/demo.gif)

> The right side of the video is not integrated in the dashboard. You can't control your backup with it.

# Quick Start

<div class="markdown-heading" dir="auto" id="bkmrk--3" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#quick-start)</div>### Running with docker-compose

<div class="markdown-heading" dir="auto" id="bkmrk--5" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#running-with-docker-compose)</div>```
git clone https://github.com/fabien-github/duplicati_dashboard.git
cd duplicati_dashboard
docker-compose up -d
```

<div class="zeroclipboard-container" id="bkmrk--7" style="text-align: justify;">  
</div>### Setup Duplicati

<div class="markdown-heading" dir="auto" id="bkmrk--8" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#setup-duplicati)</div>Add theses two options for each backup you want to monitor:

- **send-http-result-output-format:** json
- **send-http-url:** [http://localhost:8080](http://localhost:8080)

[![](https://github.com/fabien-github/duplicati_dashboard/raw/main/docs/img/backup_options_report_config.png)](https://github.com/fabien-github/duplicati_dashboard/blob/main/docs/img/backup_options_report_config.png)

> This assumes that your Duplicati instance is on the same host as your Duplicati Dashboard.

### Connect to your dashboard

<div class="markdown-heading" dir="auto" id="bkmrk--11" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#connect-to-your-dashboard)</div>[http://localhost:3000](http://localhost:3000)

Login: `admin` Password: `password`

> For email alerting, you need to configure a SMTP relay. See [Configuration &gt; Env file](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#env-file)

# Configuration

<div class="markdown-heading" dir="auto" id="bkmrk--13" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#configuration)</div>## Env file

<div class="markdown-heading" dir="auto" id="bkmrk--15" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#env-file)</div>The file [`config.env`](https://github.com/fabien-github/duplicati_dashboard/blob/main/config.env) is used to configure some options. It will be shared between the 3 containers.

Only use this default configuration for testing purposes.

Influxdb variable will create and setup the database only on the first startup.

<table id="bkmrk-variables-default-de" tabindex="0"><thead><tr><th>Variables</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>DOCKER\_INFLUXDB\_INIT\_MODE</td><td>setup</td><td>[Automatically bootstrap the system](https://github.com/docker-library/docs/blob/master/influxdb/README.md#automated-setup)</td></tr><tr><td>DOCKER\_INFLUXDB\_INIT\_USERNAME</td><td>telegraf\_user</td><td>Influxdb superadmin user</td></tr><tr><td>DOCKER\_INFLUXDB\_INIT\_PASSWORD</td><td>telegraf\_password</td><td>Influxdb superadmin password</td></tr><tr><td>DOCKER\_INFLUXDB\_INIT\_ORG</td><td>telegraf\_org</td><td>Influxdb Organization (used by influxdb / telegraf / grafana)</td></tr><tr><td>DOCKER\_INFLUXDB\_INIT\_BUCKET</td><td>telegraf</td><td>Influxdb bucket to store reports (used by influxdb / telegraf / grafana)</td></tr><tr><td>DOCKER\_INFLUXDB\_INIT\_ADMIN\_TOKEN</td><td>telegraf\_token</td><td>Influxdb superadmin token (used by influxdb / telegraf / grafana)</td></tr><tr><td>DOCKER\_INFLUXDB\_INIT\_RETENTION</td><td> </td><td>Influxdb data retention, default will retain forever</td></tr><tr><td>INFLUXD\_REPORTING\_DISABLED</td><td>false</td><td>Disable [InfluxData telemetry](https://docs.influxdata.com/influxdb/v2.0/reference/config-options/#reporting-disabled)</td></tr><tr><td>TELEGRAF\_LISTENER\_PORT</td><td>8080</td><td>Port used by [http\_listener\_v2](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/http_listener_v2) input, endpoint for the reports sent by Duplicati</td></tr><tr><td>TELEGRAF\_LISTENER\_PATH</td><td>/</td><td>Path to listen to</td></tr><tr><td>GF\_SECURITY\_ADMIN\_USER</td><td>admin</td><td>Grafana superadmin user</td></tr><tr><td>GF\_SECURITY\_ADMIN\_PASSWORD</td><td>password</td><td>Grafana superadmin password</td></tr><tr><td>GF\_SERVER\_ROOT\_URL</td><td>[http://localhost:3000](http://localhost:3000)</td><td>Grafana URL, used in some templates like email notifications</td></tr><tr><td>GF\_DASHBOARDS\_DEFAULT\_HOME\_DASHBOARD\_PATH</td><td>/etc/grafana/provisioning/dashboards/duplicati\_dashboard.json</td><td>Force Duplicati dashboard by default on home page</td></tr><tr><td>GF\_SMTP\_ENABLED</td><td>false</td><td>[Set to true for email notifications](https://grafana.com/docs/grafana/latest/administration/configuration/#smtp)</td></tr><tr><td>GF\_SMTP\_HOST</td><td>localhost:25</td><td>SMTP relay server. \[host\]:\[port\]</td></tr><tr><td>GF\_SMTP\_FROM\_NAME</td><td>Grafana</td><td>Name of the email sender</td></tr><tr><td>GF\_SMTP\_USER</td><td> </td><td>In case of SMTP auth</td></tr><tr><td>GF\_SMTP\_PASSWORD</td><td> </td><td>In case of SMTP auth</td></tr><tr><td>GF\_SMTP\_FROM\_ADDRESS</td><td><admin@grafana.localhost></td><td>Address used when sending out emails</td></tr><tr><td>GF\_SMTP\_EHLO\_IDENTITY</td><td>${HOSTNAME}</td><td>Name to be used as client identity for EHLO in SMTP dialog (Default will be the container ID)</td></tr><tr><td>GF\_SMTP\_STARTTLS\_POLICY</td><td> </td><td>“OpportunisticStartTLS”, “MandatoryStartTLS”, “NoStartTLS”</td></tr><tr><td>NOTIFIER\_EMAIL\_RECIPIENT</td><td><example@example.com></td><td>Recipients for email notification (separated by a semicolon)</td></tr><tr><td>NOTIFIER\_EMAIL\_REMINDER\_ENABLE</td><td>true</td><td>Re-send an email if alerts are still active</td></tr><tr><td>NOTIFIER\_EMAIL\_REMINDER\_FREQUENCY</td><td>2h</td><td>Delay between email reminders</td></tr></tbody></table>

# Notes

<div class="markdown-heading" dir="auto" id="bkmrk--17" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#notes)</div>## Grafana configuration locked

<div class="markdown-heading" dir="auto" id="bkmrk--19" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#grafana-configuration-locked)</div>The dashboard is locked by the Grafana provisioning system. You can't edit the datasource, the dashboard or the alert notifier from the UI. You will need to copy the dashboard or disable the provisioning configuration.

Dashboard path: `./grafana/provisioning/dashboards/duplicati_dashboard.json`

The idea is to keep the stack easy to deploy for everyone without investing time to learn Grafana configuration.

Feel free to fork the project or directly edit files on your own.

More information [here](https://grafana.com/docs/grafana/latest/administration/provisioning/).

## Backup over more than 30 days rotation

<div class="markdown-heading" dir="auto" id="bkmrk--21" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#backup-over-more-than-30-days-rotation)</div>- Grafana will discover your backups name from the reports but only over the last 90 days. So if your backups are scheduled for more than 90 days, you will need to edit the request of the variable `Backup` in the dashboard configuration:

```
from(bucket: v.defaultBucket)
  |> range(start: -90d)
  |> filter(fn: (r) => true)
  |> toString()
  |> group(columns: ["backup-name"])
  |> distinct(column: "backup-name")
  |> keep(columns: ["_value"])
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--23" style="text-align: justify;"><div class="zeroclipboard-container">  
</div></div>- Last reported status / Last reported variations / Alerting graph are based over the past 30 days. You will need to adapt each panel requests if your backups are scheduled over more than 30 days.

```
import "influxdata/influxdb/schema"

from(bucket: v.defaultBucket)
  |> range(start: -30d)
  ...
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--24" style="text-align: justify;"><div class="zeroclipboard-container">  
</div></div>- In [v2](https://github.com/fabien-github/duplicati_dashboard/releases/tag/v1.0.0), alerts have their own provisioning file and query range can be edited [here](https://github.com/fabien-github/duplicati_dashboard/blob/3e1d558d54c6b3ecbb7ed67627a812c5dd060f31/grafana/provisioning/alerting/duplicati_alert.yml#L30).

## Alerting graph

<div class="markdown-heading" dir="auto" id="bkmrk--25" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#alerting-graph)</div>The section "Alerting graph" is only used to trigger an alert when a backup fails. This is due to the lack of grafana alert support on other panel type. [\#6983](https://github.com/grafana/grafana/issues/6983)

Backups status will be checked every minutes. An alert will be triggered after a pending status of 10min. Same delays are used on the recovery.

Warning reports don't trigger an alert.

## Deleting removed backup data

<div class="markdown-heading" dir="auto" id="bkmrk--27" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#deleting-removed-backup-data)</div>After getting inside the influxdb container:

```
influx delete \
  --org telegraf_org \
  --bucket telegraf \
  --token "telegraf_token" \
  --start 1970-01-01T00:00:00Z \
  --stop $(date +"%Y-%m-%dT%H:%M:%SZ") \
  --predicate '_measurement="duplicati" AND "backup-name"="backup_to_delete"'
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--29" style="text-align: justify;"><div class="zeroclipboard-container">  
</div></div>## Docker-compose

<div class="markdown-heading" dir="auto" id="bkmrk--30" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#docker-compose)</div>- **Telegraf**: Receive JSON reports from Duplicati.
- **Influxdb**: Store reports converted by Telegraf.
- **Grafana**: Requests Influxdb to generate dashboard and alerts.

Telegraf endpoint provides a limited [HTTP autentification](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/http_listener_v2).  
The configuration file is located here : `./telegraf/telegraf.conf`

Feel free to add a proxy like traefik or nginx to protect the stack on an unsecure network. (TLS, IP Restrictions, ...)

# Other informations

<div class="markdown-heading" dir="auto" id="bkmrk--32" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#other-informations)</div>- Not sure of the scalabilty, requests to the database are not efficients. Timeseries databases are not really adapted for this kind of data. This is mainly due to the nested and uneven json format from the reports and the variation time between reports.
- Features are limited directly by the stack itself. For example, it's nearly impossible to add a managment system for the backups.
- This project has no link with the development of Duplicati and his team.

# License

<div class="markdown-heading" dir="auto" id="bkmrk--34" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/fabien-github/duplicati_dashboard?tab=readme-ov-file#license)</div>Distributed under the GNU General Public License v3.0 License. See [LICENSE](https://github.com/fabien-github/duplicati_dashboard/blob/main/LICENSE) for more information.

# Duplicati Dashboard2

Link: [https://github.com/wchorski/duplicati-dashboard](https://github.com/wchorski/duplicati-dashboard) git clone [https://github.com/wchorski/duplicati-dashboard.git](https://github.com/wchorski/duplicati-dashboard.git)

A NodeJS based server that collects JSON data from Duplicati backup logs  
📦 Tech

 Frontend: NextJS  
 API: NextJS  
 Database: InfluxDB

 \[!warning\] Backups sharing the same name will cause issues. The backup's name must be unique across all Duplicati instances, it will be used as an ID for logging. MUST BE URL FRIENDLY example: "Laptop--Home\_Folder\_Backup", "Desktop--Home\_Folder\_Backup" is a good naming convention.

Usecase

Initally this was just some middle ware that serves as an endpoint for JSON friendly monitoring apps, but I also built a simple UI so it could be used as a standalone app.  
Duplicati Setup

you can either add these settings for the globally or per backup in the Advanced options

 send-http-result-output-format = json  
 send-http-url = "http://APPSDOMAIN/api/backups"

API

Here is a breakdown of what endpoints and search parameters that can be passed through.  
URL Breakdown

http://APPDOMAIN/backups/BACKUP\_ID?start=-5h&amp;first=true

 BACKUP\_ID =&gt; the id (or name) of the backup saved  
 stuff after the "?" search query sets range of time of pulled data  
 start =&gt; how far back to you want to start pulling data i.e.  
 -40d 40 days ago \[the default\]  
 -5h 5 hours ago  
 -60m 60 miniutes ago  
 1999-12-31T00:00:00 starting on December 31st, 1999  
 1694117521 starting on this UNIX time (seconds)  
 stop =&gt; the end of the range  
 now() =&gt; my current time \[the default\]  
 all the other examples above as long as the date is after the start  
 both query parameters can be omitted  
 last =&gt; set to true if you'd like the last recorded point in the table  
 can also use the http://localhost:3000/api/backups/last/BACKUP\_ID endpoint for cleaner GET (this endpoint also takes start and stop query parameters)  
 first =&gt; same as last but returns the first point of recoreded data within the range

 \[!note\] make sure relative dates have a negative i.e. -5h as your are looking back in time. Positive time values will cause errors

Examples  
query url  
all backup stats in database http://APPDOMAIN/backups  
single backup stats http://APPDOMAIN/backups/BACKUP\_ID  
last recorded backup stat http://APPDOMAIN/backups/last/BACKUP\_ID  
same as above http://APPDOMAIN/backups/BACKUP\_ID?last=true  
last recorded backup stat in the last 5 hours http://APPDOMAIN/backups/last/BACKUP\_ID?start=-5h  
⚙️ Development

 git clone https://github.com/wchorski/duplicati-dashboard.git &amp;&amp; cd duplicati-dashboard  
 cp .env.template .env.local  
 set up InfluxDB instance  
 get InfluxDB API Token for .env.local  
 yarn install  
 yarn dev

🏭 Production

 git clone https://github.com/wchorski/duplicati-dashboard.git &amp;&amp; cd duplicati-dashboard  
 cp .env.template .env  
 the INFLUX\_TOKEN in .env should be a long ~88 character string  
 docker compose up -d

Home Assistant

rest:   
\- authentication: basic  
 username: "admin"  
 password: "password"  
 scan\_interval: 86400  
 resource: http://APPDOMAIN.lan/api/backups/last/DUPLICATI\_ID  
 sensor:  
\- name: "duplicati-DUPLICATI\_ID-status"  
 value\_template: "{{ value\_json.status }}"  
\- name: "duplicati-DUPLICATI\_ID-time"  
 value\_template: &gt;  
 {% set thistime = value\_json.time %}  
 {{ as\_timestamp(thistime) | timestamp\_custom("%Y %M, %d %H:%M") }}

\#Todo

 create dynamic nav based on unique duplicati\_ids from database  
 add FAQ as a page inside the app  
 mobile friendly (almost there)  
 graph trends in app  
 Home Assistant Template sensor  
 Don't be lazy and figure out Types in TableClient.tsx component  
 get real data for screenshots  
 why is bg tile image weird when scrolling on mobile?  
 human readable bytes formatter (gb tb)  
 human readable duration formatter