adguardhome-sync/README.md

168 lines
4 KiB
Markdown
Raw Normal View History

2021-04-07 03:27:33 +08:00
[![Go](https://github.com/bakito/adguardhome-sync/actions/workflows/go.yml/badge.svg)](https://github.com/bakito/adguardhome-sync/actions/workflows/go.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/bakito/adguardhome-sync)](https://goreportcard.com/report/github.com/bakito/adguardhome-sync)
[![Coverage Status](https://coveralls.io/repos/github/bakito/adguardhome-sync/badge.svg?branch=main)](https://coveralls.io/github/bakito/adguardhome-sync?branch=main)
2021-04-19 00:28:35 +08:00
2021-03-28 06:44:48 +08:00
# AdGuardHome sync
Synchronize [AdGuardHome](https://github.com/AdguardTeam/AdGuardHome) config to a replica instance.
2021-03-28 16:30:00 +08:00
## Current sync features
2021-03-31 08:28:18 +08:00
- General Settings
2021-03-28 16:30:00 +08:00
- Filters
- Rewrites
- Services
- Clients
- DNS Config (BETA)
- DHCP Config (BETA)
2021-03-28 16:30:00 +08:00
### Setup of initial instances
2021-04-19 04:30:25 +08:00
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
2021-03-28 16:30:00 +08:00
## Install
```bash
go get -u github.com/bakito/adguardhome-sync
```
2021-04-05 19:33:21 +08:00
## Prerequisites
Both the origin instance must be initially setup via the AdguardHome installation wizard.
2021-04-05 19:33:21 +08:00
2021-03-28 16:30:00 +08:00
## Run
```bash
2021-03-28 22:29:18 +08:00
2021-03-28 20:09:31 +08:00
export ORIGIN_URL=https://192.168.1.2:3000
2021-03-28 16:30:00 +08:00
export ORIGIN_USERNAME=username
export ORIGIN_PASSWORD=password
2021-03-28 20:09:31 +08:00
export REPLICA_URL=http://192.168.1.3
2021-03-28 16:30:00 +08:00
export REPLICA_USERNAME=username
export REPLICA_PASSWORD=password
2021-03-28 22:29:18 +08:00
# run once
2021-03-28 20:09:31 +08:00
adguardhome-sync run
2021-03-28 22:29:18 +08:00
# run as daemon
adguardhome-sync run --cron "*/10 * * * *"
2021-03-28 23:04:41 +08:00
```
2021-04-06 01:26:35 +08:00
## docker cli
```bash
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
2021-04-06 03:04:01 +08:00
### config file
2021-04-19 00:28:35 +08:00
2021-04-06 01:26:35 +08:00
```yaml
---
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
2021-04-06 03:04:01 +08:00
```
### env
```yaml
---
version: "2.1"
services:
adguardhome-sync:
image: quay.io/bakito/adguardhome-sync
container_name: adguardhome-sync
2021-04-06 03:23:15 +08:00
command: run
2021-04-06 03:04:01 +08:00
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.
2021-04-06 03:04:01 +08:00
- CRON=*/10 * * * * # run every 10 minutes
2021-04-19 04:20:08 +08:00
- RUNONSTART=true
2021-04-06 03:04:01 +08:00
ports:
- 8080:8080
restart: unless-stopped
2021-04-06 01:26:35 +08:00
```
2021-03-28 23:04:41 +08:00
### Config file
location: $HOME/.adguardhome-sync.yaml
```yaml
# cron expression to run in daemon mode. (default; "" = runs only once)
cron: "*/10 * * * *"
2021-04-19 04:20:08 +08:00
# runs the synchronisation on startup
runOnStart: true
2021-03-28 23:04:41 +08:00
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
2021-03-28 23:04:41 +08:00
```
2021-04-19 00:28:35 +08:00
## 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