Gravity Sync es una herramienta diseñada para replicar la configuración de DNS entre dos instancias de Pi-hole (versión 5.x o superior). Su función principal es garantizar que las reglas de filtrado, las listas de dominios y las asignaciones de red sean idénticas en ambos nodos, proporcionando redundancia y alta disponibilidad en la infraestructura de red local.
Requisitos previos del sistema
Antes de proceder con la instalación, es fundamental verificar que el entorno cumpla con los siguientes criterios técnicos:
- Dos nodos activos con Pi-hole 5.x o una versión más reciente instalada.
- Conectividad SSH habilitada entre ambos servidores.
- Un usuario con privilegios de ejecución
sudoen ambas máquinas.
Para confirmar la versión actual de su sistema de bloqueo de publicidad, ejecute:
pihole -v
Instalación del software
El proceso de despliegue comienza clonando el repositorio oficial y ejecutando el script de instalación principal en el nodo que actuará como controlador secundario.
# Obtención del código fuente
git clone https://github.com/vmstan/gravity-sync.git
# Acceso al directorio del proyecto
cd gravity-sync
# Ejecución del instalador inicial
sudo ./gravity-sync
Durante este proceso, el script verificará las dependencias necesarias y preparará el entorno para la configuración inicial.
Configuración del enlace entre nodos
Gravity Sync utiliza un asistente interactivo para establecer la comunicación segura entre las instancias de Pi-hole.
# Iniciar el asistente de configuración
gravity-sync config
A lo largo de este asistente, deberá proporcionar los siguientes datos:
- Dirección IP: El host remoto que contiene la configuración maestra.
- Usuario SSH: La cuenta utilizada para acceder al nodo remoto.
- Autenticación: El sistema generará automáticamente un par de claves SSH para pemritir la sincronización sin intervención manual de contraseñas.
Operaciones de sincronización
Una vez establecida la conexión, existen varios métodos para gestionar el flujo de datos entre los servidores.
Sincronización Inteligente
El comando smart analiza las marcas de tiempo y los cambios en la base de datos de ambos nodos para decidir qué archivos deben actualizarse.
gravity-sync smart
Gestión Manual de Dirección
Si requiere forzar la dirección del flujo de datos, puede utilizar los comandos de empuje o tracción:
# Traer configuración desde el servidor remoto al local
gravity-sync pull
# Enviar configuración desde el servidor local al remoto
gravity-sync push
Comparación de estado
Para verificar si existen discrepancias entre las listas de gravedad y los archivos de configuración sin realizar cambios, utilice:
gravity-sync compare
Automatización mediante Systemd
Para mantener la paridad de datos de forma continua sin intervención del administrador, Gravity Sync permite programar tareas automáticas.
# Activar el servicio de sincronización automática
gravity-sync auto
Por defecto, la herramienta realizará verificaciones cada 15 minutos. Si desea ajustar este intervalo, puede modificar el temporizador del sistema:
sudo systemctl edit --full gravity-sync.timer
Para monitorear el rendimiento y verificar que las tareas se ejecutan correctamente, consulte los registros del sistema:
gravity-sync logs
Mantenimiento y archivos gestionados
Gravity Sync no solo sincroniza la base de datos principal de dominios (gravity.db), sino también archivos críticos como:
custom.list: Registros DNS locales personalizados.05-pihole-custom-cname.conf: Configuraciones de alias CNAME.04-pihole-static-dhcp.conf: Asignaciones de IP estáticas por DHCP.
Si necesita realizar cambios avanzados o excluir elementos específicos, puede editar el archivo de configuración global:
sudo vi /etc/gravity-sync/gravity-sync.conf
Para mantener la herramienta actualizada con las últimas mejoras de seguridad y compatibilidad, ejecute periódicamente:
gravity-sync update