{"id":45911366,"url":"https://github.com/AdrienPoupa/rclone-backup","last_synced_at":"2026-03-27T23:01:11.284Z","repository":{"id":214561126,"uuid":"736813807","full_name":"AdrienPoupa/rclone-backup","owner":"AdrienPoupa","description":"Docker image for Rclone powered backups (files, folders, databases)","archived":false,"fork":false,"pushed_at":"2026-02-23T04:19:25.000Z","size":412,"stargazers_count":26,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-23T12:20:41.386Z","etag":null,"topics":["backup","docker","docker-compose","rclone","rclone-backup"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdrienPoupa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-29T00:36:16.000Z","updated_at":"2026-02-23T04:19:04.000Z","dependencies_parsed_at":"2023-12-30T23:24:42.974Z","dependency_job_id":"1eeda60b-1fe2-40fd-be31-8e5aaffe6d00","html_url":"https://github.com/AdrienPoupa/rclone-backup","commit_stats":null,"previous_names":["adrienpoupa/rclone-backup"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/AdrienPoupa/rclone-backup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrienPoupa%2Frclone-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrienPoupa%2Frclone-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrienPoupa%2Frclone-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrienPoupa%2Frclone-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdrienPoupa","download_url":"https://codeload.github.com/AdrienPoupa/rclone-backup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrienPoupa%2Frclone-backup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31065013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T22:49:25.097Z","status":"ssl_error","status_checked_at":"2026-03-27T22:49:22.599Z","response_time":164,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["backup","docker","docker-compose","rclone","rclone-backup"],"created_at":"2026-02-28T07:00:27.280Z","updated_at":"2026-03-27T23:01:11.277Z","avatar_url":"https://github.com/AdrienPoupa.png","language":"Shell","funding_links":[],"categories":["docker"],"sub_categories":[],"readme":"# Rclone Backup\n\n[![Docker Image Version (latest by date)](https://img.shields.io/docker/v/adrienpoupa/rclone-backup?label=Version\u0026logo=docker)](https://hub.docker.com/r/adrienpoupa/rclone-backup/tags) [![Docker Pulls](https://img.shields.io/docker/pulls/adrienpoupa/rclone-backup?label=Docker%20Pulls\u0026logo=docker)](https://hub.docker.com/r/adrienpoupa/rclone-backup) [![GitHub](https://img.shields.io/github/license/adrienpoupa/rclone-backup?label=License\u0026logo=github)](https://github.com/AdrienPoupa/rclone-backup/blob/master/LICENSE)\n\nForked from [ttionya/vaultwarden-backup](https://github.com/ttionya/vaultwarden-backup).\n\nThis tool supports backing up the following files or directories.\n\n- Any directory you specify\n- SQLite databases\n- MySQL/MariaDB databases\n- PostgreSQL databases\n\nAnd the following ways of notifying backup results are supported.\n\n- Ping (only send on success)\n- Mail (SMTP based, send on success and on failure)\n\n## Usage\n\n### Configure Rclone (⚠️ MUST READ ⚠️)\n\n\u003e **You need to configure Rclone first, otherwise the backup tool will not work.**\n\nWe upload the backup files to the storage system by [Rclone](https://rclone.org/).\n\nVisit [GitHub](https://github.com/rclone/rclone) for more storage system tutorials. Different systems get tokens differently.\n\n#### Configure and Check\n\nYou can get the token by the following command.\n\n```shell\ndocker run --rm -it \\\n  --mount type=volume,source=rclone-backup-data,target=/config/ \\\n  adrienpoupa/rclone-backup:latest \\\n  rclone config\n```\n\n**We recommend setting the remote name to `RcloneBackup`, otherwise you need to specify the environment variable `RCLONE_REMOTE_NAME` as the remote name you set.**\n\nAfter setting, check the configuration content by the following command.\n\n```shell\ndocker run --rm -it \\\n  --mount type=volume,source=rclone-backup-data,target=/config/ \\\n  adrienpoupa/rclone-backup:latest \\\n  rclone config show\n\n# AWS S3 Example\n# [RcloneBackup]\n# type = s3\n# provider = AWS\n# access_key_id = \u003ckey\u003e\n# secret_access_key = \u003ckey\u003e\n# region = us-east-1\n# location_constraint = us-east-1\n# acl = private\n# server_side_encryption = AES256\n# storage_class = INTELLIGENT_TIERING\n# bucket_acl = private\n# no_check_bucket = true\n```\n\nDownload `docker-compose.yml` to you machine, edit environment variables and start it.\n\nYou need to go to the directory where the `docker-compose.yml` file is saved.\n\n#### Options\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e※ You have the compressed file named \u003ccode\u003ebackup\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n##### --zip-file \\\u003cfile\u003e\n\nYou need to use this option to specify the `backup` compressed package.\n\nMake sure the file name in the compressed package has not been changed.\n\n##### -p / --password\n\nTHIS IS INSECURE!\n\nIf the `backup` compressed package has a password, you can use this option to set the password to extract it.\n\nIf not, the password will be asked for interactively.\n\n\u003c/details\u003e\n\n## Environment Variables\n\n\u003e **Note:** All environment variables have default values, you can use the docker image without setting any environment variables.\n\n#### RCLONE_REMOTE_NAME\n\nThe name of the Rclone remote, which needs to be consistent with the remote name in the rclone config.\n\nYou can view the current remote name with the following command.\n\n```shell\ndocker run --rm -it \\\n  --mount type=volume,source=rclone-backup-data,target=/config/ \\\n  adrienpoupa/rclone-backup:latest \\\n  rclone config show\n\n# [RcloneBackup] \u003c- this\n# ...\n```\n\nDefault: `RcloneBackup`\n\n#### RCLONE_REMOTE_DIR\n\nThe folder where backup files are stored in the storage system.\n\nDefault: `/RcloneBackup/`\n\n#### RCLONE_GLOBAL_FLAG\n\nRclone global flags, see [flags](https://rclone.org/flags/).\n\n**Do not add flags that will change the output, such as `-P`, which will affect the deletion of outdated backup files.**\n\nDefault: `''`\n\n#### CRON\n\nSchedule to run the backup script, based on [`supercronic`](https://github.com/aptible/supercronic). You can test the rules [here](https://crontab.guru/#5_*_*_*_*).\n\nDefault: `5 * * * *` (run the script at 5 minute every hour)\n\n#### DB_TYPE\n\nDatabase to back up, can be one of `sqlite`, `mysql` or `postgresql`.\n\nDefault: `none` to disable.\n\n#### BACKUP_FOLDER_NAME\n\nName of the folder to back up, eg `data`.\n\nDefault: `data`\n\n#### BACKUP_FOLDER_PATH\n\nPath of the folder to back up, eg `/data`/\n\nDefault: `/data`\n\nMultiple folders can be backed up by doing the following, with the same syntax as [multiple remotes](docs/multiple-remote-destinations.md):\n\n```\nBACKUP_FOLDER_NAME_1: first-folder\nBACKUP_FOLDER_PATH_1: /first\nBACKUP_FOLDER_NAME_2: second-folder\nBACKUP_FOLDER_PATH_2: /second\n```\n\n#### ZIP_ENABLE\n\nPack all backup files into a compressed file. When set to `'FALSE'`, each backup file will be uploaded independently.\n\nDefault: `TRUE`\n\n#### ZIP_PASSWORD\n\nThe password for the compressed file. Note that the password will always be used when packing the backup files. Set to `\"\"` to disable.\n\nDefault: `123456`\n\n#### ZIP_TYPE\n\nBecause the `zip` format is less secure, we offer archives in `7z` format for those who seek security.\n\nDefault: `zip` (only support `zip` and `7z` formats)\n\n#### BACKUP_KEEP_DAYS\n\nOnly keep last a few days backup files in the storage system. Set to `0` to keep all backup files.\n\nDefault: `0`\n\n#### BACKUP_FILE_SUFFIX\n\nEach backup file is suffixed by default with `%Y%m%d`. If you back up your vault multiple times a day, that suffix is not unique anymore. This environment variable allows you to append a unique suffix to that date to create a unique backup name.\n\nYou can use any character except for `/` since it cannot be used in Linux file names.\n\nThis environment variable combines the functionalities of [`BACKUP_FILE_DATE`](#backup_file_date) and [`BACKUP_FILE_DATE_SUFFIX`](#backup_file_date_suffix), and has a higher priority. You can directly use this environment variable to control the suffix of the backup files.\n\nPlease use the [date man page](https://man7.org/linux/man-pages/man1/date.1.html) for the format notation.\n\nDefault: `%Y%m%d`\n\n#### TIMEZONE\n\nSet your timezone name.\n\nHere is timezone list at [wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).\n\nDefault: `UTC`\n\n#### DISPLAY_NAME\n\nA custom name to identify your vaultwarden instance in notifications and logs.\n\nThis doesn't affect functionality, it only affects the display in the notification title and partial log output.\n\nDefault: `RcloneBackup`\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e※ Other environment variables\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e **You don't need to change these environment variables unless you know what you are doing.**\n\n#### BACKUP_FILE_DATE\n\nYou should use the [`BACKUP_FILE_SUFFIX`](#backup_file_suffix) environment variable instead.\n\nEdit this environment variable only if you explicitly want to change the time prefix of the backup file (e.g. 20220101). **Incorrect configuration may result in the backup file being overwritten by mistake.**\n\nSame rule as [`BACKUP_FILE_DATE_SUFFIX`](#backup_file_date_suffix).\n\nDefault: `%Y%m%d`\n\n#### BACKUP_FILE_DATE_SUFFIX\n\nYou should use the [`BACKUP_FILE_SUFFIX`](#backup_file_suffix) environment variable instead.\n\nEach backup file is suffixed by default with `%Y%m%d`. If you back up your vault multiple times a day, that suffix is not unique anymore.\nThis environment variable allows you to append a unique suffix to that date (`%Y%m%d${BACKUP_FILE_DATE_SUFFIX}`) to create a unique backup name.\n\nNote that only numbers, upper and lower case letters, `-`, `_`, `%` are supported.\n\nPlease use the [date man page](https://man7.org/linux/man-pages/man1/date.1.html) for the format notation.\n\nDefault: `''`\n\n#### SQLITE_DATABASE\n\nSet the path for the SQLite database file.\n\nDefault: `${BACKUP_FOLDER_PATH}/db.sqlite3`\n\n\u003c/details\u003e\n\n## Notification\n\n### Ping\n\nWe provide functionality to send notifications when the backup is completed, started, successful, or failed.\n\n**Using a [healthcheck.io](https://healthchecks.io/) address or other similar cron monitoring addresses is a good choice, and it is also recommended.** For more complex notification scenarios, you can use environment variables with the `_CURL_OPTIONS` suffix to set curl options. For example, you can add request headers, change the request method, etc.\n\nFor different notification scenarios, **the backup tool provides `%{subject}` and `%{content}` placeholders to replace the actual title and content**. You can use them in the following environment variables. Note that the title and content may contain spaces. For the four environment variables containing `_CURL_OPTIONS`, the placeholders will be directly replaced, retaining spaces. For other `PING_URL` environment variables, spaces will be replaced with `+` to comply with URL rules.\n\n| Environment Variable               | Trigger Status                  | Test Identifier | Description                                                          |\n| ---------------------------------- | ------------------------------- | --------------- | -------------------------------------------------------------------- |\n| PING_URL                           | completion (success or failure) | `completion`    | The URL to which the request is sent after the backup is completed.  |\n| PING_URL_CURL_OPTIONS              |                                 |                 | Curl options used with `PING_URL`                                    |\n| PING_URL_WHEN_START                | start                           | `start`         | The URL to which the request is sent when the backup starts.         |\n| PING_URL_WHEN_START_CURL_OPTIONS   |                                 |                 | Curl options used with `PING_URL_WHEN_START`                         |\n| PING_URL_WHEN_SUCCESS              | success                         | `success`       | The URL to which the request is sent after the backup is successful. |\n| PING_URL_WHEN_SUCCESS_CURL_OPTIONS |                                 |                 | Curl options used with `PING_URL_WHEN_SUCCESS`                       |\n| PING_URL_WHEN_FAILURE              | failure                         | `failure`       | The URL to which the request is sent after the backup fails.         |\n| PING_URL_WHEN_FAILURE_CURL_OPTIONS |                                 |                 | Curl options used with `PING_URL_WHEN_FAILURE`                       |\n\n\u003cbr\u003e\n\n### Ping Test\n\nYou can use the following command to test the Ping sending.\n\nThe \"test identifier\" is the identifier in the table in the [previous section](#ping). You can use `completion`, `start`, `success`, or `failure`, which determines which set of environment variables to use.\n\n```shell\ndocker run --rm -it \\\n  -e PING_URL='\u003cyour ping url\u003e' \\\n  -e PING_URL_CURL_OPTIONS='\u003cyour curl options for PING_URL\u003e' \\\n  -e PING_URL_WHEN_START='\u003cyour ping url\u003e' \\\n  -e PING_URL_WHEN_START_CURL_OPTIONS='\u003cyour curl options for PING_URL_WHEN_START\u003e' \\\n  -e PING_URL_WHEN_SUCCESS='\u003cyour ping url\u003e' \\\n  -e PING_URL_WHEN_SUCCESS_CURL_OPTIONS='\u003cyour curl options for PING_URL_WHEN_SUCCESS\u003e' \\\n  -e PING_URL_WHEN_FAILURE='\u003cyour ping url\u003e' \\\n  -e PING_URL_WHEN_FAILURE_CURL_OPTIONS='\u003cyour curl options for PING_URL_WHEN_FAILURE\u003e' \\\n  adrienpoupa/rclone-backup:latest ping \u003ctest identifier\u003e\n```\n\n\u003cbr\u003e\n\n### Mail\n\n| Environment Variable | Default Value | Description                                           |\n| -------------------- | ------------- | ----------------------------------------------------- |\n| MAIL_SMTP_ENABLE     | `FALSE`       | Enable sending mail.                                  |\n| MAIL_SMTP_VARIABLES  |               | Mail sending options.                                 |\n| MAIL_TO              |               | The recipient of the notification email.              |\n| MAIL_WHEN_SUCCESS    | `TRUE`        | Send an email when the backup completes successfully. |\n| MAIL_WHEN_FAILURE    | `TRUE`        | Send an email if the backup fails.                    |\n\nFor `MAIL_SMTP_VARIABLES`, you need to configure the mail sending options yourself. **We will set the email subject based on the usage scenario, so you should not use the `-s` flag.**\n\n```text\n# My example:\n\n# For Zoho\n-S smtp-use-starttls \\\n-S smtp=smtp://smtp.zoho.com:587 \\\n-S smtp-auth=login \\\n-S smtp-auth-user=\u003cmy-email-address\u003e \\\n-S smtp-auth-password=\u003cmy-email-password\u003e \\\n-S from=\u003cmy-email-address\u003e\n```\n\nConsole showing warnings? Check [issue #177](https://github.com/ttionya/vaultwarden-backup/issues/117#issuecomment-1691443179) for more details.\n\n\u003cbr\u003e\n\n### Mail Test\n\nYou can use the following command to test mail sending. We will add the `-v` flag to display detailed information, so you do not need to set it again in `MAIL_SMTP_VARIABLES`.\n\n```shell\ndocker run --rm -it -e MAIL_SMTP_VARIABLES='\u003cyour smtp variables\u003e' ttionya/vaultwarden-backup:latest mail \u003cmail send to\u003e\n\n# Or\n\ndocker run --rm -it -e MAIL_SMTP_VARIABLES='\u003cyour smtp variables\u003e' -e MAIL_TO='\u003cmail send to\u003e' ttionya/vaultwarden-backup:latest mail\n```\n\n\u003cbr\u003e\n\n### Discord Notifications\n\nYou can receive backup status notifications on Discord using a Webhook URL.\n\n| Environment Variable  | Default Value | Description                                                                                                                               |\n| --------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |\n| `DISCORD_WEBHOOK_URL` |               | Your Discord Webhook URL. [How to create a Discord Webhook](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks).    |\n| `DISCORD_ENABLED`     | `FALSE`       | Set to `TRUE` to enable Discord notifications. If the Webhook URL is provided, it defaults to `TRUE` unless explicitly set to `FALSE`. |\n| `NOTIFY_DEBUG`        | `FALSE`       | Set to `TRUE` to print the JSON payload sent to Discord. Useful for troubleshooting.                                                      |\n\nYour `DISPLAY_NAME` will be used as the username for the bot sending the message, and also in the title of the notification embed.\n\n#### Discord Test\n\nYou can test Discord notifications using the following command. This will send a \"test\" status notification.\nRemember to replace `\u003cyour_discord_webhook_url\u003e` with your actual Discord webhook URL.\n\n```shell\ndocker run --rm -it \\\n  -e DISPLAY_NAME=\"My Backup Test\" \\\n  -e DISCORD_WEBHOOK_URL='\u003cyour_discord_webhook_url\u003e' \\\n  -e DISCORD_ENABLED='TRUE' \\\n  -e NOTIFY_DEBUG='TRUE' \\\n  adrienpoupa/rclone-backup:latest notification test \"This is a test message for Discord.\"\n```\n\n\u003cbr\u003e\n\n### Slack Notifications\n\nYou can receive backup status notifications on Slack using an Incoming Webhook URL.\n\n| Environment Variable | Default Value | Description                                                                                                                              |\n| -------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |\n| `SLACK_WEBHOOK_URL`  |               | Your Slack Incoming Webhook URL. [How to create a Slack Incoming Webhook](https://api.slack.com/messaging/webhooks).                     |\n| `SLACK_ENABLED`      | `FALSE`       | Set to `TRUE` to enable Slack notifications. If the Webhook URL is provided, it defaults to `TRUE` unless explicitly set to `FALSE`.    |\n| `NOTIFY_DEBUG`       | `FALSE`       | Set to `TRUE` to print the JSON payload sent to Slack. Useful for troubleshooting.                                                       |\n\nYour `DISPLAY_NAME` will be used in the title of the notification attachment.\n\n#### Slack Test\n\nYou can test Slack notifications using the following command. This will send a \"test\" status notification.\nRemember to replace `\u003cyour_slack_webhook_url\u003e` with your actual Slack webhook URL.\n\n```shell\ndocker run --rm -it \\\n  -e DISPLAY_NAME=\"My Backup Test\" \\\n  -e SLACK_WEBHOOK_URL='\u003cyour_slack_webhook_url\u003e' \\\n  -e SLACK_ENABLED='TRUE' \\\n  -e NOTIFY_DEBUG='TRUE' \\\n  adrienpoupa/rclone-backup:latest notification test \"This is a test message for Slack.\"\n```\n\n\u003cbr\u003e\n\n## Environment Variables Considerations\n\n### Using `.env` file\n\nIf you prefer using an env file instead of environment variables, you can map the env file containing the environment variables to the `/.env` file in the container.\n\n```shell\ndocker run -d \\\n  --mount type=bind,source=/path/to/env,target=/.env \\\n  adrienpoupa/rclone-backup:latest\n```\n\n### Docker Secrets\n\nAs an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables. This causes the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/\u003csecret_name\u003e` files.\n\n```shell\ndocker run -d \\\n  -e ZIP_PASSWORD_FILE=/run/secrets/zip-password \\\n  adrienpoupa/rclone-backup:latest\n```\n\n### About Priority\n\nWe will use the environment variables first, followed by the contents of the file ending in `_FILE` as defined by the environment variables. Next, we will use the contents of the file ending in `_FILE` as defined in the `.env` file, and finally the values from the `.env` file itself.\n\n## Advanced\n\n- [Run as non-root user](docs/run-as-non-root-user.md)\n- [Multiple remote destinations](docs/multiple-remote-destinations.md)\n- [Manually trigger a backup](docs/manually-trigger-a-backup.md)\n- [Using the PostgreSQL backend](docs/using-the-postgresql-backend.md)\n- [Using the MySQL(MariaDB) backend](docs/using-the-mysql-or-mariadb-backend.md)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdrienPoupa%2Frclone-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAdrienPoupa%2Frclone-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdrienPoupa%2Frclone-backup/lists"}