Orbital Sync: 多个Pi-hole实例的同步解决方案
1. 项目介绍
Orbital Sync 是一个开源项目,旨在同步多个 Pi-hole 实例,以实现高可用性(HA)。它利用 Pi-hole 内置的 "teleporter" 功能,通过在主 Pi-hole 实例的 admin 界面执行 "备份",然后将该备份恢复到任意数量的辅助 Pi-hole 实例中。这样,它可以同步 Pi-hole "teleporter" 支持的任何内容。
2. 项目快速启动
以下是如何快速启动和配置 Orbital Sync 的步骤。首先,确保您的所有 Pi-hole 实例的 admin 界面都可以被运行此服务的容器/服务器访问。
使用 Docker
- 创建一个 Docker Compose 文件 (
docker-compose.yml
):
version: '3'
services:
orbital-sync:
image: mattwebbio/orbital-sync:1
environment:
PRIMARY_HOST_BASE_URL: 'https://pihole1.example.com'
PRIMARY_HOST_PASSWORD: 'your_password1'
SECONDARY_HOSTS_1_BASE_URL: 'https://pihole2.example.com'
SECONDARY_HOSTS_1_PASSWORD: 'your_password2'
SECONDARY_HOSTS_2_BASE_URL: 'http://192.168.1.3'
SECONDARY_HOSTS_2_PASSWORD: 'your_password3'
SECONDARY_HOSTS_3_BASE_URL: 'http://server:8080'
SECONDARY_HOSTS_3_PASSWORD: 'your_password4'
SECONDARY_HOSTS_3_PATH: '/apps/pi-hole'
INTERVAL_MINUTES: 60
- 在包含
docker-compose.yml
文件的目录中,运行以下命令启动服务:
docker-compose up -d
使用 Node
- 安装 Orbital Sync:
npm install -g orbital-sync
- 设置环境变量,然后运行 Orbital Sync:
export PRIMARY_HOST_BASE_URL='https://pihole1.example.com'
export PRIMARY_HOST_PASSWORD='your_password1'
export SECONDARY_HOSTS_1_BASE_URL='https://pihole2.example.com'
export SECONDARY_HOSTS_1_PASSWORD='your_password2'
# 添加更多的辅助 Pi-hole 实例配置...
orbital-sync
3. 应用案例和最佳实践
应用案例
- 高可用性:通过运行多个 Pi-hole 实例并配置为辅助 DNS 服务器,当一个 Pi-hole 实例发生故障时,网络用户可以自动切换到其他实例,从而避免网络中断。
- 维护和升级:在进行维护或升级时,可以先将流量切换到辅助实例,从而减少对主实例的影响。
最佳实践
- 确保所有 Pi-hole 实例的 admin 界面都可以通过运行 Orbital Sync 的容器/服务器访问。
- 定期测试同步功能,确保数据一致性。
- 考虑使用 Distroless 镜像来提高安全性。
4. 典型生态项目
Orbital Sync 可以与以下项目配合使用,以构建更完善的高可用性和网络管理解决方案:
- Pi-hole:开源广告拦截网络级别的 DNS 服务器。
- Gravity Sync:另一个用于同步多个 Pi-hole 实例的项目。
- Docker:容器化技术,用于部署和运行 Orbital Sync 服务。