From ae8a003d482ad9701d9f92350f3038dd1e327071 Mon Sep 17 00:00:00 2001 From: leosw Date: Mon, 15 Mar 2021 19:09:44 +0100 Subject: [PATCH 01/22] Fix #73: Add doc about registering SSH key --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index a8579e7..7e04509 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,11 @@ $ cat /root/.ssh/id_borg_ed25519.pub ssh-ed25519 AAAA[...] root@guest.servera ``` +Then, you must register Server B to known hosts: +``` +ssh-keyscan host.serverb > ~/.ssh/known_hosts +``` + ### Set up Borg Server App on host Server B Secondly, set up the Borg Server App (``borgserver``) on the host Server B that will store your backups: ``` From 72baec228a296963ce22a989a8d0cc4afb954996 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Wed, 23 Mar 2022 09:57:17 -0500 Subject: [PATCH 02/22] Various fixes needed to make app run (#125) * Set permissions correctly to avoid warning when sudoing. * Using sudo here causes the service unit to fail, but it isn't needed anyway. Remove. * [fix] Typo ? * Revert sudo Co-authored-by: ljf (zamentur) --- scripts/install | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install b/scripts/install index e87500e..353ec8d 100755 --- a/scripts/install +++ b/scripts/install @@ -80,6 +80,7 @@ chmod u+x "/usr/local/bin/backup-with-$app" chown $app:$app "/usr/local/bin/backup-with-$app" ynh_add_config --template="sudoer" --destination="/etc/sudoers.d/$app" +chown root:root "/etc/sudoers.d/$app" if [ ! -z "$server" ]; then #================================================= From 3aea9ce9b637b2fa18ae3b65fdc2326b40068510 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Wed, 23 Mar 2022 15:58:05 +0100 Subject: [PATCH 03/22] [fix] Sudo warning issue --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 03e1f52..8fc19ef 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Backup your server on a host server using Borg.", "fr": "Sauvegardez votre serveur sur un serveur distant avec Borg." }, - "version": "1.1.16~ynh28", + "version": "1.1.16~ynh29", "url": "https://borgbackup.readthedocs.io", "license": "BSD-3-Clause", "maintainer": { From 60ca27c1e42bc05688a38f410ed92443b7de42a8 Mon Sep 17 00:00:00 2001 From: Clemorange22 Date: Wed, 4 May 2022 14:25:41 +0200 Subject: [PATCH 04/22] Fix typo --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 8fc19ef..b826eda 100644 --- a/manifest.json +++ b/manifest.json @@ -59,7 +59,7 @@ "type": "boolean", "ask": { "en": "Should Borg backup emails and user home directory?", - "fr": "Borg doit-elle sauvegarder les mails et les répertoires des utilisateurs ?" + "fr": "Borg doit-il sauvegarder les mails et les répertoires des utilisateurs ?" }, "default": true }, From 7340173ffc1aa1bd093f428acc40632b7e30298a Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Wed, 2 Nov 2022 22:59:55 +0100 Subject: [PATCH 05/22] add history details as per this solved issue : https://github.com/YunoHost-Apps/borg_ynh/issues/122 --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4e1cc8e..90352e5 100644 --- a/README.md +++ b/README.md @@ -82,12 +82,20 @@ $ BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg ``` You will need the passphrase to run ``borg`` commands on the backup repository created on the host Server B. +### History Depth and Pruning +The default setup of this app is to have a **one-year history**, with decreasing frequency of backups kept (for each app and each setup's part) : 2 in the last hours, 7 in the last days, 8 in the last weeks and 12 in the last months (so 12 in total). All backup older than 1 year are deleted. + +It relies on the [pruning behaviour of borg](https://borgbackup.readthedocs.io/en/stable/usage/prune.html) : `--keep-hourly 2 --keep-daily=7 --keep-weekly=8 --keep-monthly=12` implemented [here](https://github.com/YunoHost-Apps/borg_ynh/blob/testing/conf/backup_method#L55). +You may change this behaviour only via the CLI, by modifiyng the file in`/etc/yunohost/apps/borg(__x)/conf/backup_method`, although it will not persist between upgrades. + +If your backup server is full, the app will fail and will **not** add new backup while deleting the old ones. + ## Check regularly your backup -If you want to be sure to be able to restore your server, you should try to restore regularly the archives. But this process is quite time consumming. +If you want to be sure to be able to restore your server, you should try to restore regularly the archives. But this process is quite time consuming. You should at least: - * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent recent version) - * Check regularly the presence of `info.json` and `db.sql` or `dump.sql` in your apps archives + * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent version on yunohost) + * Check regularly the presence of `info.json` and `db.sql` or `dump.sql` in your apps' archives ``` borg list ./::ARCHIVE_NAME | grep info.json borg list ./::ARCHIVE_NAME | grep db.sql From b8594a54d05768c4f041988be14cb3f070674865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 16 Jan 2023 22:28:07 +0100 Subject: [PATCH 06/22] homogenize the description --- manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 8fc19ef..c26acb2 100644 --- a/manifest.json +++ b/manifest.json @@ -3,8 +3,8 @@ "id": "borg", "packaging_format": 1, "description": { - "en": "Backup your server on a host server using Borg.", - "fr": "Sauvegardez votre serveur sur un serveur distant avec Borg." + "en": "Backup your server on a host server using Borg", + "fr": "Sauvegardez votre serveur sur un serveur distant avec Borg" }, "version": "1.1.16~ynh29", "url": "https://borgbackup.readthedocs.io", From 8988448bbca147ed45871d6efd7f2d720c1260a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 20 Jan 2023 20:06:13 +0100 Subject: [PATCH 07/22] Fix linter --- doc/DECSRIPTION.md | 1 + doc/DISCLAIMER.md | 222 +++++++++++++++++++++++++++++++++++++++++++++ manifest.json | 6 +- 3 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 doc/DECSRIPTION.md create mode 100644 doc/DISCLAIMER.md diff --git a/doc/DECSRIPTION.md b/doc/DECSRIPTION.md new file mode 100644 index 0000000..0aa30bf --- /dev/null +++ b/doc/DECSRIPTION.md @@ -0,0 +1 @@ +A [Borg](https://borgbackup.readthedocs.io/en/stable/index.html#what-is-borgbackup) implementation to backup a YunoHost server. This is the Borg Backup App to be installed on a server to backup. It works together with a [Borg Server App](https://github.com/YunoHost-Apps/borgserver_ynh) installed on a host server. diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..46a0cd9 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,222 @@ +## :warning: NB. : This doc is partially obsolete and should be reworked! :warning: + +## How to backup your server with this app? + +You want to backup a critical "guest" Server A onto a remote "host" Server B, you need: +* Domain name of server B: `host.serverb` +* Name of the server B SSH user (to be created by `borgserver`) for connection from Server A: `borgservera` +* **Strong passphrase** to encrypt your backups on host Server B. And to **restore your backups**!! +* IDs of YunoHost apps you want to backup +* Regular time schedule for your backups, see below +* Install Borg Backup App (`borg`) on guest Server A +* Install Borg Server App (`borgserver`) on host Server B +* Save the passphrase in another place than your server. Without the passphrase, you won't be able to restore data. + +You should received an email after the first backup succeeded. + +### Set up Borg Backup App on guest Server A +Firstly, set up the Borg Backup App (`borg`) on the guest Server A you want to backup: + +``` +$ yunohost app install borg +In which borg repository location do you want to backup your files ?: user@host.serverb:/remote/repository +Provide a strong passphrase to encrypt your backups. No blank space: +Should Borg backup your YunoHost configuration? [yes | no] (default: yes): +Should Borg backup emails and user home directory? [yes | no] (default: yes): +Which apps should Borg backup ? (default: all): +With which regular time schedule should the backups be performed? (see systemd OnCalendar format) (default: Daily): +Do you want admin to receive mail notifications on backups ? [always | errors_only | never]: never +``` + +#### Syntax to define a backup time schedule +You can schedule regular backups at specific time. Only one regular time schedule is possible for one `borg` instance, see below for workaround. Some examples: +* Monthly : +* Weekly : +* Daily : Daily at midnight +* Hourly : Hourly o Clock +* Sat *-*-1..7 18:00:00 : The first saturday of every month at 18:00 +* 4:00 : Every day at 4 AM +* 5,17:00 : Every day at 5 AM and at 5 PM +See here for more info : https://wiki.archlinux.org/index.php/Systemd/Timers#Realtime_timer + +#### Information generated by Borg Backup +At the end of the installation, the Borg Backup App (``borg``) displays the SSH public key and the SSH user to give to the person who has access to the host Server B and will set up Borg Server App. +``` +You should now install the "Borg Server" app on host.serverb and fill questions like this: +User: servera +Public key: ssh-ed25519 AAAA[...] root@guest.servera +``` +This information is also sent by email to the admin of guest Server A. +If you don't find the email and you don't see the message in the log bar you can find the SSH public key with this command: +``` +$ cat /root/.ssh/id_borg_ed25519.pub +ssh-ed25519 AAAA[...] root@guest.servera +``` + +### Set up Borg Server App on host Server B +Secondly, set up the Borg Server App (``borgserver``) on the host Server B that will store your backups: +``` +$ yunohost app install borgserver +Indicate the ssh user to create: servera +Indicate the public key given by Borg Backup app (borg) setup: ssh-ed25519 AAAA[...] root@guest.servera +Indicate the storage quota: 5G +``` + +### Test the Borg Apps setup +At this step your backup should run at the scheduled time. Note that the first backup can take very long, as much data has to be copied through ssh. Following backups are incremental: only newly generated data since last backup will be copied. + +If you want to test correct Borg Apps setup before scheduled time, you can start a backup manually on guest Server A: +``` +$ systemctl start borg +``` + +Next you can check presence of your backup repository on host Server B: +``` +$ BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg list servera@host.serverb:~/backup +``` +You will need the passphrase to run ``borg`` commands on the backup repository created on the host Server B. + +## Check regularly your backup +If you want to be sure to be able to restore your server, you should try to restore regularly the archives. But this process is quite time consumming. + +You should at least: + * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent recent version) + * Check regularly the presence of `info.json` and `db.sql` or `dump.sql` in your apps archives +``` +borg list ./::ARCHIVE_NAME | grep info.json +borg list ./::ARCHIVE_NAME | grep db.sql +borg list ./::ARCHIVE_NAME | grep dump.sql +``` + * Be sure to have your passphrase available even if your server is completely broken + +## How to restore a complete system + +*For infos on restoring process, check [this yunohost forum thread](https://forum.yunohost.org/t/restoring-whole-yunohost-from-borg-backups/12705/3) and [that one](https://forum.yunohost.org/t/how-to-properly-backup-and-restore/12583/3), also [using Borg with sshkeys](https://thisiscasperslife.wordpress.com/2017/11/28/using-borg-backup-across-ssh-with-sshkeys/), the [`borg extract` documentation](https://borgbackup.readthedocs.io/en/stable/usage/extract.html), and this [general tutorial on Borg Backup](https://practical-admin.com/blog/backups-using-borg/).* + +In the following explanations: +- the server to backup/restore will be called: `yuno` +- the remote server that receives and store the back will be called: `rem` +- `rem` is accessible at the domain `rem.tld` +- the remote user on `rem` which owns the Borg backups will be called `yurem` +- backup files will be stored in `rem` in the directory: `/home/yurem/backup` + + +### Overview + +The idea here, if you need to restore a whole yunohost system is: + +1. Install a new Debian VM +2. Install YunoHost in it the usual way +3. Go through YunoHost postinstall (parameters you will supply are not crucial, as they will be replaced by the restore) +4. Install Borg +5. Setup `rem` to accept ssh connections from `yuno` +6. Use Borg to import backups from `rem` to `yuno` +7. Restore Borg backups with the `yunohost backup restore` command, first config, then data, then each app one at a time +8. Remove the Borg app and restore it + +### Make it possible for `yuno` to connect to `rem` with Borg + +At this stage, we will assume that `yuno` is a freshly installed YunoHost (based on Buster in my case). You should also have performed the YunoHost postinstall. + +If you don't want to restore the whole system, just some apps, you can skip some of the steps below. + +#### Install the Borg YunoHost app in `yuno` + +The idea here is just to install Borg, not in order to create backups, but only to use Borg commands to import remote backups. + +So for example, you can install it doing the following: +```bash +sudo yunohost app install borg -a "server=rem.tld&ssh_user=yurem&conf=0&data=0&apps=hextris&on_calendar=2:30" +``` + +#### Make sure that `rem` accepts ssh connections from `yuno` + +In `yuno` you will need to get the ssh key that borg just created while installing: `sudo cat /root/.ssh/id_borg_ed25519.pub`, copy it to clipboard. + +Connect via ssh to `rem`, go to `/home/yurem/.ssh/authorized_keys`, and past the Borg public key you got at previous step. + +Now to make sure this worked, you can try to SSH from `yuno` to `rem`. +In `yuno` : `ssh -i /root/.ssh/id_borg_ed25519 yurem@rem.tld` . If you can get into `rem` , without it prompting for a password, then you're good to continue :) + +### Restore backups to `yuno` + +⚠️ For the commands in the following section to work, you will need to be root in `yuno` (you can become root running `sudo su`). + +⚠️ Restoration of backups can take quite a while, you'd better do them in a separate process, so that it doesn't stop if your terminal session gets closed. For this, you can for example use [tmux](https://www.howtogeek.com/671422/how-to-use-tmux-on-linux-and-why-its-better-than-screen/). + +In `yuno` now, you should be able to list backups in `rem` with the following command: + +```bash +SRV=yurem@rem.tld:/home/yurem/backup +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg list $SRV +``` + +You can then reimport one to `yuno` with: + +```bash +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar $SRV::auto_BACKUP_NAME /home/yunohost.backup/archives/auto_BACKUP_NAME.tar.gz +``` + +And then restore the archive in `yuno` with: + +```bash +yunohost backup restore auto_BACKUP_NAME --system # for config and data backups +yunohost backup restore auto_BACKUP_NAME --apps # for other backups (=apps) +``` + +### And Nextcloud? It's super heavy!! + +For Nextcloud, the best is probably to reimport the backup without the data. And to import the data manually. + +For that, you can do the following (as root): + +```bash +SRV=yurem@rem.tld:/home/yurem/backup + +# export the app without data +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar -e apps/nextcloud/backup/home/yunohost.app $SRV::auto_nextcloud_XX_XX_XX_XX:XX /home/yunohost.backup/archives/auto_nextcloud_XX_XX_XX_XX:XX.tar.gz + +# extract the data from the backup to the nextcloud folder +cd /home/yunohost.app/nextcloud +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg extract $SRV::auto_nextcloud_XX_XX_XX_XX:XX apps/nextcloud/backup/home/yunohost.app/nextcloud/ +mv apps/nextcloud/backup/home/yunohost.app/nextcloud/data data +rm -r apps + +# now you can simply restore nextcloud app +yunohost backup restore auto_nextcloud_XX_XX_XX_XX:XX --apps +``` + +### Restore Borg + +Once you've restored the whole system, you will probably want to restore the Borg app as well. + +For that, remove the "dummy" Borg you installed to do the restoration, and restore Borg the same ways as for other apps: + +```bash +sudo yunohost app remove borg +sudo yunohost backup restore auto_borg_XX_XX_XX_XX:XX --apps +``` + +## Tips + +### Edit the list of YunoHost apps to backup +``yunohost app setting borg apps -v "nextcloud,wordpress"`` + +### Other usefull borg commands +[Get the storage space used by the backup repository on the host server](https://borgbackup.readthedocs.io/en/stable/usage/info.html) +``borg info /home/servera/backup`` + +### Backup YunoHost apps with different criticallity levels + +If you want to backup your guest server: +* with different YunoHost apps +* at different regular time schedule +* on different host servers + +Then you can set up multiple instances of the Borg Apps on same servers. +For instance: +* Borg Backup instance ``borg``: backup nextcloud daily on host Server B +* Borg Backup instance ``borg__2``: backup all other YunoHost apps weekly on host Server C + +### Settings location +Settings of apps are in /etc/yunohost/apps/*/settings.yml, so are the settings for borg_ynh as well. Be careful though to not savagely manually edit them if you don't know what you're doing. diff --git a/manifest.json b/manifest.json index c26acb2..35cabb2 100644 --- a/manifest.json +++ b/manifest.json @@ -8,6 +8,10 @@ }, "version": "1.1.16~ynh29", "url": "https://borgbackup.readthedocs.io", + "upstream": { + "license": "BSD-3-Clause", + "website": "https://borgbackup.readthedocs.io", + }, "license": "BSD-3-Clause", "maintainer": { "name": "ljf", @@ -15,7 +19,7 @@ "url": "https://reflexlibre.net" }, "requirements": { - "yunohost": ">= 4.3.0" + "yunohost": ">= 11.0.9" }, "multi_instance": true, "services": [], From 444f0a22ba633764d7250d5eef26c35e2afdc5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 12 Feb 2023 11:26:35 +0100 Subject: [PATCH 08/22] Update manifest.json Co-authored-by: Florent --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 35cabb2..eb8f5bd 100644 --- a/manifest.json +++ b/manifest.json @@ -10,7 +10,7 @@ "url": "https://borgbackup.readthedocs.io", "upstream": { "license": "BSD-3-Clause", - "website": "https://borgbackup.readthedocs.io", + "website": "https://borgbackup.readthedocs.io" }, "license": "BSD-3-Clause", "maintainer": { From 18d192fcd5e5306db19b00783c0080637c15389e Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sun, 12 Feb 2023 10:26:38 +0000 Subject: [PATCH 09/22] Auto-update README --- README.md | 44 ++++++++- README_fr.md | 264 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+), 4 deletions(-) create mode 100644 README_fr.md diff --git a/README.md b/README.md index 4e1cc8e..2ed4412 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,24 @@ -# Borg Backup for YunoHost -[![Integration level](https://dash.yunohost.org/integration/borg.svg)](https://dash.yunohost.org/appci/app/borg) ![](https://ci-apps.yunohost.org/ci/badges/borg.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/borg.maintain.svg) -[![Install Borg with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=borg) + -A [Borg](https://borgbackup.readthedocs.io/en/stable/index.html#what-is-borgbackup) implementation to backup a YunoHost server. This is the Borg Backup App to be installed on a server to backup. It works together with a [Borg Server App](https://github.com/YunoHost-Apps/borgserver_ynh) installed on a host server. +# Borg Backup for YunoHost + +[![Integration level](https://dash.yunohost.org/integration/borg.svg)](https://dash.yunohost.org/appci/app/borg) ![Working status](https://ci-apps.yunohost.org/ci/badges/borg.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/borg.maintain.svg) +[![Install Borg Backup with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=borg) + +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install Borg Backup quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* + +## Overview + +Backup your server on a host server using Borg + +**Shipped version:** 1.1.16~ynh29 +## Disclaimers / important information ## :warning: NB. : This doc is partially obsolete and should be reworked! :warning: @@ -226,3 +242,23 @@ For instance: ### Settings location Settings of apps are in /etc/yunohost/apps/*/settings.yml, so are the settings for borg_ynh as well. Be careful though to not savagely manually edit them if you don't know what you're doing. + +## Documentation and resources + +* Official app website: +* YunoHost documentation for this app: +* Report a bug: + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/borg_ynh/tree/testing). + +To try the testing branch, please proceed like that. + +``` bash +sudo yunohost app install https://github.com/YunoHost-Apps/borg_ynh/tree/testing --debug +or +sudo yunohost app upgrade borg -u https://github.com/YunoHost-Apps/borg_ynh/tree/testing --debug +``` + +**More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..58bc599 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,264 @@ + + +# Borg Backup pour YunoHost + +[![Niveau d’intégration](https://dash.yunohost.org/integration/borg.svg)](https://dash.yunohost.org/appci/app/borg) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/borg.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/borg.maintain.svg) +[![Installer Borg Backup avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=borg) + +*[Read this readme in english.](./README.md)* + +> *Ce package vous permet d’installer Borg Backup rapidement et simplement sur un serveur YunoHost. +Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l’installer et en profiter.* + +## Vue d’ensemble + +Sauvegardez votre serveur sur un serveur distant avec Borg + +**Version incluse :** 1.1.16~ynh29 +## Avertissements / informations importantes + +## :warning: NB. : This doc is partially obsolete and should be reworked! :warning: + +## How to backup your server with this app? + +You want to backup a critical "guest" Server A onto a remote "host" Server B, you need: +* Domain name of server B: `host.serverb` +* Name of the server B SSH user (to be created by `borgserver`) for connection from Server A: `borgservera` +* **Strong passphrase** to encrypt your backups on host Server B. And to **restore your backups**!! +* IDs of YunoHost apps you want to backup +* Regular time schedule for your backups, see below +* Install Borg Backup App (`borg`) on guest Server A +* Install Borg Server App (`borgserver`) on host Server B +* Save the passphrase in another place than your server. Without the passphrase, you won't be able to restore data. + +You should received an email after the first backup succeeded. + +### Set up Borg Backup App on guest Server A +Firstly, set up the Borg Backup App (`borg`) on the guest Server A you want to backup: + +``` +$ yunohost app install borg +In which borg repository location do you want to backup your files ?: user@host.serverb:/remote/repository +Provide a strong passphrase to encrypt your backups. No blank space: +Should Borg backup your YunoHost configuration? [yes | no] (default: yes): +Should Borg backup emails and user home directory? [yes | no] (default: yes): +Which apps should Borg backup ? (default: all): +With which regular time schedule should the backups be performed? (see systemd OnCalendar format) (default: Daily): +Do you want admin to receive mail notifications on backups ? [always | errors_only | never]: never +``` + +#### Syntax to define a backup time schedule +You can schedule regular backups at specific time. Only one regular time schedule is possible for one `borg` instance, see below for workaround. Some examples: +* Monthly : +* Weekly : +* Daily : Daily at midnight +* Hourly : Hourly o Clock +* Sat *-*-1..7 18:00:00 : The first saturday of every month at 18:00 +* 4:00 : Every day at 4 AM +* 5,17:00 : Every day at 5 AM and at 5 PM +See here for more info : https://wiki.archlinux.org/index.php/Systemd/Timers#Realtime_timer + +#### Information generated by Borg Backup +At the end of the installation, the Borg Backup App (``borg``) displays the SSH public key and the SSH user to give to the person who has access to the host Server B and will set up Borg Server App. +``` +You should now install the "Borg Server" app on host.serverb and fill questions like this: +User: servera +Public key: ssh-ed25519 AAAA[...] root@guest.servera +``` +This information is also sent by email to the admin of guest Server A. +If you don't find the email and you don't see the message in the log bar you can find the SSH public key with this command: +``` +$ cat /root/.ssh/id_borg_ed25519.pub +ssh-ed25519 AAAA[...] root@guest.servera +``` + +### Set up Borg Server App on host Server B +Secondly, set up the Borg Server App (``borgserver``) on the host Server B that will store your backups: +``` +$ yunohost app install borgserver +Indicate the ssh user to create: servera +Indicate the public key given by Borg Backup app (borg) setup: ssh-ed25519 AAAA[...] root@guest.servera +Indicate the storage quota: 5G +``` + +### Test the Borg Apps setup +At this step your backup should run at the scheduled time. Note that the first backup can take very long, as much data has to be copied through ssh. Following backups are incremental: only newly generated data since last backup will be copied. + +If you want to test correct Borg Apps setup before scheduled time, you can start a backup manually on guest Server A: +``` +$ systemctl start borg +``` + +Next you can check presence of your backup repository on host Server B: +``` +$ BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg list servera@host.serverb:~/backup +``` +You will need the passphrase to run ``borg`` commands on the backup repository created on the host Server B. + +## Check regularly your backup +If you want to be sure to be able to restore your server, you should try to restore regularly the archives. But this process is quite time consumming. + +You should at least: + * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent recent version) + * Check regularly the presence of `info.json` and `db.sql` or `dump.sql` in your apps archives +``` +borg list ./::ARCHIVE_NAME | grep info.json +borg list ./::ARCHIVE_NAME | grep db.sql +borg list ./::ARCHIVE_NAME | grep dump.sql +``` + * Be sure to have your passphrase available even if your server is completely broken + +## How to restore a complete system + +*For infos on restoring process, check [this yunohost forum thread](https://forum.yunohost.org/t/restoring-whole-yunohost-from-borg-backups/12705/3) and [that one](https://forum.yunohost.org/t/how-to-properly-backup-and-restore/12583/3), also [using Borg with sshkeys](https://thisiscasperslife.wordpress.com/2017/11/28/using-borg-backup-across-ssh-with-sshkeys/), the [`borg extract` documentation](https://borgbackup.readthedocs.io/en/stable/usage/extract.html), and this [general tutorial on Borg Backup](https://practical-admin.com/blog/backups-using-borg/).* + +In the following explanations: +- the server to backup/restore will be called: `yuno` +- the remote server that receives and store the back will be called: `rem` +- `rem` is accessible at the domain `rem.tld` +- the remote user on `rem` which owns the Borg backups will be called `yurem` +- backup files will be stored in `rem` in the directory: `/home/yurem/backup` + + +### Overview + +The idea here, if you need to restore a whole yunohost system is: + +1. Install a new Debian VM +2. Install YunoHost in it the usual way +3. Go through YunoHost postinstall (parameters you will supply are not crucial, as they will be replaced by the restore) +4. Install Borg +5. Setup `rem` to accept ssh connections from `yuno` +6. Use Borg to import backups from `rem` to `yuno` +7. Restore Borg backups with the `yunohost backup restore` command, first config, then data, then each app one at a time +8. Remove the Borg app and restore it + +### Make it possible for `yuno` to connect to `rem` with Borg + +At this stage, we will assume that `yuno` is a freshly installed YunoHost (based on Buster in my case). You should also have performed the YunoHost postinstall. + +If you don't want to restore the whole system, just some apps, you can skip some of the steps below. + +#### Install the Borg YunoHost app in `yuno` + +The idea here is just to install Borg, not in order to create backups, but only to use Borg commands to import remote backups. + +So for example, you can install it doing the following: +```bash +sudo yunohost app install borg -a "server=rem.tld&ssh_user=yurem&conf=0&data=0&apps=hextris&on_calendar=2:30" +``` + +#### Make sure that `rem` accepts ssh connections from `yuno` + +In `yuno` you will need to get the ssh key that borg just created while installing: `sudo cat /root/.ssh/id_borg_ed25519.pub`, copy it to clipboard. + +Connect via ssh to `rem`, go to `/home/yurem/.ssh/authorized_keys`, and past the Borg public key you got at previous step. + +Now to make sure this worked, you can try to SSH from `yuno` to `rem`. +In `yuno` : `ssh -i /root/.ssh/id_borg_ed25519 yurem@rem.tld` . If you can get into `rem` , without it prompting for a password, then you're good to continue :) + +### Restore backups to `yuno` + +⚠️ For the commands in the following section to work, you will need to be root in `yuno` (you can become root running `sudo su`). + +⚠️ Restoration of backups can take quite a while, you'd better do them in a separate process, so that it doesn't stop if your terminal session gets closed. For this, you can for example use [tmux](https://www.howtogeek.com/671422/how-to-use-tmux-on-linux-and-why-its-better-than-screen/). + +In `yuno` now, you should be able to list backups in `rem` with the following command: + +```bash +SRV=yurem@rem.tld:/home/yurem/backup +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg list $SRV +``` + +You can then reimport one to `yuno` with: + +```bash +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar $SRV::auto_BACKUP_NAME /home/yunohost.backup/archives/auto_BACKUP_NAME.tar.gz +``` + +And then restore the archive in `yuno` with: + +```bash +yunohost backup restore auto_BACKUP_NAME --system # for config and data backups +yunohost backup restore auto_BACKUP_NAME --apps # for other backups (=apps) +``` + +### And Nextcloud? It's super heavy!! + +For Nextcloud, the best is probably to reimport the backup without the data. And to import the data manually. + +For that, you can do the following (as root): + +```bash +SRV=yurem@rem.tld:/home/yurem/backup + +# export the app without data +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar -e apps/nextcloud/backup/home/yunohost.app $SRV::auto_nextcloud_XX_XX_XX_XX:XX /home/yunohost.backup/archives/auto_nextcloud_XX_XX_XX_XX:XX.tar.gz + +# extract the data from the backup to the nextcloud folder +cd /home/yunohost.app/nextcloud +BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg extract $SRV::auto_nextcloud_XX_XX_XX_XX:XX apps/nextcloud/backup/home/yunohost.app/nextcloud/ +mv apps/nextcloud/backup/home/yunohost.app/nextcloud/data data +rm -r apps + +# now you can simply restore nextcloud app +yunohost backup restore auto_nextcloud_XX_XX_XX_XX:XX --apps +``` + +### Restore Borg + +Once you've restored the whole system, you will probably want to restore the Borg app as well. + +For that, remove the "dummy" Borg you installed to do the restoration, and restore Borg the same ways as for other apps: + +```bash +sudo yunohost app remove borg +sudo yunohost backup restore auto_borg_XX_XX_XX_XX:XX --apps +``` + +## Tips + +### Edit the list of YunoHost apps to backup +``yunohost app setting borg apps -v "nextcloud,wordpress"`` + +### Other usefull borg commands +[Get the storage space used by the backup repository on the host server](https://borgbackup.readthedocs.io/en/stable/usage/info.html) +``borg info /home/servera/backup`` + +### Backup YunoHost apps with different criticallity levels + +If you want to backup your guest server: +* with different YunoHost apps +* at different regular time schedule +* on different host servers + +Then you can set up multiple instances of the Borg Apps on same servers. +For instance: +* Borg Backup instance ``borg``: backup nextcloud daily on host Server B +* Borg Backup instance ``borg__2``: backup all other YunoHost apps weekly on host Server C + +### Settings location +Settings of apps are in /etc/yunohost/apps/*/settings.yml, so are the settings for borg_ynh as well. Be careful though to not savagely manually edit them if you don't know what you're doing. + +## Documentations et ressources + +* Site officiel de l’app : +* Documentation YunoHost pour cette app : +* Signaler un bug : + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/borg_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. + +``` bash +sudo yunohost app install https://github.com/YunoHost-Apps/borg_ynh/tree/testing --debug +ou +sudo yunohost app upgrade borg -u https://github.com/YunoHost-Apps/borg_ynh/tree/testing --debug +``` + +**Plus d’infos sur le packaging d’applications :** \ No newline at end of file From 6d9859979da090ee23bf946b243dfb0bc5c6a4de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 12 Feb 2023 11:29:33 +0100 Subject: [PATCH 10/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90352e5..779e1fb 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ $ BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg You will need the passphrase to run ``borg`` commands on the backup repository created on the host Server B. ### History Depth and Pruning -The default setup of this app is to have a **one-year history**, with decreasing frequency of backups kept (for each app and each setup's part) : 2 in the last hours, 7 in the last days, 8 in the last weeks and 12 in the last months (so 12 in total). All backup older than 1 year are deleted. +The default setup of this app is to have a **one-year history**, with decreasing frequency of backups kept (for each app and each setup's part): 2 in the last hours, 7 in the last days, 8 in the last weeks and 12 in the last months (so 12 in total). All backup older than 1 year are deleted. It relies on the [pruning behaviour of borg](https://borgbackup.readthedocs.io/en/stable/usage/prune.html) : `--keep-hourly 2 --keep-daily=7 --keep-weekly=8 --keep-monthly=12` implemented [here](https://github.com/YunoHost-Apps/borg_ynh/blob/testing/conf/backup_method#L55). You may change this behaviour only via the CLI, by modifiyng the file in`/etc/yunohost/apps/borg(__x)/conf/backup_method`, although it will not persist between upgrades. From 74f708013d52bc92cc61a22bb6235d683af4181b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 12 Feb 2023 11:34:55 +0100 Subject: [PATCH 11/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 779e1fb..ebb3523 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ If you want to be sure to be able to restore your server, you should try to rest You should at least: * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent version on yunohost) - * Check regularly the presence of `info.json` and `db.sql` or `dump.sql` in your apps' archives + * Regularly check the presence of `info.json` and `db.sql` or `dump.sql` in the archives of your applications ``` borg list ./::ARCHIVE_NAME | grep info.json borg list ./::ARCHIVE_NAME | grep db.sql From 6fc43ed0872d293c85a6b646fc4be1aacb2513a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 12 Feb 2023 11:35:12 +0100 Subject: [PATCH 12/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ebb3523..70d3a5a 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ You may change this behaviour only via the CLI, by modifiyng the file in`/etc/yu If your backup server is full, the app will fail and will **not** add new backup while deleting the old ones. ## Check regularly your backup -If you want to be sure to be able to restore your server, you should try to restore regularly the archives. But this process is quite time consuming. +If you want to be sure that you can restore your server, you should try to restore archives regularly. But this process takes a long time You should at least: * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent version on yunohost) From 6e6f6732553666307df704a562abd2c9b456212f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 12 Feb 2023 11:35:34 +0100 Subject: [PATCH 13/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70d3a5a..a75dd53 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ If your backup server is full, the app will fail and will **not** add new backup If you want to be sure that you can restore your server, you should try to restore archives regularly. But this process takes a long time You should at least: - * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent version on yunohost) + * Keep your apps up to date (if the apps are too old, they might be difficult to restore to a newer version on YunoHost) * Regularly check the presence of `info.json` and `db.sql` or `dump.sql` in the archives of your applications ``` borg list ./::ARCHIVE_NAME | grep info.json From b1c8afac38fd81f5ecbc06c60449f808396590d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 12 Feb 2023 11:36:13 +0100 Subject: [PATCH 14/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a75dd53..c343e12 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ You may change this behaviour only via the CLI, by modifiyng the file in`/etc/yu If your backup server is full, the app will fail and will **not** add new backup while deleting the old ones. ## Check regularly your backup -If you want to be sure that you can restore your server, you should try to restore archives regularly. But this process takes a long time +If you want to be sure that you can restore your server, you should try to restore archives regularly. But this process takes a long time. You should at least: * Keep your apps up to date (if the apps are too old, they might be difficult to restore to a newer version on YunoHost) From 2be06f6f266a2fd894e5c516e88ebc053e2111b9 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sun, 12 Feb 2023 10:37:05 +0000 Subject: [PATCH 15/22] Auto-update README --- README.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 20b9448..2ed4412 100644 --- a/README.md +++ b/README.md @@ -98,20 +98,12 @@ $ BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg ``` You will need the passphrase to run ``borg`` commands on the backup repository created on the host Server B. -### History Depth and Pruning -The default setup of this app is to have a **one-year history**, with decreasing frequency of backups kept (for each app and each setup's part): 2 in the last hours, 7 in the last days, 8 in the last weeks and 12 in the last months (so 12 in total). All backup older than 1 year are deleted. - -It relies on the [pruning behaviour of borg](https://borgbackup.readthedocs.io/en/stable/usage/prune.html) : `--keep-hourly 2 --keep-daily=7 --keep-weekly=8 --keep-monthly=12` implemented [here](https://github.com/YunoHost-Apps/borg_ynh/blob/testing/conf/backup_method#L55). -You may change this behaviour only via the CLI, by modifiyng the file in`/etc/yunohost/apps/borg(__x)/conf/backup_method`, although it will not persist between upgrades. - -If your backup server is full, the app will fail and will **not** add new backup while deleting the old ones. - ## Check regularly your backup -If you want to be sure that you can restore your server, you should try to restore archives regularly. But this process takes a long time. +If you want to be sure to be able to restore your server, you should try to restore regularly the archives. But this process is quite time consumming. You should at least: - * Keep your apps up to date (if the apps are too old, they might be difficult to restore to a newer version on YunoHost) - * Regularly check the presence of `info.json` and `db.sql` or `dump.sql` in the archives of your applications + * Keep your apps up to date (if apps are too old, they could be difficult to restore on a more recent recent version) + * Check regularly the presence of `info.json` and `db.sql` or `dump.sql` in your apps archives ``` borg list ./::ARCHIVE_NAME | grep info.json borg list ./::ARCHIVE_NAME | grep db.sql From d1cd666ee27f5cfb8e40c6f44a09370381b41b35 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sun, 12 Feb 2023 10:39:15 +0000 Subject: [PATCH 16/22] Auto-update README --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 5e825d9..2ed4412 100644 --- a/README.md +++ b/README.md @@ -75,11 +75,6 @@ $ cat /root/.ssh/id_borg_ed25519.pub ssh-ed25519 AAAA[...] root@guest.servera ``` -Then, you must register Server B to known hosts: -``` -ssh-keyscan host.serverb > ~/.ssh/known_hosts -``` - ### Set up Borg Server App on host Server B Secondly, set up the Borg Server App (``borgserver``) on the host Server B that will store your backups: ``` From 817e349abf6c1c1656573dd309943b3cf813bd39 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Wed, 22 Feb 2023 04:30:57 +0100 Subject: [PATCH 17/22] Update check_process --- check_process | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/check_process b/check_process index fcee738..6027f87 100644 --- a/check_process +++ b/check_process @@ -15,7 +15,7 @@ setup_private=0 setup_public=0 upgrade=1 - upgrade=1 from_commit=c1524dd8e37cc671c01f5b5363901dd6a01e6fc1 + upgrade=1 from_commit=d1cd666ee27f5cfb8e40c6f44a09370381b41b35 backup_restore=1 multi_instance=1 port_already_use=0 @@ -42,6 +42,6 @@ port_already_use=0 change_url=0 ;;; Upgrade options - ; commit=c1524dd8e37cc671c01f5b5363901dd6a01e6fc1 - name=Merge pull request #63 from YunoHost-Apps/testing + ; commit=d1cd666ee27f5cfb8e40c6f44a09370381b41b35 + name=Older ynh 11 version manifest_arg=server=domain.tld:22&ssh_user=package_checker&passphrase=APassphrase&conf=1&data=1&apps=all&on_calendar=Daily From 69bfc2143e4d46be4dce969e15d25384307ab253 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Wed, 22 Feb 2023 03:31:02 +0000 Subject: [PATCH 18/22] Auto-update README --- README.md | 1 + README_fr.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 2ed4412..4fab3b2 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ It shall NOT be edited by hand. # Borg Backup for YunoHost [![Integration level](https://dash.yunohost.org/integration/borg.svg)](https://dash.yunohost.org/appci/app/borg) ![Working status](https://ci-apps.yunohost.org/ci/badges/borg.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/borg.maintain.svg) + [![Install Borg Backup with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=borg) *[Lire ce readme en français.](./README_fr.md)* diff --git a/README_fr.md b/README_fr.md index 58bc599..7a6cf29 100644 --- a/README_fr.md +++ b/README_fr.md @@ -6,6 +6,7 @@ It shall NOT be edited by hand. # Borg Backup pour YunoHost [![Niveau d’intégration](https://dash.yunohost.org/integration/borg.svg)](https://dash.yunohost.org/appci/app/borg) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/borg.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/borg.maintain.svg) + [![Installer Borg Backup avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=borg) *[Read this readme in english.](./README.md)* From 650a7e8f3f05c0aa49610fd88d29bef17e1779dc Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Wed, 22 Feb 2023 11:51:37 +0100 Subject: [PATCH 19/22] [fix] Email notif and packagecheck --- check_process | 3 +++ 1 file changed, 3 insertions(+) diff --git a/check_process b/check_process index 6027f87..28f64b7 100644 --- a/check_process +++ b/check_process @@ -41,6 +41,9 @@ multi_instance=1 port_already_use=0 change_url=0 +;;; Options +Email= +Notification=none ;;; Upgrade options ; commit=d1cd666ee27f5cfb8e40c6f44a09370381b41b35 name=Older ynh 11 version From 06caf454aae4c43735d9a6b8ee1136259f3ed288 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 4 Mar 2023 21:46:58 +0100 Subject: [PATCH 20/22] Attempt to fix check_process arg for upgrade ... --- check_process | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/check_process b/check_process index 28f64b7..4b27c44 100644 --- a/check_process +++ b/check_process @@ -41,10 +41,7 @@ multi_instance=1 port_already_use=0 change_url=0 -;;; Options -Email= -Notification=none ;;; Upgrade options ; commit=d1cd666ee27f5cfb8e40c6f44a09370381b41b35 name=Older ynh 11 version - manifest_arg=server=domain.tld:22&ssh_user=package_checker&passphrase=APassphrase&conf=1&data=1&apps=all&on_calendar=Daily + manifest_arg=server=domain.tld:22&ssh_user=package_checker&passphrase=APassphrase&conf=1&data=1&apps=all&on_calendar=Daily&mailalert=never From d1bd75e02d2312a56a9dbc6e10b91385bf0ccd06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 8 Apr 2023 19:51:20 +0200 Subject: [PATCH 21/22] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index f15887e..075748c 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Backup your server on a host server using Borg", "fr": "Sauvegardez votre serveur sur un serveur distant avec Borg" }, - "version": "1.1.16~ynh29", + "version": "1.1.16~ynh30", "url": "https://borgbackup.readthedocs.io", "upstream": { "license": "BSD-3-Clause", From 7a5cde6522999b61edd71a98c3d3c3a60a882b37 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sat, 8 Apr 2023 17:51:25 +0000 Subject: [PATCH 22/22] Auto-update README --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4fab3b2..b88dd27 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Backup your server on a host server using Borg -**Shipped version:** 1.1.16~ynh29 +**Shipped version:** 1.1.16~ynh30 ## Disclaimers / important information ## :warning: NB. : This doc is partially obsolete and should be reworked! :warning: diff --git a/README_fr.md b/README_fr.md index 7a6cf29..cc61ff9 100644 --- a/README_fr.md +++ b/README_fr.md @@ -18,7 +18,7 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po Sauvegardez votre serveur sur un serveur distant avec Borg -**Version incluse :** 1.1.16~ynh29 +**Version incluse :** 1.1.16~ynh30 ## Avertissements / informations importantes ## :warning: NB. : This doc is partially obsolete and should be reworked! :warning: