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

# Rotation des logs # Vérification de l'existence des fichiers source # Test des droits sudo sur tous les serveurs # Création des backups

2. Copie depuis Mikrotik

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

3. Déploiement

# Arrêt des services PiHole # Synchronisation des fichiers via rsync # Correction des permissions # Reconstruction des bases gravity # Redémarrage des services

Utilisation

Prérequis

# Configuration SSH avec clés pour piholesync # Droits sudo pour piholesync sur les commandes : #* rsync #* pihole # Répertoires de logs et backups créés avec bonnes permissions

Commandes

<syntaxhighlight lang=“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 </syntaxhighlight>

Options

* '–dry-run' : Simulation sans modification * '–debug' : Affichage des messages de debug

Résolution des problèmes

Logs à vérifier

#

/var/log/pihole-sync/sync.log

# Journaux système (

journalctl

) # Logs PiHole (

/var/log/pihole/pihole.log

)

Problèmes courants

; Erreur SSH : Vérifier les clés et permissions ; Erreur sudo : Contrôler le fichier sudoers ; Fichiers invalides : Vérifier l'espace disque et les permissions ; 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

Documentation PiHole Scripts