From 24d3e7d914ec471a18ae056b8e4a2194d1d5b488 Mon Sep 17 00:00:00 2001 From: BeauTroll <-> Date: Tue, 16 Dec 2025 06:31:56 +0100 Subject: [PATCH] Anonymize sensitive information and add SSH setup documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation: - Add comprehensive SSH key setup guide in docs/SSH-SETUP.md - Add SSH configuration sections to README.md and QUICKSTART.md - Replace specific provider examples with generic alternatives - Remove Hetzner/BorgBase specific instructions for broader applicability Anonymization: - Remove company/project specific names (Agence66 → generic) - Generalize service names (/srv/app → /srv/*) - Remove detailed application lists (/opt/nextcloud, etc. → /opt/*) - Replace specific usernames and hostnames with placeholders - Change repository label from 'serveur' to 'production' Files updated: - README.md: Add SSH setup, anonymize content - QUICKSTART.md: Add SSH configuration steps - CHANGELOG.md: Generalize paths list - config.yaml: Generic title and label - install.sh: Remove branding - scripts/healthcheck.sh: Remove branding - docs/SSH-SETUP.md: New comprehensive SSH guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- CHANGELOG.md | 14 +-- QUICKSTART.md | 23 +++- README.md | 97 ++++++++++------- config.yaml | 4 +- docs/SSH-SETUP.md | 238 +++++++++++++++++++++++++++++++++++++++++ install.sh | 2 +- scripts/healthcheck.sh | 2 +- 7 files changed, 327 insertions(+), 53 deletions(-) create mode 100644 docs/SSH-SETUP.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 8172cdf..48bfd7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,19 +27,9 @@ Toutes les modifications notables de ce projet seront documentées dans ce fichi ### Chemins sauvegardés - `/var/www` - Sites web -- `/srv/minecraftserver` - Serveur Minecraft -- `/srv/reddiscordbot` - Bot Discord -- `/srv/waltercoiffure` - Application Walter Coiffure +- `/srv/*` - Services applicatifs - `/etc` - Configurations système -- `/opt/nextcloud` - Nextcloud -- `/opt/traefik` - Reverse proxy Traefik -- `/opt/n8n` - Automation n8n -- `/opt/portainer` - Gestion Docker -- `/opt/uptime-kuma` - Monitoring -- `/opt/vaultwarden` - Gestionnaire de mots de passe -- `/opt/mailcow-dockerized` - Serveur mail -- `/opt/netdata` - Monitoring système -- `/opt/gitea` - Forge Git +- `/opt/*` - Applications tierces - `/home` - Répertoires utilisateurs ### Compatibilité diff --git a/QUICKSTART.md b/QUICKSTART.md index a2b73af..9bc316e 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -45,13 +45,34 @@ NTFY_URL=https://ntfy.sh/votre-topic NTFY_USER=username:password ``` +## Configuration SSH (repository distant) + +Si votre repository est distant, configurez d'abord les clés SSH : + +```bash +# Générer une clé SSH +sudo ssh-keygen -t ed25519 -C "borgmatic-backup" +# Appuyez sur Entrée 3 fois (emplacement par défaut, pas de passphrase) + +# Copier la clé sur le serveur +sudo ssh-copy-id -p PORT user@backup-server.com + +# Tester (ne doit pas demander de mot de passe) +sudo ssh -p PORT user@backup-server.com + +# Si ssh-copy-id ne fonctionne pas, méthode manuelle : +# 1. Afficher la clé : sudo cat /root/.ssh/id_ed25519.pub +# 2. Se connecter : ssh -p PORT user@backup-server.com +# 3. Ajouter : echo "VOTRE_CLE" >> ~/.ssh/authorized_keys +``` + ## Initialiser le repository (si nouveau) ```bash # Repository local borg init --encryption=repokey-blake2 /path/to/repo -# Repository distant +# Repository distant (SSH doit être configuré d'abord) borg init --encryption=repokey-blake2 ssh://user@server/path/to/repo # IMPORTANT: Sauvegarder la clé ! diff --git a/README.md b/README.md index d076375..2867c56 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Borgmatic Backup - Agence66 +# Borgmatic Backup -Configuration Borgmatic pour le backup automatique du serveur Agence66. +Configuration Borgmatic pour le backup automatique de serveur. ## Vue d'ensemble @@ -20,19 +20,9 @@ Ce dépôt contient la configuration complète pour effectuer des backups automa ## Dossiers sauvegardés - `/var/www` - Sites web -- `/srv/minecraftserver` - Serveur Minecraft -- `/srv/reddiscordbot` - Bot Discord -- `/srv/waltercoiffure` - Walter Coiffure +- `/srv/*` - Services applicatifs personnalisés - `/etc` - Configurations système -- `/opt/nextcloud` - Nextcloud -- `/opt/traefik` - Reverse proxy Traefik -- `/opt/n8n` - Automation n8n -- `/opt/portainer` - Gestion Docker -- `/opt/uptime-kuma` - Monitoring -- `/opt/vaultwarden` - Gestionnaire de mots de passe -- `/opt/mailcow-dockerized` - Serveur mail -- `/opt/netdata` - Monitoring système -- `/opt/gitea` - Forge Git +- `/opt/*` - Applications tierces (Nextcloud, Traefik, Docker, etc.) - `/home` - Répertoires utilisateurs ## Installation @@ -128,6 +118,37 @@ Points importants à vérifier : 2. **Chemins** : Ajustez `source_directories` si nécessaire 3. **Exclusions** : Personnalisez `exclude_patterns` selon vos besoins +### Configuration de l'authentification SSH (repository distant) + +Si vous utilisez un repository distant via SSH, configurez l'authentification par clé : + +```bash +# 1. Générer une clé SSH pour root (si elle n'existe pas) +sudo ssh-keygen -t ed25519 -C "borgmatic-backup" +# Appuyez sur Entrée pour accepter l'emplacement par défaut +# Laissez la passphrase vide pour l'automatisation + +# 2. Afficher la clé publique +sudo cat /root/.ssh/id_ed25519.pub + +# 3. Copier la clé sur le serveur distant +sudo ssh-copy-id -p PORT user@backup-server.com + +# 4. Tester la connexion (ne doit pas demander de mot de passe) +sudo ssh -p PORT user@backup-server.com +``` + +**Alternative manuelle** (si ssh-copy-id ne fonctionne pas) : + +```bash +# Se connecter au serveur distant +ssh -p PORT user@backup-server.com + +# Ajouter la clé publique +echo "VOTRE_CLE_PUBLIQUE" >> ~/.ssh/authorized_keys +exit +``` + ### Initialisation du repository Borg Si vous utilisez un nouveau repository : @@ -288,6 +309,7 @@ sudo borgmatic config validate --verbosity 2 ``` Erreurs courantes : + - `repositories' is a required property` : Manque la section repositories - `Additional properties are not allowed` : Propriété invalide pour cette version - Erreurs YAML : Vérifier l'indentation (utiliser des espaces, pas des tabs) @@ -309,13 +331,35 @@ journalctl -u borgmatic.service -f ```bash # Tester la connexion SSH (si distant) -ssh user@backup-server +sudo ssh -p PORT user@backup-server + +# Vérifier les clés SSH +sudo ls -la /root/.ssh/ # Vérifier les variables d'environnement sudo cat /etc/borgmatic/.env # Tester Borg directement -sudo borg list $BORG_REPO +sudo bash -c 'source /etc/borgmatic/.env && borg list $BORG_REPO' +``` + +### Demande de mot de passe SSH + +Si borgmatic demande le mot de passe du serveur distant : + +```bash +# 1. Vérifier que la clé SSH existe +sudo ls /root/.ssh/id_ed25519 + +# 2. Si pas de clé, en générer une +sudo ssh-keygen -t ed25519 -C "borgmatic-backup" + +# 3. Copier la clé sur le serveur +sudo ssh-copy-id -p PORT user@backup-server.com + +# 4. Tester +sudo ssh -p PORT user@backup-server.com +# Ne doit PAS demander de mot de passe ``` ### Problème de permissions @@ -346,25 +390,6 @@ echo $NTFY_URL echo $NTFY_USER ``` -## Migration depuis l'ancien script - -Si vous migrez depuis l'ancien script Borg : - -1. **Le repository existant est compatible** - pas besoin de réinitialiser -2. **Les archives existantes restent accessibles** -3. **Le format de nommage est identique** : `backup-YYYYMMDD-HHMM` -4. **La rétention est la même** : 7/4/6 - -Pour vérifier la compatibilité : - -```bash -# Lister les anciennes archives -borg list /path/to/existing/repo - -# Tester avec borgmatic -borgmatic list -``` - ## Ressources - [Documentation Borgmatic](https://torsion.org/borgmatic/) @@ -381,4 +406,4 @@ Pour tout problème : ## Licence -Configuration personnalisée pour Agence66. +Configuration personnalisée pour usage personnel/professionnel. diff --git a/config.yaml b/config.yaml index 06af371..19fb9c1 100644 --- a/config.yaml +++ b/config.yaml @@ -1,4 +1,4 @@ -# Configuration Borgmatic 2.0 pour backup serveur Agence66 +# Configuration Borgmatic 2.0 pour backup serveur # Compatible avec les backups Borg existants # # IMPORTANT: Nécessite Borgmatic ≥ 2.0.0 pour l'interpolation des variables d'environnement @@ -6,7 +6,7 @@ # Repository Borg - utilise la variable d'environnement repositories: - path: "${BORG_REPO}" - label: serveur + label: production # Chemins sources à sauvegarder source_directories: diff --git a/docs/SSH-SETUP.md b/docs/SSH-SETUP.md new file mode 100644 index 0000000..4557e27 --- /dev/null +++ b/docs/SSH-SETUP.md @@ -0,0 +1,238 @@ +# Configuration SSH pour Borgmatic + +Guide complet pour configurer l'authentification SSH par clé pour les backups distants. + +## Pourquoi utiliser des clés SSH ? + +- **Automatisation** : Pas de mot de passe à saisir manuellement +- **Sécurité** : Plus sécurisé qu'un mot de passe +- **Requis** : Nécessaire pour que le timer systemd fonctionne automatiquement + +## Configuration étape par étape + +### 1. Générer une clé SSH + +```bash +# Se connecter en root +sudo su - + +# Générer une clé Ed25519 (recommandé) +ssh-keygen -t ed25519 -C "borgmatic-backup@$(hostname)" + +# Ou RSA si Ed25519 n'est pas supporté +ssh-keygen -t rsa -b 4096 -C "borgmatic-backup@$(hostname)" +``` + +**Réponses aux questions** : + +``` +Enter file in which to save the key (/root/.ssh/id_ed25519): [Entrée] +Enter passphrase (empty for no passphrase): [Entrée - laisser vide] +Enter same passphrase again: [Entrée] +``` + +**Important** : Laissez la passphrase **vide** pour permettre l'automatisation. + +### 2. Vérifier que la clé a été créée + +```bash +ls -la /root/.ssh/ +# Vous devriez voir : +# id_ed25519 (clé privée - à garder secrète) +# id_ed25519.pub (clé publique - à copier sur le serveur) +``` + +### 3. Copier la clé sur le serveur distant + +#### Méthode automatique (recommandée) + +```bash +# Syntaxe générale +ssh-copy-id -p PORT user@backup-server.com + +# Exemples +ssh-copy-id -p 22 backup@backup.example.com +ssh-copy-id -p 2222 user@192.168.1.100 +``` + +Saisissez le mot de passe du serveur **une dernière fois**. + +#### Méthode manuelle + +Si `ssh-copy-id` ne fonctionne pas : + +```bash +# 1. Afficher votre clé publique +cat /root/.ssh/id_ed25519.pub + +# 2. Se connecter au serveur distant +ssh -p PORT user@backup-server.com + +# 3. Sur le serveur distant, ajouter la clé +mkdir -p ~/.ssh +chmod 700 ~/.ssh +echo "VOTRE_CLE_PUBLIQUE_ICI" >> ~/.ssh/authorized_keys +chmod 600 ~/.ssh/authorized_keys +exit +``` + +### 4. Tester la connexion + +```bash +# Tester sans mot de passe +ssh -p PORT user@backup-server.com + +# Si ça fonctionne, vous êtes connecté directement ! +# Tapez 'exit' pour revenir +``` + +**Si on vous demande toujours un mot de passe** : +- Vérifiez les permissions : `chmod 600 /root/.ssh/id_ed25519` +- Vérifiez le serveur : `ssh -v -p PORT user@backup-server.com` (mode verbeux) + +## Cas spécifiques + +### Serveurs avec interface web + +Certains fournisseurs de stockage backup proposent une interface web pour gérer les clés SSH : + +1. Connectez-vous à l'interface web de votre fournisseur +2. Cherchez la section "SSH Keys" ou "Authentification" +3. Cliquez sur "Add SSH key" ou équivalent +4. Collez le contenu de `/root/.ssh/id_ed25519.pub` +5. Sauvegardez + +### Serveur VPS/Dédié + +Pour un serveur standard avec accès SSH : + +```bash +# Copie standard avec ssh-copy-id +sudo ssh-copy-id -p 22 user@backup-server.com + +# Ou méthode manuelle +ssh -p PORT user@backup-server.com +mkdir -p ~/.ssh +chmod 700 ~/.ssh +echo "VOTRE_CLE_PUBLIQUE" >> ~/.ssh/authorized_keys +chmod 600 ~/.ssh/authorized_keys +exit +``` + +## Configuration avancée + +### Utiliser une clé SSH spécifique + +Si vous voulez utiliser une clé dédiée uniquement pour Borgmatic : + +```bash +# 1. Générer une clé dédiée +ssh-keygen -t ed25519 -f /root/.ssh/borgmatic_ed25519 -C "borgmatic-only" + +# 2. Copier cette clé spécifique +ssh-copy-id -i /root/.ssh/borgmatic_ed25519.pub -p PORT user@backup-server.com + +# 3. Configurer dans /etc/borgmatic/.env +echo 'BORG_RSH="ssh -i /root/.ssh/borgmatic_ed25519"' >> /etc/borgmatic/.env +``` + +### Config SSH personnalisée + +Créez `/root/.ssh/config` : + +``` +Host backup-server + HostName backup.example.com + Port 22 + User backupuser + IdentityFile /root/.ssh/borgmatic_ed25519 + StrictHostKeyChecking accept-new +``` + +Puis dans votre repository : + +```yaml +repositories: + - path: ssh://backup-server/./backups + label: serveur +``` + +## Vérification et troubleshooting + +### Vérifier que tout fonctionne + +```bash +# 1. Test SSH +ssh -p PORT user@backup-server.com +# ✅ Doit se connecter SANS demander de mot de passe + +# 2. Test Borg +source /etc/borgmatic/.env +borg list $BORG_REPO +# ✅ Doit lister les archives SANS demander de mot de passe + +# 3. Test Borgmatic +make dry-run +# ✅ Doit fonctionner SANS demander de mot de passe +``` + +### Problèmes courants + +**"Permission denied (publickey)"** + +```bash +# Vérifier les permissions de la clé privée +chmod 600 /root/.ssh/id_ed25519 + +# Vérifier que la clé est bien copiée sur le serveur +ssh -v -p PORT user@backup-server.com 2>&1 | grep "Offering public key" +``` + +**"Host key verification failed"** + +```bash +# Ajouter le serveur aux known hosts +ssh-keyscan -p PORT backup-server.com >> /root/.ssh/known_hosts +``` + +**Borgmatic demande toujours le mot de passe** + +```bash +# Vérifier que SSH fonctionne bien sans mot de passe +ssh -p PORT user@backup-server.com + +# Vérifier les variables d'environnement +sudo cat /etc/borgmatic/.env | grep BORG_RSH +``` + +## Sécurité + +### Bonnes pratiques + +1. **Clé dédiée** : Utilisez une clé SSH spécifique pour les backups +2. **Restrictions** : Limitez la clé aux commandes Borg uniquement (côté serveur) +3. **Rotation** : Changez les clés régulièrement (annuellement) +4. **Backup** : Sauvegardez votre clé privée en lieu sûr + +### Limiter les commandes autorisées (serveur) + +Sur le serveur de backup, dans `~/.ssh/authorized_keys` : + +```bash +command="borg serve --restrict-to-path /path/to/repo",restrict ssh-ed25519 AAAAC3... borgmatic-backup +``` + +Cela limite la clé SSH à **uniquement** exécuter Borg sur ce chemin spécifique. + +## Automatisation avec le timer systemd + +Une fois la clé SSH configurée, le timer systemd fonctionnera automatiquement : + +```bash +# Le service systemd utilisera automatiquement la clé SSH de root +systemctl status borgmatic.timer + +# Les backups s'exécuteront à 3h du matin sans intervention +``` + +✅ **Configuration terminée !** Les backups automatiques peuvent maintenant fonctionner sans intervention manuelle. diff --git a/install.sh b/install.sh index 9f9ea6e..e216224 100755 --- a/install.sh +++ b/install.sh @@ -13,7 +13,7 @@ YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}==================================================${NC}" -echo -e "${GREEN}Installation de Borgmatic - Agence66${NC}" +echo -e "${GREEN}Installation de Borgmatic${NC}" echo -e "${GREEN}==================================================${NC}" echo "" diff --git a/scripts/healthcheck.sh b/scripts/healthcheck.sh index 7ebee2d..8fdf65a 100755 --- a/scripts/healthcheck.sh +++ b/scripts/healthcheck.sh @@ -24,7 +24,7 @@ ERRORS=0 WARNINGS=0 echo -e "${BLUE}==================================================${NC}" -echo -e "${BLUE}Healthcheck Borgmatic - Agence66${NC}" +echo -e "${BLUE}Healthcheck Borgmatic${NC}" echo -e "${BLUE}==================================================${NC}" echo ""