Simple dynamic DNS service for LAN use
- A / AAAA + (PTR)
- CNAME
- MX
docker run -v `pwd`/data:/data raptorbox/ddns-amd64 --debug
Ensure protoc
is installed and the *.proto
includes reachable. Eg.
wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip
mkdir tmp
cd tmp
unzip protoc-3.3.0-linux-x86_64.zip
sudo cp include/google/ /usr/local/include/ -r
sudo cp bin/protoc /usr/bin/
Get the following go dependencies
go get -u -f ./...
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/go-swagger/go-swagger/cmd/swagger
go get -u github.com/go-openapi/runtime
go get -u golang.org/x/net/context
go get -u golang.org/x/net/context/ctxhttp
make build
./build/ddns --debug
or go run cli/cli --debug
Offers a gRPC (:50551
) and HTTP/JSON (:5551
) endpoint. See also generated ./api/api.swagger.json for usage reference.
curl -X POST http://localhost:5551/v1/record \
-H 'content-type: application/json' \
-d '{
"ip": "127.0.0.1",
"domain": "foobar.local.lan",
"type": "A",
"expires": 1498454965
}'
curl -X DELETE http://localhost:5551/v1/record/foobar.local.lan/A
nslookup foobar.local.lan localhost -port=10053
Run go run main.go --tsig some_key:c29tZV9rZXk=
Update with nsupdate nsupdate.txt
nslookup test1.local.lan localhost -port=10053
Inspired by this post of Mateusz Kaczanowski
MIT License