{"id":16129463,"url":"https://github.com/klutchell/balenablocks-duplicati","last_synced_at":"2025-04-06T13:41:45.881Z","repository":{"id":54252805,"uuid":"326703912","full_name":"klutchell/balenablocks-duplicati","owner":"klutchell","description":"balenablocks/duplicati","archived":false,"fork":false,"pushed_at":"2021-03-01T13:41:37.000Z","size":21,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-04T14:03:43.312Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/klutchell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-04T14:08:29.000Z","updated_at":"2021-11-11T14:06:39.000Z","dependencies_parsed_at":"2022-08-13T10:10:11.864Z","dependency_job_id":null,"html_url":"https://github.com/klutchell/balenablocks-duplicati","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalenablocks-duplicati","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalenablocks-duplicati/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalenablocks-duplicati/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalenablocks-duplicati/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klutchell","download_url":"https://codeload.github.com/klutchell/balenablocks-duplicati/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492460,"owners_count":20947541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T22:10:54.664Z","updated_at":"2025-04-06T13:41:45.841Z","avatar_url":"https://github.com/klutchell.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# balenablocks/duplicati\n\nA guide for adding [Duplicati](https://www.duplicati.com/) as a backup service to an existing app.\n\n## Goals\n\n- Perform encrypted off-site backups in case of data loss like memory card corruption\n- Easy to restore partial or complete data in case of emergency\n- Optionally use backups to migrate data to a new memory card or device\n\n## Why Duplicati\n\nFrom the [Duplicati](https://www.duplicati.com/) homepage:\n\n\u003e Many Backends\n\n\u003e Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Backblaze B2, Tardigrade, Microsoft OneDrive, Amazon S3, Google Drive, box.com, Mega, hubiC and many others.\n\n\u003e Features\n\n\u003e Backup files and folders with strong AES-256 encryption. Save space with incremental backups and data deduplication. Run backups on any machine through the web-based interface or via command line interface. Duplicati has a built-in scheduler and auto-updater.\n\n\u003e Free software\n\n\u003e Duplicati is free software and open source. You can use Duplicati for free even for commercial purposes. Source code is licensed under LGPL. Duplicati runs under Windows, Linux, MacOS. It requires .NET 4.5 or Mono.\n\n\u003e Strong encryption\n\n\u003e Duplicati uses strong AES-256 encryption to protect your privacy. You can also use GPG to encrypt your backup.\n\n\u003e Built for online\n\n\u003e Duplicati was designed for online backups from scratch. It is not only data efficient but also handles network issues nicely. E.g. interrupted backups can be resumed and Duplicati tests the content of backups regularly. That way broken backups on corrupt storage systems can be detected before it’s too late.\n\n\u003e Web-based user interface\n\n\u003e Duplicati is configured by a web interface that runs in any browser (even mobile) and can be accessed - if you like - from anywhere. This also allows to run Duplicati on headless machines like a NAS (network attached storage).\n\n## Deployment\n\nDuplicati is meant to be used alongside other services, so you will need to create a service in your `docker-compose.yml` file.\n\n```yaml\nversion: \"2.1\"\n\nvolumes:\n  duplicati:\n  # ... other volumes\n\nservices:\n  duplicati:\n    image: linuxserver/duplicati:\u003ctag\u003e\n    environment:\n      PUID: \"0\"\n      PGID: \"0\"\n      CLI_ARGS: --webservice-interface=any\n    ports:\n      - 8200:8200/tcp\n    volumes:\n      - duplicati:/config\n      - \u003cexampleVolumeA\u003e:/source/\u003cvolumeA\u003e\n      - \u003cexampleVolumeB\u003e:/source/\u003cvolumeB\u003e\n\n  # ... other services\n```\n\nNote that for each existing named volume we want backed up, we need to mount that volume to the duplicati service under `/source/\u003cname\u003e`.\n\nSo for example to add Duplicati to an existing [Pi-hole](https://github.com/klutchell/balena-pihole) app:\n\n```yaml\nversion: \"2.1\"\n\nvolumes:\n# volumes we want to back up\n  pihole_config:\n  dnsmasq_config:\n# duplicati database volume\n  duplicati:\n\nservices:\n\n  pihole:\n    build: ./pihole\n    privileged: true\n    volumes:\n      - \"pihole_config:/etc/pihole\"\n      - \"dnsmasq_config:/etc/dnsmasq.d\"\n    dns:\n      - \"127.0.0.1\"\n      - \"1.1.1.1\"\n    environment:\n      DNSMASQ_LISTENING: eth0\n      INTERFACE: eth0\n      DNS1: 127.0.0.1#5053\n      DNS2: 127.0.0.1#5053\n    network_mode: host\n    labels:\n      io.balena.features.dbus: \"1\"\n\n  unbound:\n    build: ./unbound\n    ports:\n      - \"5053:5053/udp\"\n\n# duplicati service definition\n  duplicati:\n    image: linuxserver/duplicati:latest\n    environment:\n      PUID: \"0\"\n      PGID: \"0\"\n      CLI_ARGS: --webservice-interface=any\n    ports:\n      - 8200:8200/tcp\n    volumes:\n      - duplicati:/config\n      - pihole_config:/source/pihole_config\n      - dnsmasq_config:/source/dnsmasq_config\n```\n\n## Usage\n\nOnce the service is defined and your volumes are shared we can use the Duplicati Web interface\nto define our backup source, destination, passphrase, and schedule.\n\nConnect to `http://\u003cdevice-ip\u003e:8200` to begin setup.\n\nThe first time you start the Duplicati Web interface, you'll be prompted to set a password.\n\nIt is strongly recommended to set a password to the Web interface by clicking the Yes button.\n\n### Creating a new backup job\n\nHere we'll refer to the official documentation as it will guide you through the wizard.\n\n\u003chttps://duplicati.readthedocs.io/en/latest/03-using-the-graphical-user-interface/#creating-a-new-backup-job\u003e\n\nHowever here are the quick steps:\n\n1. Add backup: Configure a new backup\n2. Give this backup a name (like the app/device name) and set a secure passphrase\n3. Backup destination has many options that we won't go into here\nbut the **Path on server** value should be somewhat unique (like the app/device name)\n4. For **Source data** just **Add a path directly** and specify `/source/`\n5. Add filters or exclusions if needed\n6. Choose a schedule and save!\n\nFor more info here's the official documention:\n\n- \u003chttps://duplicati.readthedocs.io/en/latest/\u003e\n\n## Acknowledgements\n\n- \u003chttps://github.com/duplicati/duplicati\u003e\n- \u003chttps://github.com/linuxserver/docker-duplicati\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklutchell%2Fbalenablocks-duplicati","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklutchell%2Fbalenablocks-duplicati","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklutchell%2Fbalenablocks-duplicati/lists"}