A modern, secure Dynamic DNS server with built-in threat intelligence and automatic IP blocking.
Perfect for home labs, security cameras, and any device that needs a stable DNS name with a dynamic IP address.
docker run -d \
--name dyndns \
-p 8080:8080 \
-p 53:53/udp \
-v /path/to/data:/var/lib/dyndns \
-e DDNS_ADMIN_LOGIN="admin:$(htpasswd -nbB admin yourpassword | cut -d: -f2)" \
-e DDNS_SESSION_SECRET="$(openssl rand -base64 32)" \
-e DDNS_DOMAINS=dyn.example.com \
-e DDNS_PARENT_NS=ns1.example.com \
-e DDNS_DEFAULT_TTL=300 \
w3k-one/docker-ddns-server:latest
Or use Docker Compose:
version: '3.8'
services:
dyndns:
image: w3k-one/docker-ddns-server:latest
container_name: dyndns
restart: unless-stopped
ports:
- "8080:8080"
- "53:53/udp"
volumes:
- ./data:/var/lib/dyndns
environment:
- DDNS_ADMIN_LOGIN=admin:$$apr1$$YourHashHere
- DDNS_SESSION_SECRET=your-random-secret-here
- DDNS_DOMAINS=dyn.example.com
- DDNS_PARENT_NS=ns1.example.com
- DDNS_DEFAULT_TTL=300
- DDNS_POWERED_BY=ACME Inc
- DDNS_POWERED_BY_URL=https://acme.inc
Monitor your system's security in real-time:
Works with:
DDNS_ADMIN_LOGIN - Admin credentials (htpasswd format)DDNS_DOMAINS - Comma-separated managed domainsDDNS_PARENT_NS - Parent nameserverDDNS_DEFAULT_TTL - Default DNS TTLDDNS_SESSION_SECRET - Secret key for sessions (32+ bytes)DDNS_TITLE - Site title (default: "w3K DynDNS")DDNS_LOGOUT_URL - Redirect URL after logoutDDNS_ALLOW_WILDCARD - Enable wildcard DNS (default: false)DDNS_CLEAR_LOG_INTERVAL - Days to keep logs (default: 0 = forever)DDNS_POWERED_BY - Footer CreditsDDNS_POWERED_BY_URL - Footer Credits URLhtpasswd -nbB admin YourPasswordHere
openssl rand -base64 32
curl -u username:password \
"http://dyndns.example.com/nic/update?hostname=camera.example.com"
good <IP> - Update successful, IP changednochg <IP> - Update successful, IP unchangedbadauth - Invalid credentialsblocked - IP address is blockednohost - Hostname not foundThis is a single-user system designed for one administrator. All other login attempts are malicious by definition. We log failed credentials for threat intelligence:
Recommendation: Secure your database files with proper permissions.
server {
listen 443 ssl http2;
server_name dyn.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
dyn.example.com {
reverse_proxy localhost:8080
}
/var/lib/dyndns - SQLite database and persistent data8080/tcp - Web interface & API53/udp - DNS serverlatest - Latest stable release2.0.0 - Specific version2.0 - Major versiondevelop - Development branch (unstable)MIT License - See LICENSE
Built with Echo Framework, GORM, and Gorilla Sessions. Inspired by the classic DynDNS protocol.
Made with ❤️ for homelabbers and self-hosters
Content type
Image
Digest
sha256:907aa38f0…
Size
78.3 MB
Last updated
9 months ago
docker pull w3kllc/ddns