AdGuardHome-Sync
Install adguardhome-sync to copy the configuration of one AdGuard Home instance to one or more replicas.
adguardhome-sync.sh installs the bakito/adguardhome-sync release binary,
writes a configuration for one origin and one replica and runs it as a
service.
| Run it | On any system that can reach both AdGuard Home instances. The script has no Proxmox VE host check |
| Supported OS | Debian family (checks /etc/debian_version) and Alpine. Anything else exits with code 238 |
| Port | 8080 (web UI and API) |
| Source | tools/addon/adguardhome-sync.sh |
Run
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/adguardhome-sync.sh)"Prompts
| Prompt | Answer |
|---|---|
Install AdGuardHome-Sync? (y/N): | y installs. Anything else exits |
Origin URL (e.g., http://192.168.1.1): | The primary instance. Empty means http://192.168.1.1; http:// is added when no scheme is given |
Origin Username [admin]: | Empty means admin |
Origin Password: | Hidden input. Empty means changeme |
Replica URL (e.g., http://192.168.1.2): | The instance that receives the configuration. Empty means http://192.168.1.2 |
Replica Username [admin]: | Empty means admin |
Replica Password: | Hidden input. Empty means changeme |
When /opt/adguardhome-sync/adguardhome-sync already exists:
| Prompt | Answer |
|---|---|
Uninstall AdGuardHome-Sync? (y/N): | y removes it |
Update AdGuardHome-Sync? (y/N): | y updates. Anything else exits with No action selected |
What it creates
| Item | Value |
|---|---|
| Binary | /opt/adguardhome-sync/adguardhome-sync |
| Configuration | /opt/adguardhome-sync/adguardhome-sync.yaml (mode 600) |
| Service | adguardhome-sync (systemd unit /etc/systemd/system/adguardhome-sync.service, or OpenRC script /etc/init.d/adguardhome-sync on Alpine, logging to /var/log/adguardhome-sync.log) |
| Update helper | /usr/local/bin/update_adguardhome-sync |
| Web UI | http://<ip>:8080 |
The generated configuration contains:
| Setting | Value |
|---|---|
cron | 0 */2 * * * (every two hours) |
runOnStart | true |
continueOnError | false |
origin, replicas | The URLs, user names and passwords you entered, insecureSkipVerify: false |
api.port | 8080, darkMode: true, metrics disabled |
features | All enabled: DNS access lists, server configuration and rewrites, DHCP server configuration and static leases, general settings, query log and statistics configuration, client settings, services, filters, theme |
The passwords of both AdGuard Home instances are stored in that file in plain text. To add replicas or change the schedule, edit the file and restart the service.
Update
Run update_adguardhome-sync, answer y to Update AdGuardHome-Sync?, or
let the container's update command offer it (see
how update finds add-ons).
If a newer release exists, the service is stopped, the configuration is backed
up to /opt/adguardhome-sync_backup, the installation directory is replaced by
the new release, the configuration is restored and the service is started.
Remove
Uninstall AdGuardHome-Sync? stops and removes the service and deletes
/opt/adguardhome-sync (configuration included) and the update helper.
Limits
- The script asks for exactly one replica. More are added in the YAML file.
- Port 8080 is fixed in the script (
DEFAULT_PORT); changeapi.portin the configuration if it collides with another service.