--- title: ddclient created: 2025-06-07 updated: 2025-06-07 type: app tags: [catalogue, dns, ddns, networking] confidence: medium contested: false sources: [https://sourceforge.net/projects/ddclient/] --- # ddclient ## Métadonnées | Attribut | Valeur | |----------|--------| | **Nom** | ddclient | | **Slug** | ddclient | | **Description** | Update dynamic DNS entries with various dynamic DNS service providers | | **Version** | stable | | **Site web** | https://ddclient.net/ | | **Repository** | https://github.com/ddclient/ddclient | | **Stars** | 3,450 ⭐ | | **Licence** | GPL-3.0 | | **Catégorie** | DNS | | **Tags** | DNS, DDNS, networking | --- ## Description **ddclient** est un client DDNS (Dynamic DNS) léger et polyvalent permettant de mettre à jour automatiquement les entrées DNS lorsque votre adresse IP publique change. Il supporte une large gamme de fournisseurs de DNS dynamique incluant Cloudflare, GoDaddy, OVH, DuckDNS, No-IP, DynDNS, et bien d'autres. ### Fonctionnalités principales - 🔄 **Mise à jour automatique** de l'adresse IP publique - 🌐 **Support de nombreux fournisseurs** (50+ services supportés) - 🔐 **Authentification sécurisée** via API tokens ou identifiants - 📊 **Détection d'IP** flexible (interface réseau, services web externes) - ⚙️ **Configuration flexible** via fichiers ou variables d'environnement - 🐳 **Facilement déployable** via Docker ### Fournisseurs supportés (sélection) - Cloudflare - GoDaddy - OVH - DuckDNS - No-IP - DynDNS - Gandi - Hurricane Electric - Infomaniak - Namecheap --- ## Installation Docker Compose ### Docker Compose (fichier `docker-compose.yml`) ```yaml services: ddclient: image: linuxserver/ddclient:latest container_name: ddclient restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./config:/config networks: - ddclient-net networks: ddclient-net: driver: bridge ``` ### Ou avec configuration directe ```yaml services: ddclient: image: linuxserver/ddclient:latest container_name: ddclient restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./config/ddclient.conf:/config/ddclient.conf:ro networks: - ddclient-net networks: ddclient-net: driver: bridge ``` ### Commandes de déploiement ```bash # Créer le répertoire de configuration mkdir -p ddclient/config # Créer le fichier de configuration touch ddclient/config/ddclient.conf # Démarrer le conteneur cd ddclient docker compose up -d # Vérifier les logs docker logs -f ddclient ``` --- ## Configuration ### Fichier `ddclient.conf` - Exemple Cloudflare ```conf # Configuration générale daemon=300 syslog=yes pid=/var/run/ddclient.pid ssl=yes # Détection de l'IP publique use=web web=https://api.ipify.org # Configuration Cloudflare protocol=cloudflare, zone=example.com, ttl=1, login=token, password=votre_api_token_cloudflare subdomain.example.com ``` ### Exemple OVH ```conf daemon=300 syslog=yes ssl=yes use=web web=https://api.ipify.org protocol=ovh, login=votre_identifiant_ovh, password=votre mot de passe_ovh votre-domaine.ovh ``` ### Exemple DuckDNS ```conf daemon=300 syslog=yes ssl=yes use=web web=https://api.ipify.org protocol=duckdns, password=votre_token_duckdns votre-sous-domaine.duckdns.org ``` ### Exemple GoDaddy ```conf daemon=300 syslog=yes ssl=yes use=web web=https://api.ipify.org protocol=godaddy, login=votre_cle_api, password=votre_secret_api example.com ``` ### Variables d'environnement | Variable | Description | Défaut | |----------|-------------|--------| | `PUID` | ID utilisateur | 1000 | | `PGID` | ID groupe | 1000 | | `TZ` | Fuseau horaire | UTC | ### Paramètres importants | Paramètre | Description | |-----------|-------------| | `daemon` | Intervalle de vérification en secondes | | `use=web` | Utiliser un service web pour détecter l'IP | | `use=if` | Utiliser une interface réseau spécifique | | `ssl=yes` | Forcer l'utilisation de HTTPS | | `ttl` | Time-to-live des enregistrements DNS | --- ## Commandes utiles ```bash # Voir les logs en temps réel docker logs -f ddclient # Tester la configuration docker exec ddclient ddclient -daemon=0 -debug -verbose -noquiet # Forcer une mise à jour docker exec ddclient ddclient -force # Afficher l'état docker exec ddclient ddclient -query # Redémarrer le service docker restart ddclient ``` --- ## Alternatives | Alternative | Description | Différence principale | |-------------|-------------|----------------------| | **inadyn** | Client DDNS léger en C | Plus léger, moins de fournisseurs supportés | | **dnsomatic** | Service DDNS agrégateur | Centralise les mises à jour vers plusieurs services | | **cloudflare-ddns** | Spécifique Cloudflare | Optimisé uniquement pour Cloudflare, plus simple | | **dynamic-dns** | Client Python DDNS | Solution Python alternative | --- ## Sécurité ### Bonnes pratiques 1. **Utiliser des API tokens** plutôt que des mots de passe quand possible 2. **Restreindre les permissions** du token API au minimum nécessaire 3. **Ne jamais commiter** le fichier `ddclient.conf` contenant les credentials 4. **Utiliser des variables d'environnement** ou des secrets Docker pour les credentials 5. **Activer SSL** (`ssl=yes`) pour toutes les communications 6. **Limiter l'accès** au fichier de configuration (chmod 600) 7. **Surveiller les logs** pour détecter les tentatives d'accès anormales ### Exemple avec Docker Secrets ```yaml services: ddclient: image: linuxserver/ddclient:latest secrets: - ddclient_config volumes: - /run/secrets/ddclient_config:/config/ddclient.conf:ro secrets: ddclient_config: file: ./secrets/ddclient.conf ``` --- ## Dépannage ### Problèmes courants | Problème | Cause probable | Solution | |----------|----------------|----------| | IP non détectée | Service web indisponible | Changer de service de détection d'IP | | Échec d'authentification | Token/credentials invalides | Vérifier les credentials dans `ddclient.conf` | | Zone DNS non trouvée | Mauvais domaine configuré | Vérifier le nom de domaine dans la configuration | | Mises à jour trop fréquentes | Intervalle trop court | Augmenter la valeur `daemon` | ### Logs détaillés ```bash # Mode debug docker exec ddclient ddclient -daemon=0 -debug -verbose -noquiet # Vérifier le fichier de configuration docker exec ddclient cat /config/ddclient.conf # Vérifier les permissions docker exec ddclient ls -la /config/ ``` --- ## Ressources - 📚 **Documentation officielle** : https://ddclient.net/ - 🐙 **Repository GitHub** : https://github.com/ddclient/ddclient - 🐳 **Image LinuxServer** : https://docs.linuxserver.io/images/docker-ddclient/ - 📖 **Wiki GitHub** : https://github.com/ddclient/ddclient/wiki - 💬 **Support** : https://github.com/ddclient/ddclient/issues --- ## Pages liées - [[catalogue-dns]] - Vue d'ensemble des solutions DNS - [[app-pihole]] - Serveur DNS local avec filtrage - [[app-adguard-home]] - Alternative à Pi-hole - [[app-bind9]] - Serveur DNS autoritaire - [[app-traefik]] - Reverse proxy avec gestion DNS - [[guide-ddns]] - Guide complet sur le Dynamic DNS --- *Dernière mise à jour : 2025-06-07*