🛡️ Synchronize AdGuard Home config to replicas
Go to file
Marc Brugger e28134f6b4
push images also to ghcr.io (#34)
* push images also to ghcr.io
2021-08-10 21:22:33 +02:00
.github push images also to ghcr.io (#34) 2021-08-10 21:22:33 +02:00
cmd Dns dhcpas beta feature (#17) 2021-05-28 20:07:32 +02:00
pkg add some styling to api page 2021-08-09 22:54:39 +02:00
systemd add systemd script 2021-03-28 20:25:25 +02:00
testdata Dns dhcpas beta feature (#17) 2021-05-28 20:07:32 +02:00
version add build time to version 2021-08-09 19:00:34 +02:00
.gitignore add API server to trigger sync remotely 2021-03-29 08:43:18 +02:00
.goreleaser.yml add build time to version 2021-08-09 19:00:34 +02:00
Dockerfile add build time to version 2021-08-09 19:00:34 +02:00
go.mod Bump github.com/onsi/gomega from 1.14.0 to 1.15.0 (#33) 2021-08-09 07:52:00 +02:00
go.sum Bump github.com/onsi/gomega from 1.14.0 to 1.15.0 (#33) 2021-08-09 07:52:00 +02:00
LICENSE Create LICENSE 2021-03-28 10:23:34 +02:00
main.go use cobra/viper 2021-03-28 14:09:31 +02:00
Makefile prepare sync and client tests 2021-04-11 11:56:55 +02:00
README.md remove beta #12 2021-08-08 10:16:04 +02:00

Go Go Report Card Coverage Status

AdGuardHome sync

Synchronize AdGuardHome config to a replica instance.

Current sync features

  • General Settings
  • Filters
  • Rewrites
  • Services
  • Clients
  • DNS Config
  • DHCP Config

Setup of initial instances

New AdGuardHome replica instances can be automatically installed if enabled via the config autoSetup. During automatic installation, the admin interface will be listening on port 3000 in runtime.

To skip automatic setup

Install

go get -u github.com/bakito/adguardhome-sync

Prerequisites

Both the origin instance must be initially setup via the AdguardHome installation wizard.

Run


export ORIGIN_URL=https://192.168.1.2:3000
export ORIGIN_USERNAME=username
export ORIGIN_PASSWORD=password
export REPLICA_URL=http://192.168.1.3
export REPLICA_USERNAME=username
export REPLICA_PASSWORD=password

# run once
adguardhome-sync run

# run as daemon
adguardhome-sync run --cron "*/10 * * * *"

docker cli

docker run -d \
  --name=adguardhome-sync \
  -p 8080:8080 \
  -v /path/to/appdata/config/adguardhome-sync.yaml:/config/adguardhome-sync.yaml \
  --restart unless-stopped \
  quay.io/bakito/adguardhome-sync:latest

docker compose

config file

---
version: "2.1"
services:
  adguardhome-sync:
    image: quay.io/bakito/adguardhome-sync
    container_name: adguardhome-sync
    volumes:
      - /path/to/appdata/config/adguardhome-sync.yaml:/config/adguardhome-sync.yaml
    ports:
      - 8080:8080
    restart: unless-stopped

env

---
version: "2.1"
services:
  adguardhome-sync:
    image: quay.io/bakito/adguardhome-sync
    container_name: adguardhome-sync
    command: run
    environment:
      - ORIGIN_URL=https://192.168.1.2:3000
      - ORIGIN_USERNAME=username
      - ORIGIN_PASSWORD=password
      - REPLICA_URL=http://192.168.1.3
      - REPLICA_USERNAME=username
      - REPLICA_PASSWORD=password
      - REPLICA1_URL=http://192.168.1.4
      - REPLICA1_USERNAME=username
      - REPLICA1_PASSWORD=password
      - REPLICA1_APIPATH=/some/path/control
      # - REPLICA1_AUTOSETUP=true # if true, AdGuardHome is automatically initialized. 
      - CRON=*/10 * * * * # run every 10 minutes
      - RUNONSTART=true
    ports:
      - 8080:8080
    restart: unless-stopped

Config file

location: $HOME/.adguardhome-sync.yaml

# cron expression to run in daemon mode. (default; "" = runs only once)
cron: "*/10 * * * *"

# runs the synchronisation on startup
runOnStart: true

origin:
  # url of the origin instance
  url: https://192.168.1.2:3000
  # apiPath: define an api path if other than "/control"
  # insecureSkipVerify: true # disable tls check
  username: username
  password: password

# replica instance (optional, if only one)
replica:
  # url of the replica instance
  url: http://192.168.1.3
  username: username
  password: password

# replicas instances (optional, if more than one)
replicas:
  # url of the replica instance
  - url: http://192.168.1.3
    username: username
    password: password
  - url: http://192.168.1.4
    username: username
    password: password
    # autoSetup: true # if true, AdGuardHome is automatically initialized. 

# Configure the sync API server, disabled if api port is 0
api:
  # Port, default 8080
  port: 8080
  # if username and password are defined, basic auth is applied to the sync API 
  username: username
  password: password

Log Level

The log level can be set with the environment variable: LOG_LEVEL

The following log levels are supported (default: info)

  • debug
  • info
  • warn
  • error