This repository is being prepared as a provider-neutral Dynamic DNS product family.
It is split into four product/concept areas:
| Area | Purpose | Status |
|---|---|---|
worker/ |
Provider-integrated Dynamic DNS worker runtime. This contains the current working implementation. | Active |
client/ |
Future URL-based update client / callback-style updater. | Placeholder |
endpoint/ |
Future inbound Dynamic DNS endpoint product area. | Placeholder |
spec/ |
Shared Dynamic DNS behavior, scenarios, contracts, and test-oriented notes. | Starter structure |
The current working product is the worker. It currently implements InterNetX XML for InterNetX / AutoDNS / SchlundTech-related environments, but the repository direction is provider-oriented and provider-neutral.
This image is a provider-integrated Dynamic DNS worker. It detects public IPs itself, keeps state, validates configured targets against the DNS provider, and performs provider-side updates as needed. It is not a simple URL-calling DynDNS client.
dynamic-dns-worker: outbound provider-integrated runtime that detects public IPs, stores state, validates DNS provider state, and updates provider-side records.dynamic-dns-client: future URL-based update client or callback-style updater that calls an update URL. It is not implemented yet.dynamic-dns-endpoint: future inbound server-side endpoint that receives update requests from clients and maps them to provider updates. It is not implemented yet.dynamic-dns-spec: shared behavior, contracts, scenarios, and verification notes for the family.
Recommended naming direction:
- Repository family:
dynamic-dns - Worker product:
dynamic-dns-worker - Client product:
dynamic-dns-client - Endpoint product:
dynamic-dns-endpoint - Behavior/spec space:
dynamic-dns-spec
The older internetx-dyndns naming is deprecated. It may remain only in compatibility references, historical release notes, and attribution/provenance history.
Build and run the worker from worker/:
cd worker
cp .env.example .env
# edit .env
docker compose build
docker compose run --rm dynamic-dns-workerFor continuous mode:
cd worker
# set RUN_ONCE=false in .env first
docker compose up -d
docker compose logs -f dynamic-dns-workerWorker docs:
- Worker README
- Worker Docker README
- Current provider: InterNetX XML
- Adding a provider
- Traefik/CrowdSec integration
The client area is intentionally incomplete. It is reserved for a future URL-based update client / callback-style updater that calls an update URL.
See client/README.md.
The endpoint area is intentionally incomplete. It is reserved for a future inbound HTTP-style Dynamic DNS endpoint, for example a service that receives update requests from routers, scripts, or the future client and then applies provider updates.
See endpoint/README.md.
The spec area is for behavior that should be shared across worker, client, and endpoint models: target semantics, update decisions, verification stages, fixtures, and future contract tests.
See spec/README.md.
Image naming:
- Official worker image:
worryboy/dynamic-dns-worker - Future client image:
dynamic-dns-client - Future endpoint image:
dynamic-dns-endpoint - Existing image names such as
worryboy/internetx-dyndnsare deprecated compatibility references. New deployments should useworryboy/dynamic-dns-worker.
Each product area has its own version line:
- Worker: worker/VERSION
- Client: client/VERSION
- Endpoint: endpoint/VERSION
- Spec: spec/VERSION
release tag prefixes:
worker-v0.5.6endpoint-v0.1.0spec-v0.1.0
Do not assume a worker release implies an endpoint or spec release.
This repository uses MIT; see LICENSE.
Origin and provenance are documented in ATTRIBUTION.md.