Token-authenticated DDNS proxy service.
ddns-proxy receives a client token and an IP, then updates a configured DNS record at a DNS provider.
Use case:
- edge nodes store only a client token
- DNS provider credentials are stored only on the proxy service
Headers:
Authorization: Bearer <client-token>
JSON body:
ip(optional string)
If ip is omitted, service uses caller IP.
When trusted proxies are configured, forwarded headers are honored only for trusted proxy CIDRs.
Response:
- JSON object:
status,message, optionalclient
Use one YAML file.
server.listen_addrserver.trusted_proxy_cidrsserver.read_timeoutserver.write_timeoutclients[]: each client maps token auth to one record update
Token fields:
token(raw)token_hash(bcrypt orsha256:<hex>)
Provider fields:
provider(currently implemented:cloudflare)recordcredentials
See config.example.yaml.
go run ./cmd/ddns-proxy -config config.example.yamldocker run --rm -p 8080:8080 \
-v "$(pwd)/config.example.yaml:/config.yaml:ro" \
ghcr.io/ikarpovich/ddns-proxy:latest \
-config /config.yamlgo test ./...