Primary Pi-hole syncs lists to unlimited Secondary Pi-holes

I run six Pi-holes on three different networks at three different physical locations. I wanted all six Pi-holes to share the same blocklists, blacklists, whitelists, and regex files, but it was time-consuming to manually synchronize all of them.

I wanted to use Pi-hole’s built-in web UI to manage only one set of lists on one Pi-hole – and then securely synchronize an unlimited number of additional Pi-holes. I couldn’t find an existing script that did exactly what I wanted… so I wrote one:

pihole-cloudsync allows you to use any Pi-hole on any network to act as the “Master” or “Primary.” This is the only Pi-hole whose list settings you will need to manage using Pi-hole’s web UI. The Primary Pi-hole then uses pihole-cloudsync in Push mode to upload its blocklist, blacklist, whitelist, and regex files to a private Git repository that you control (such as GitHub).

All other Pi-holes that you wish to keep synchronized use pihole-cloudsync in Pull mode to download the Primary Pi-hole’s blocklist, blacklist, whitelist, and regex files from your private Git repository.

The script is designed to work with any Git repo that your Pi-holes have access to, but I have only personally tested it with GitHub.

Feedback, suggestions, bug fixes, and code contributions are welcome.

4 Likes

Nice work! Been looking a way to sync my pi-holes :+1:

1 Like

Thanks for your time and work, and also for the good documentation and easy to read script :+1:

1 Like