documentation:borg
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
documentation:borg [2021/03/26 15:31] – créée tierce | documentation:borg [2021/04/14 17:53] (Version actuelle) – nom variable hgo | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Mettre en place un serveur accessible en `ssh` et disposant d'un espace de stockage qui pourra accueillir les sauvegardes de différentes machines appartenant à l'un ou l' | Mettre en place un serveur accessible en `ssh` et disposant d'un espace de stockage qui pourra accueillir les sauvegardes de différentes machines appartenant à l'un ou l' | ||
- | NOM_DU_COMPTE | + | Les sauvegardes seront réalisées avec [borgmatic](https:// |
- | NOM_DE_MACHINE | + | |
- | SERVEUR | + | |
- | STORAGE | + | |
- | PHRASE_DE_PASSE | + | |
- | NOM_DE_FICHIER | + | |
- | + | ||
- | on peut init depuis le client | + | |
- | - mais il faut un user ssh sur le serveur | + | |
- | - donc que le home de chaque user soit sur 1TB | + | |
- | - que chaque user dispose d'une clé ssh copié sur le serveur | + | |
- | - quid si la brique est compromise … les backups aussi sont alors accessibles ! | + | |
- | - mais dans l' | + | |
- | - Donc c'est quand même mieux de ne pas demander au serveur d' | + | |
- | - Donc il faudrait, dans la plus grande prudence … faire un backup du serveur de backup | + | |
+ | ``` | ||
+ | NOM_DU_COMPTE | ||
+ | NOM_DE_MACHINE | ||
+ | SERVEUR_BORG | ||
+ | STOCKAGE_BORG | ||
+ | PHRASE_DE_PASSE = La phrase de passe pour chiffrer et déchiffrer les sauvegardes d'une NOM_DE_MACHINE | ||
+ | CLE_SSH | ||
+ | ``` | ||
## Serveur | ## Serveur | ||
- | ### Matériel | + | Le serveur peut-être un Debian récent disposant d'un accès `ssh`. |
- | Avec l' | + | ### Installation |
- | - Un plug PC 32bit 1 cœur, 512Mb de RAM | + | Borg est disponible dans les dépôts |
- | - Un boitier eSATA de 4 disques SATA | + | |
- | - 1 disque de 80GB pour le système | + | |
- | - 3 disques de 2TB pour le storage configurés en RAID5 avec mdadm et monté, par exemple, | + | |
- | + | ||
- | ### installation | + | |
``` | ``` | ||
Ligne 38: | Ligne 26: | ||
``` | ``` | ||
- | ### Groupe borg | + | ### Créer un compte |
- | ``` | + | Le dossier |
- | groupadd borg | + | |
- | ``` | + | |
- | + | ||
- | ### R/W sur storage pour le groupe borg | + | |
``` | ``` | ||
- | chown root: | + | adduser --home |
- | chmod 770 /media/ | + | |
``` | ``` | ||
- | ### Nouveau compte | + | ### R/W sur storage pour l' |
- | ``` | + | Pour limiter les accès |
- | adduser NOM_DU_COMPTE | + | |
- | ``` | + | |
- | + | ||
- | ### ajout au groupe borg | + | |
- | + | ||
- | C'est nécessaire pour avoir le droit d' | + | |
``` | ``` | ||
- | adduser NOM_DU_COMPTE borg | + | chmod 700 / |
- | ``` | + | |
- | + | ||
- | ### faire un dossier pour le compte | + | |
- | + | ||
- | ``` | + | |
- | mkdir / | + | |
``` | ``` | ||
- | ## Client | + | ## Machine |
- | Un « client » est une machine appartenant au NOM_DU_COMPTE | + | Un `NOM_DU_COMPTE` peut avoir plusieurs `NOM_DE_MACHINE` virtuelles ou non dont les sauvegardes seraient envoyées sur `NOM_DU_COMPTE@SERVEUR_BORG:/ |
- | En tant que root ! | + | Depuis chaque `NOM_DE_MACHINE` c'est `root` qui se connectera sur `NOM_DE_COMPTE@SERVEUR_BORG` et il est donc nécessaire de générer une clé ssh /(ed25519 de préférence ou bien RSA 4096)* qui sera copiée sur le `SERVEUR_BORG` pour son `NOM_DE_COMPTE`. |
### Faire une clé ecd25219 sans mot de passe | ### Faire une clé ecd25219 sans mot de passe | ||
Ligne 90: | Ligne 61: | ||
``` | ``` | ||
- | ### installer | + | ### Configurer le client SSH |
+ | |||
+ | Pour indiquer à SSH comment se connecter à `SERVEUR_BORG` | ||
+ | |||
+ | ``` | ||
+ | # nano ~/ | ||
+ | Host SERVEUR_BORG | ||
+ | User NOM_DU_COMPTE | ||
+ | IdentityFile ~/ | ||
+ | PreferredAuthentications publickey, | ||
+ | ``` | ||
+ | |||
+ | ### Installer | ||
``` | ``` | ||
Ligne 102: | Ligne 85: | ||
``` | ``` | ||
- | ### initier | + | ### Initier |
#### Sans chiffrement | #### Sans chiffrement | ||
Ligne 110: | Ligne 93: | ||
#### Avec chiffrement | #### Avec chiffrement | ||
- | Voir https:// | + | Voir [la documentation](https:// |
``` | ``` | ||
- | borg init --encryption=repokey-blake2 | + | # borg init --encryption=repokey-blake2 |
Passe phrase : PHRASE_DE_PASSE | Passe phrase : PHRASE_DE_PASSE | ||
``` | ``` | ||
``` | ``` | ||
- | borg key export | + | # borg key export |
- | cat NOM_DE_FICHIER | + | |
BORG_KEY f6dc3da161fa259ad8c79380b2593d4996e4fb3c3efd802c88d996dd93b5f250 | BORG_KEY f6dc3da161fa259ad8c79380b2593d4996e4fb3c3efd802c88d996dd93b5f250 | ||
hqlhbGdvcml0aG2mc2hhMjU2pGRhdGHaAZ6DIeXAqvfULdYvWU6QooZHvmEaUvP3yzjQj9 | hqlhbGdvcml0aG2mc2hhMjU2pGRhdGHaAZ6DIeXAqvfULdYvWU6QooZHvmEaUvP3yzjQj9 | ||
Ligne 133: | Ligne 115: | ||
ueHXWCC+xBNhDNKndmVyc2lvbgE= | ueHXWCC+xBNhDNKndmVyc2lvbgE= | ||
``` | ``` | ||
- | Et la coller dans le password store du NOM_DU_COMPTE dans borg_sur_SERVEUR en tant que commentaire repokey-blake2 = " | + | Et la coller dans le `password-store` du NOM_DU_COMPTE dans borg_sur_SERVEUR en tant que commentaire repokey-blake2 = " |
- | + | ||
- | Effacer le fichier NOM_DE_FICHIER. | + | |
- | + | ||
- | ``` | + | |
- | rm NOM_DE_FICHIER | + | |
- | ``` | + | |
### Éditer la config | ### Éditer la config | ||
``` | ``` | ||
+ | nano / | ||
+ | # ceci est un exemple | ||
location: | location: | ||
source_directories: | source_directories: | ||
- / | - / | ||
repositories: | repositories: | ||
- | - NOM_DU_COMPTE@SERVEUR:/ | + | - SERVEUR_BORG:/ |
exclude_patterns: | exclude_patterns: | ||
- /dev | - /dev | ||
Ligne 173: | Ligne 151: | ||
``` | ``` | ||
- | borg info NOM_DU_COMPTE@SERVEUR:/ | + | borg info SERVEUR_BORG:/ |
- | Et donner la phrase de passe | + | Et donner la PHRASE_DE_PASSE |
``` | ``` | ||
Ligne 181: | Ligne 159: | ||
``` | ``` | ||
- | borg info / | + | borg info / |
- | Et donner la phrase de passe | + | Et donner la PHRASE_DE_PASSE |
``` | ``` | ||
Ligne 191: | Ligne 169: | ||
``` | ``` | ||
mkdir /tmp/test | mkdir /tmp/test | ||
- | borg mount / | + | borg mount / |
``` | ``` | ||
Ligne 199: | Ligne 177: | ||
nano / | nano / | ||
Et mettre : | Et mettre : | ||
- | 42 00 * * * root / | + | 42 0 * * * root / |
+ | 42 1 * * 0 root / | ||
``` | ``` | ||
- | ## Pour tator et mabrique | + | ## Pour tator et les briques |
- | NOM_DU_COMPTE = nom de la personne / assoss / autre qui reprendra | + | Pour mettre en pratique ce qui est expliqué plus haut, voici ce qui se fait pour un cas particulier |
- | ### sur mon ordi | + | **mabrique** dispose d'une IP publique grâce à un [vpn de Neutrinet](https:// |
- | créer | + | D' |
+ | |||
+ | ### Sur mon ordi | ||
+ | |||
+ | Créer | ||
``` | ``` | ||
Ligne 215: | Ligne 198: | ||
``` | ``` | ||
- | créer un mot de passe pour NOM_DU_COMPTE_sur_mabrique | + | Et dans ce `password-store`: |
- | créer un mot de passe pour NOM_DU_COMPTE_sur_tator dans `misc` avec comme commentaire `username` = NOM_DU_COMPTE. | + | * créer un mot de passe pour `NOM_DU_COMPTE_sur_mabrique` dans `misc` avec comme commentaire `username = NOM_DU_COMPTE`. |
+ | * créer un mot de passe pour `NOM_DU_COMPTE_sur_tator` dans `misc` avec comme commentaire `username | ||
+ | * créer un mot de passe pour `NOM_DEMACHINE_sur_tator` dans `misc` avec comme commentaire | ||
- | créer un mot de passe pour borg_sur_tator dans `misc` avec comme commentaire `repokey-blake2` = comming soon pour y coller plus tard la clé obtenue depuis la machine avec la commande `borg key export NOM_DU_COMPTE@SERVEU_BORG:/ | + | ### Sur mabrique |
- | ### sur mabrique | + | Créer un utilisateur pour `NOM_DU_COMPTE` avec le mot de passe créé précédemment. |
- | Créer un utilisateur pour NOM_DU_COMPTE | + | ``` |
+ | adduser | ||
+ | ``` | ||
- | Ce NOM_DU_COMPTE recevra | + | Ce `NOM_DU_COMPTE` recevra |
- | Modifier la configuration de ssh pour authoriser | + | Modifier la configuration de `ssh` pour autoriser |
``` | ``` | ||
Ligne 237: | Ligne 224: | ||
PermitUserRC yes | PermitUserRC yes | ||
… | … | ||
- | service ssh relaod | + | service ssh reload |
``` | ``` | ||
- | ### sur tator | + | ### Sur tator |
- | Il faut créer un utilisateur NOM_DU_COMPTE pour accueillir la clé de `root` de chaque NOM_DE_MACHINE ce qui permettra un accès ssh sans mot de passe. | + | Il faut créer un utilisateur |
``` | ``` | ||
Ligne 254: | Ligne 241: | ||
``` | ``` | ||
- | Et l' | + | ### Sur une machine |
- | ``` | + | Faire une clé ssh pour `root` sans mot de passe sur `NOM_DE_MACHINE` qui sera sauvegardée. |
- | adduser NOM_DU_COMPTE borg | + | |
- | ``` | + | |
- | + | ||
- | + | ||
- | ### sur une NOM_DE_MACHINE | + | |
- | + | ||
- | Faire une clé ssh pour `root` sans mot de passe. | + | |
``` | ``` | ||
Ligne 277: | Ligne 257: | ||
``` | ``` | ||
- | nano / | + | # nano / |
- | Et mettre : | + | |
Host tierce | Host tierce | ||
- | Hostname tierce.nohost.me | + | |
- | User NOM_DU_COMPTE | + | User NOM_DU_COMPTE |
Host tator | Host tator | ||
- | Hostname 192.168.1.9 | + | |
- | User NOM_DU_COMPTE | + | User NOM_DU_COMPTE |
- | ProxyJump tierce | + | ProxyJump tierce |
``` | ``` | ||
Copier la clé de `root` sur ma brique. | Copier la clé de `root` sur ma brique. | ||
Ligne 312: | Ligne 291: | ||
``` | ``` | ||
- | Vérifier ce qui est monté pour éventuellement l' | + | Vérifier ce qui est monté pour éventuellement l' |
``` | ``` | ||
mount | mount | ||
+ | et/ou bien: | ||
+ | df | ||
et/ou bien: | et/ou bien: | ||
ls /mnt | ls /mnt | ||
Ligne 330: | Ligne 311: | ||
``` | ``` | ||
- | borg init --encryption=repokey-blake2 | + | borg init --encryption=repokey-blake2 |
``` | ``` | ||
Ligne 336: | Ligne 317: | ||
``` | ``` | ||
- | borg key export | + | # borg key export |
- | cat NOM_DE_FICHIER | + | |
BORG_KEY f6dc3da161fa259ad8c79380b2593d4996e4fb3c3efd802c88d996dd93b5f250 | BORG_KEY f6dc3da161fa259ad8c79380b2593d4996e4fb3c3efd802c88d996dd93b5f250 | ||
hqlhbGdvcml0aG2mc2hhMjU2pGRhdGHaAZ6DIeXAqvfULdYvWU6QooZHvmEaUvP3yzjQj9 | hqlhbGdvcml0aG2mc2hhMjU2pGRhdGHaAZ6DIeXAqvfULdYvWU6QooZHvmEaUvP3yzjQj9 | ||
Ligne 350: | Ligne 330: | ||
wQvKVucuWuqml0ZXJhdGlvbnPOAAGGoKRzYWx02gAg0tq+i2wceA8guVTmn4AzKJsJRDb8 | wQvKVucuWuqml0ZXJhdGlvbnPOAAGGoKRzYWx02gAg0tq+i2wceA8guVTmn4AzKJsJRDb8 | ||
ueHXWCC+xBNhDNKndmVyc2lvbgE= | ueHXWCC+xBNhDNKndmVyc2lvbgE= | ||
- | rm NOM_DE_FICHIER | ||
``` | ``` | ||
Ligne 358: | Ligne 337: | ||
borgmatic -n -v2 | borgmatic -n -v2 | ||
``` | ``` | ||
+ | |||
Planifier la sauvegarde. | Planifier la sauvegarde. | ||
Ligne 363: | Ligne 343: | ||
nano / | nano / | ||
et coller: | et coller: | ||
- | 42 23 * * * root / | + | 42 0 * * * root / |
+ | 42 1 * * 0 root / | ||
``` | ``` | ||
+ | |||
+ | ---- | ||
Ligne 377: | Ligne 360: | ||
### ?? alertes | ### ?? alertes | ||
+ | ### ?? log / cron | ||
+ | |||
+ | Ça va avec les alertes. | ||
+ | |||
+ | ### ?? accès sans terminal | ||
+ | |||
+ | Actuellement un NOM_DU_COMPTE dispose d'un accès `ssh` au serveur de sauvegardes. |
documentation/borg.1616769099.txt.gz · Dernière modification : 2021/03/26 15:31 de tierce