# Script de synchronisation PiHole

## Vue d'ensemble Ce script permet de synchroniser une configuration PiHole depuis un serveur Mikrotik (source de vérité) vers deux serveurs Ubuntu. Il gère la copie des fichiers de configuration, des bases de données et des règles DNS personnalisées.

## Architecture ### Serveurs - Source de vérité : Mikrotik (192.168.2.1)

Stockage : `/usb1/etc/pihole/` et `/usb1/etc/dnsmasq.d/`

Utilisateur : piholesync

- Serveurs cibles : Ubuntu (192.168.2.8 et 192.168.2.9)

Stockage : `/etc/pihole/` et `/etc/dnsmasq.d/`

Utilisateur : piholesync avec droits sudo

### Fichiers synchronisés - PiHole :

gravity.db (base de données principale)

custom.list (règles personnalisées)

local.list (règles locales)

- DNSMasq :

05-pihole-custom-cname.conf (règles CNAME)

## Fonctionnalités

### Système de backup - Localisation : `/var/backup/pihole-sync/` - Rotation automatique : Conservation de 7 jours - Structure : Un sous-dossier par serveur et par date - Contenu : Copie complète de /etc/pihole et /etc/dnsmasq.d

### Logging - Fichiers : `/var/log/pihole-sync/sync.log` - Rotation : Quotidienne avec conservation de 7 jours - Format : `[TIMESTAMP] Message` - Niveaux : Info et Debug (avec –debug)

### Sécurité - Authentification SSH par clés - Utilisateur dédié (piholesync) - Permissions sudo limitées - Vérification des droits avant exécution

## Processus de synchronisation

### 1. Vérifications préalables 1. Rotation des logs 2. Vérification de l'existence des fichiers source 3. Test des droits sudo sur tous les serveurs 4. Création des backups

### 2. Copie depuis Mikrotik 1. Création d'un dossier temporaire 2. Copie des fichiers via SFTP 3. Vérification de l'intégrité (taille, format SQLite) 4. Synchronisation du fichier CNAME

### 3. Déploiement 1. Arrêt des services PiHole 2. Synchronisation des fichiers via rsync 3. Correction des permissions 4. Reconstruction des bases gravity 5. Redémarrage des services

## Utilisation

### Prérequis 1. Configuration SSH avec clés pour piholesync 2. Droits sudo pour piholesync sur les commandes :

rsync

pihole

3. Répertoires de logs et backups créés avec bonnes permissions

### Commandes ```bash # Exécution normale ./pihole-sync.sh

# Mode simulation ./pihole-sync.sh –dry-run

# Mode debug ./pihole-sync.sh –debug

# Aide ./pihole-sync.sh –help ```

### Options - `–dry-run` : Simulation sans modification - `–debug` : Affichage des messages de debug

## Résolution des problèmes

### Logs à vérifier 1. `/var/log/pihole-sync/sync.log` 2. Journaux système (`journalctl`) 3. Logs PiHole (`/var/log/pihole/pihole.log`)

### Problèmes courants 1. Erreur SSH : Vérifier les clés et permissions 2. Erreur sudo : Contrôler le fichier sudoers 3. Fichiers invalides : Vérifier l'espace disque et les permissions 4. Services non redémarrés : Relancer manuellement `pihole -g`

## Maintenance

### Tâches quotidiennes - Vérification des logs - Contrôle des backups - Validation du fonctionnement DNS

### Tâches hebdomadaires - Nettoyage des vieux backups - Vérification de l'espace disque - Test de restauration

### Tâches mensuelles - Rotation des clés SSH - Audit des permissions - Test de recovery complet