Add BTRFS snapshots guide, TinyAuth/Pocket ID diagrams, and Backrest restore docs #3
@@ -76,6 +76,8 @@ services:
|
|||||||
# Whatever you want Backrest to be able to back up has to be
|
# Whatever you want Backrest to be able to back up has to be
|
||||||
# mounted here too: this stack only sees what it's given.
|
# mounted here too: this stack only sees what it's given.
|
||||||
- /srv/docker:/userdata/docker:ro
|
- /srv/docker:/userdata/docker:ro
|
||||||
|
- /etc:/userdata/etc:ro
|
||||||
|
- /home:/userdata/home:ro
|
||||||
environment:
|
environment:
|
||||||
- BACKREST_DATA=/data
|
- BACKREST_DATA=/data
|
||||||
- BACKREST_CONFIG=/config/config.json
|
- BACKREST_CONFIG=/config/config.json
|
||||||
@@ -84,7 +86,9 @@ services:
|
|||||||
```
|
```
|
||||||
|
|
||||||
::note
|
::note
|
||||||
The `/srv/docker:/userdata/docker:ro` line is what lets Backrest see the rest of your stacks to back them up, mounted read-only since a backup tool has no business writing to the things it's backing up. Add one line per host folder you want covered, `/media:/userdata/media:ro` for your media library, and so on. Got a USB key or external drive plugged in? Mount it too, that's exactly where your first repository is going.
|
These three lines cover what's actually worth an off-site backup on a homelab server, per [folders and partitions](/general/linux/filesystem): `/srv/docker` holds every stack's config and data (databases, uploaded files, Vaultwarden's vault, Pocket ID's users, and so on), `/etc` holds your system configuration (the SSH hardening from the [installation guide](/serveex/core/installation#close-the-door-behind-you), your SWAG `.subdomain.conf` files, systemd units), and `/home` holds your own scripts and notes. All three mounted read-only, a backup tool has no business writing to what it's backing up.
|
||||||
|
|
||||||
|
What's usually **not** worth it: a big media library or a torrent download folder sitting on a separate data disk. It's often huge, replaceable, and rarely worth paying for cloud storage or SSH bandwidth to protect. Mount it too if you disagree, `/media:/userdata/media:ro` for instance, just think about the size first.
|
||||||
::
|
::
|
||||||
|
|
||||||
::tip{icon=""}
|
::tip{icon=""}
|
||||||
@@ -229,7 +233,7 @@ Back in Backrest, go to **Add Plan**. This form covers what to back up and when,
|
|||||||
|
|
||||||
- **Plan Name**: same rule as the repo name, pick something clear, you can't change it later.
|
- **Plan Name**: same rule as the repo name, pick something clear, you can't change it later.
|
||||||
- **Repository**: the one you just created above.
|
- **Repository**: the one you just created above.
|
||||||
- **Paths**: pick from what you mounted earlier, `/userdata/docker` for your stacks, for instance. You can add several.
|
- **Paths**: click **Add** to add a row, then type in the container-side path for whatever you mounted above, there's no folder browser, just a plain text field. `/userdata/docker` for your stacks, `/userdata/etc` for your system config, `/userdata/home` for your own files. Click **Add** again for each additional folder, the small `-` button removes a row you don't need.
|
||||||
- **Excludes** and **Excludes (Case Insensitive)**: patterns to skip within those paths, handy for cache folders or anything genuinely disposable that would otherwise bloat every snapshot for no reason.
|
- **Excludes** and **Excludes (Case Insensitive)**: patterns to skip within those paths, handy for cache folders or anything genuinely disposable that would otherwise bloat every snapshot for no reason.
|
||||||
- **Schedule Type**: same three choices as the repository's own schedules above, `Disabled`, an `Interval`, or a `Cron Expression`. A nightly cron like `0 3 * * *` (every day at 3 AM) is a reasonable default for a homelab.
|
- **Schedule Type**: same three choices as the repository's own schedules above, `Disabled`, an `Interval`, or a `Cron Expression`. A nightly cron like `0 3 * * *` (every day at 3 AM) is a reasonable default for a homelab.
|
||||||
- **Retention Policy**: how many snapshots to keep, and for how long. **By Time Period** lets you say "keep 7 daily, 4 weekly, 6 monthly" independently, which gives you plenty of restore points spread over time without the repository growing forever, since restic deduplicates unchanged data between snapshots anyway. **By Count** instead just keeps the last N snapshots regardless of age. **Latest (Count)** on top of either mode guarantees a minimum number of recent snapshots always survive, whatever the rest of the policy says.
|
- **Retention Policy**: how many snapshots to keep, and for how long. **By Time Period** lets you say "keep 7 daily, 4 weekly, 6 monthly" independently, which gives you plenty of restore points spread over time without the repository growing forever, since restic deduplicates unchanged data between snapshots anyway. **By Count** instead just keeps the last N snapshots regardless of age. **Latest (Count)** on top of either mode guarantees a minimum number of recent snapshots always survive, whatever the rest of the policy says.
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ services:
|
|||||||
# Tout ce que vous voulez que Backrest puisse sauvegarder doit
|
# Tout ce que vous voulez que Backrest puisse sauvegarder doit
|
||||||
# aussi être monté ici : la stack ne voit que ce qu'on lui donne.
|
# aussi être monté ici : la stack ne voit que ce qu'on lui donne.
|
||||||
- /srv/docker:/userdata/docker:ro
|
- /srv/docker:/userdata/docker:ro
|
||||||
|
- /etc:/userdata/etc:ro
|
||||||
|
- /home:/userdata/home:ro
|
||||||
environment:
|
environment:
|
||||||
- BACKREST_DATA=/data
|
- BACKREST_DATA=/data
|
||||||
- BACKREST_CONFIG=/config/config.json
|
- BACKREST_CONFIG=/config/config.json
|
||||||
@@ -84,7 +86,9 @@ services:
|
|||||||
```
|
```
|
||||||
|
|
||||||
::note
|
::note
|
||||||
La ligne `/srv/docker:/userdata/docker:ro` est ce qui permet à Backrest de voir le reste de vos stacks pour les sauvegarder, montée en lecture seule puisqu'un outil de sauvegarde n'a aucune raison d'écrire dans ce qu'il sauvegarde. Ajoutez une ligne par dossier de l'hôte à couvrir, `/media:/userdata/media:ro` pour votre bibliothèque média, et ainsi de suite. Une clé USB ou un disque externe branché ? Montez-le aussi, c'est exactement là que va aller votre premier dépôt.
|
Ces trois lignes couvrent ce qui vaut réellement la peine d'être sauvegardé hors site sur un serveur homelab, selon [dossiers et partitions](/general/linux/filesystem) : `/srv/docker` contient la config et les données de chaque stack (bases de données, fichiers uploadés, le coffre de Vaultwarden, les utilisateurs de Pocket ID, etc.), `/etc` contient votre configuration système (le durcissement SSH du [guide d'installation](/serveex/core/installation#refermer-la-porte-derrière-vous), vos fichiers `.subdomain.conf` de SWAG, les unités systemd), et `/home` contient vos propres scripts et notes. Les trois montés en lecture seule, un outil de sauvegarde n'a aucune raison d'écrire dans ce qu'il sauvegarde.
|
||||||
|
|
||||||
|
Ce qui ne vaut généralement **pas** le coup : une grosse bibliothèque média ou un dossier de téléchargement torrent sur un disque de données séparé. C'est souvent énorme, remplaçable, et rarement justifié de payer du stockage cloud ou de la bande passante SSH pour le protéger. Montez-le aussi si vous n'êtes pas d'accord, `/media:/userdata/media:ro` par exemple, réfléchissez juste à la taille avant.
|
||||||
::
|
::
|
||||||
|
|
||||||
::tip{icon=""}
|
::tip{icon=""}
|
||||||
@@ -229,7 +233,7 @@ Retour dans Backrest, allez dans **Add Plan**. Ce formulaire couvre quoi sauvega
|
|||||||
|
|
||||||
- **Plan Name** : même règle que le nom du dépôt, choisissez quelque chose de clair, impossible à changer ensuite.
|
- **Plan Name** : même règle que le nom du dépôt, choisissez quelque chose de clair, impossible à changer ensuite.
|
||||||
- **Repository** : celui que vous venez de créer plus haut.
|
- **Repository** : celui que vous venez de créer plus haut.
|
||||||
- **Paths** : choisissez parmi ce que vous avez monté plus tôt, `/userdata/docker` pour vos stacks par exemple. Vous pouvez en ajouter plusieurs.
|
- **Paths** : cliquez sur **Add** pour ajouter une ligne, puis tapez le chemin côté conteneur de ce que vous avez monté plus haut, il n'y a pas d'explorateur de fichiers, juste un champ texte. `/userdata/docker` pour vos stacks, `/userdata/etc` pour votre config système, `/userdata/home` pour vos propres fichiers. Cliquez à nouveau sur **Add** pour chaque dossier supplémentaire, le petit bouton `-` retire une ligne dont vous n'avez plus besoin.
|
||||||
- **Excludes** et **Excludes (Case Insensitive)** : des motifs à ignorer au sein de ces chemins, pratique pour les dossiers de cache ou tout ce qui est vraiment jetable et qui gonflerait chaque instantané pour rien.
|
- **Excludes** et **Excludes (Case Insensitive)** : des motifs à ignorer au sein de ces chemins, pratique pour les dossiers de cache ou tout ce qui est vraiment jetable et qui gonflerait chaque instantané pour rien.
|
||||||
- **Schedule Type** : les trois mêmes choix que les plannings du dépôt ci-dessus, `Disabled`, un `Interval`, ou une `Cron Expression`. Un cron nocturne du type `0 3 * * *` (tous les jours à 3h du matin) est un défaut raisonnable pour un homelab.
|
- **Schedule Type** : les trois mêmes choix que les plannings du dépôt ci-dessus, `Disabled`, un `Interval`, ou une `Cron Expression`. Un cron nocturne du type `0 3 * * *` (tous les jours à 3h du matin) est un défaut raisonnable pour un homelab.
|
||||||
- **Retention Policy** : combien d'instantanés conserver, et pendant combien de temps. **By Time Period** vous permet de dire "garder 7 quotidiens, 4 hebdomadaires, 6 mensuels" indépendamment, ce qui vous donne largement assez de points de restauration étalés dans le temps sans que le dépôt grossisse indéfiniment, puisque restic déduplique de toute façon les données inchangées entre les instantanés. **By Count** conserve à la place simplement les N derniers instantanés, quel que soit leur âge. **Latest (Count)** en plus de l'un ou l'autre mode garantit qu'un nombre minimum d'instantanés récents survit toujours, quoi que dise le reste de la politique.
|
- **Retention Policy** : combien d'instantanés conserver, et pendant combien de temps. **By Time Period** vous permet de dire "garder 7 quotidiens, 4 hebdomadaires, 6 mensuels" indépendamment, ce qui vous donne largement assez de points de restauration étalés dans le temps sans que le dépôt grossisse indéfiniment, puisque restic déduplique de toute façon les données inchangées entre les instantanés. **By Count** conserve à la place simplement les N derniers instantanés, quel que soit leur âge. **Latest (Count)** en plus de l'un ou l'autre mode garantit qu'un nombre minimum d'instantanés récents survit toujours, quoi que dise le reste de la politique.
|
||||||
|
|||||||
Reference in New Issue
Block a user