54 lines
879 B
Markdown
54 lines
879 B
Markdown
# home-dns
|
|
|
|
Use [Route53](https://aws.amazon.com/route53/) for dynamic DNS.
|
|
|
|
Reads record name and zone from a YAML config and upserts on schedule.
|
|
|
|
## Usage
|
|
|
|
### Build
|
|
|
|
```shell
|
|
go get
|
|
go build
|
|
```
|
|
|
|
### Config
|
|
|
|
The config file should have a `source` endpoint and each record to be updated:
|
|
|
|
```yaml
|
|
source: "https://api.ipify.org?format=text"
|
|
|
|
records:
|
|
- cron: "@hourly"
|
|
name: home.example.com.
|
|
ttl: 300
|
|
zone: Z1ABCDEF123456
|
|
- cron: "@daily"
|
|
name: office.example.com.
|
|
ttl: 86400
|
|
zone: Z1ABCDEF123456
|
|
```
|
|
|
|
### Run
|
|
|
|
Execute with the config file:
|
|
|
|
```shell
|
|
AWS_PROFILE="home-root" ./home-dns config.yml
|
|
```
|
|
|
|
## Disclaimer
|
|
|
|
I do not know Go very well at all, so this code may be quite bad.
|
|
|
|
## Features
|
|
|
|
- multiple zones and records
|
|
- update on cron schedule
|
|
|
|
### Roadmap
|
|
|
|
- cache the external address (on a schedule of its own?)
|
|
- interface selection for external check |