Alternative à DynDNS avec OVH – Màj. auto. de l’IP avec Docker
Introduction
Vous cherchez une alternative à DynDNS avec OVH et Docker ? Lorsqu’on héberge un serveur web ou une application à domicile avec une IP dynamique, on a besoin de mettre à jour automatiquement le DNS pour que le nom de domaine pointe toujours vers la bonne adresse IP. Traditionnellement, on utilise des outils comme ddclient ou inadyn pour gérer cette mise à jour automatique (Dynamic DNS).

Cependant, installer ces applications directement sur le système peut alourdir la configuration et compliquer la maintenance. Dans ce tutoriel, on va voir comment créer une alternative légère avec Docker qui met à jour automatiquement l’IP publique sur OVH sans installer de logiciel supplémentaire sur le serveur hôte.
Avantages de cette solution
✅ Aucune installation système – Tout tourne dans un conteneur Docker isolé
✅ Léger et portable – Basé sur Alpine Linux (~5 MB)
✅ Facilement modifiable – Un simple fichier docker-compose.yml
✅ Logs horodatés – Suivi clair des mises à jour
✅ Redémarrage automatique – En cas de reboot du serveur
Prérequis
Avant de commencer, on a besoin de :
- Un nom de domaine enregistré chez OVH
- Docker et Docker Compose installés sur le serveur
- Un accès à l’espace client OVH
- Une Fritz!Box ou un autre routeur qui expose le serveur sur Internet
exemple.lu et MotDePasseComplexe à remplacer par vos information !
Étape 1 : Configuration du DynHost sur OVH
1.1 Activer le service DynHost
On se connecte à l’espace client OVH et on accède à la gestion du domaine :
- Aller dans Domaines → Sélectionner son domaine (ex:
exemple.lu). - Cliquer sur l’onglet DynHost.
- Cliquer sur Ajouter un DynHost.
- ajouter un nom de sous-domaine à défaut, la case reste vide.
- ajouter une adresse IP bidon pour voir qu’elle se met à jour plus tard.
- Valider en appuyant sur le bouton.


1.2 Créer un identifiant DynHost
On va créer un identifiant qui permettra au script de s’authentifier :
- Cliquer sur Gérer les accès.
- Cliquer sur Créer un identifiant.
- Renseigner les informations :
- Suffixe : un nom descriptif (ex:
docker-upd) - Sous-domaine :
*(pour mettre à jour le domaine racine et tous les sous-domaines) - Mot de passe : un mot de passe complexe (on le notera pour plus tard)
- Suffixe : un nom descriptif (ex:
L’identifiant final ressemblera à : exemple.lu-docker-upd


1.3 Nettoyer la zone DNS
Pour éviter les conflits, on doit supprimer les anciens enregistrements DNS de type A :
- Aller dans Zone DNS.
- Repérer les lignes avec le Type A pointant vers une ancienne IP.
- Supprimer ces enregistrements (cliquer sur l’icône poubelle).
Important : On garde uniquement la configuration DynHost active. Les anciens enregistrements A créeront des conflits et empêcheront le bon fonctionnement.

Étape 2 : Tester la mise à jour manuelle
Avant de créer le conteneur Docker, on vérifie que les identifiants fonctionnent correctement.
Test avec curl
On ouvre un terminal sur le serveur et on exécute cette commande :
curl -u "exemple.lu-docker-upd:MotDePasseComplexe" \
"https://www.ovh.com/nic/update?system=dyndns&hostname=exemple.lu&myip=$(curl -s https://icanhazip.com)"
Réponses possibles :
good 103.58.8.0✅ – IP mise à jour avec succèsnochg 103.58.8.0✅ – IP inchangée (normal)badauth❌ – Identifiant ou mot de passe incorrect{"class":"Client::BadRequest"}❌ – Erreur dans le nom de domaine
Si on obtient good ou nochg, les identifiants sont corrects et on peut continuer !
Méthode 1 : Conteneur Docker standalone (Recommandé)
Cette méthode crée un conteneur Docker indépendant qui s’occupe uniquement de la mise à jour DynDNS. C’est l’approche la plus propre et la plus réutilisable.
3.1 Créer le dossier du projet
mkdir -p ~/ovh-dyndns
cd ~/ovh-dyndns
3.2 Créer le fichier docker-compose.yml
On crée le fichier de configuration Docker Compose :
nano docker-compose.yml
On colle le contenu suivant :
version: '3.8'
services:
ovh-dyndns:
image: alpine:latest
container_name: ovh-dyndns
restart: unless-stopped
command: sh -c "apk add --no-cache curl && while true; do echo \"[$(date '+%Y-%m-%d %H:%M:%S')]\" >> /var/log/ovh.log; curl -s -u 'exemple.lu-docker-upd:MotDePasseComplexe' 'https://www.ovh.com/nic/update?system=dyndns&hostname=exemple.lu&myip='$$(curl -s https://icanhazip.com) >> /var/log/ovh.log 2>&1; echo '' >> /var/log/ovh.log; sleep 1800; done"
volumes:
- ./logs:/var/log
Configuration à personnaliser :
exemple.lu-docker-upd: remplacer par l’identifiant DynHost créé sur OVHMotDePasseComplexe: remplacer par le mot de passe définiexemple.lu: remplacer par le nom de domainesleep 1800: intervalle de mise à jour (1800 = 30 minutes)
3.3 Lancer le conteneur
docker compose up -d
Le conteneur se lance et commence immédiatement à mettre à jour l’IP.
3.4 Vérifier les logs
# Voir les logs en temps réel
docker compose logs -f
# Ou consulter le fichier de log
cat logs/ovh.log
On devrait voir quelque chose comme :
[2026-01-31 14:30:15]
nochg 103.58.8.0
[2026-01-31 15:00:20]
nochg 103.58.8.0
[2026-01-31 15:30:25]
good 103.58.8.0
3.5 Arrêter ou redémarrer le conteneur
# Arrêter
docker compose down
# Redémarrer
docker compose restart
# Voir le statut
docker compose ps
Méthode 2 : Intégration dans un docker-compose existant (WordPress, etc.)
Si on a déjà une stack Docker (par exemple WordPress), on peut intégrer le service DynDNS directement dans le fichier docker-compose.yml existant.
4.1 Éditer le docker-compose.yml existant
cd /chemin/vers/wordpress-docker
nano docker-compose.yml
4.2 Ajouter le service ovh-dyndns
On ajoute ces lignes à la fin du fichier, au même niveau que les autres services :
ovh-dyndns:
image: alpine:latest
container_name: ovh-dyndns
restart: unless-stopped
command: sh -c "apk add --no-cache curl && while true; do echo \"[$(date '+%Y-%m-%d %H:%M:%S')]\" >> /var/log/ovh.log; curl -s -u 'exemple.lu-docker-upd:MotDePasseComplexe' 'https://www.ovh.com/nic/update?system=dyndns&hostname=exemple.lu&myip='$$(curl -s https://icanhazip.com) >> /var/log/ovh.log 2>&1; echo '' >> /var/log/ovh.log; sleep 1800; done"
volumes:
- ./ovh-dyndns-logs:/var/log
Attention à l’indentation ! Le service ovh-dyndns doit être aligné avec les autres services (wordpress, db, nginx, etc.)
4.3 Relancer la stack
docker compose down; docker compose up -d
Tous les conteneurs redémarrent, y compris le nouveau service DynDNS.
4.4 Vérifier les logs
cat ovh-dyndns-logs/ovh.log
Optimisation et personnalisation
Ajuster la fréquence de mise à jour
La valeur sleep détermine l’intervalle entre chaque mise à jour :
sleep 900= 15 minutes (4 fois par heure)sleep 1800= 30 minutes (2 fois par heure) ✅ Recommandésleep 3600= 1 heure (1 fois par heure)sleep 7200= 2 heures
Conseil : Pour une IP domestique qui change rarement, 30 minutes est un bon compromis. Cela évite de surcharger les serveurs OVH tout en garantissant une mise à jour rapide en cas de changement d’IP.
Nettoyer les anciens logs
Si le fichier de log devient trop volumineux :
# Arrêter le conteneur
docker compose down
# Supprimer le log
rm logs/ovh.log # ou ovh-dyndns-logs/ovh.log
# Relancer
docker compose up -d
Mise à jour automatique au démarrage du serveur
Avec restart: unless-stopped, le conteneur redémarre automatiquement :
- Au démarrage du serveur
- Après un crash
- Après une mise à jour de Docker
Dépannage
Erreur « Unauthorized »
Symptôme : Le log affiche {"class":"Client::Unauthorized","message":"Unauthorized"}
Causes possibles :
- Identifiant ou mot de passe incorrect
- Trop de requêtes envoyées → OVH bloque temporairement
Solutions :
- Vérifier les identifiants dans l’espace client OVH
- Régénérer un nouveau mot de passe si nécessaire
- Augmenter l’intervalle (
sleep 3600ou plus) - Attendre 30 minutes avant de réessayer
Erreur « Invalid domain name »
Symptôme : Le log affiche {"class":"Client::BadRequest","message":"{'hostname': ['Invalid domain name']}"}
Causes possibles :
- Le nom de domaine dans la commande ne correspond pas à celui configuré dans OVH
- Présence d’un caractère spécial mal échappé
Solutions :
- Vérifier que
hostname=exemple.lucorrespond exactement au domaine OVH - Utiliser le domaine racine (
exemple.lu) et non un sous-domaine avec astérisque dans l’URL
Le DNS ne se met pas à jour
Symptôme : nslookup exemple.lu retourne toujours l’ancienne IP
Causes possibles :
- Anciens enregistrements DNS de type A toujours présents
- Cache DNS local
- Propagation DNS en cours
Solutions :
# Vider le cache DNS local
sudo systemd-resolve --flush-caches
# Attendre 5 à 30 minutes pour la propagation
# Vérifier la zone DNS OVH
# Supprimer tous les enregistrements A en doublon
Let’s Encrypt échoue avec Nginx Proxy Manager
Symptôme : « Internal Error » lors de la demande de certificat SSL
Causes possibles :
- Le DNS ne pointe pas encore vers la bonne IP
- Les ports 80/443 ne sont pas ouverts sur la Fritz!Box
- Propagation DNS incomplète
Solutions :
- Vérifier que
nslookup exemple.luretourne la bonne IP publique - S’assurer que les ports 80 et 443 sont redirigés vers le serveur dans la Fritz!Box
- Attendre 10-30 minutes après le changement DNS
- Tester d’abord en HTTP (sans SSL) puis ajouter le certificat
Pourquoi cette alternative DynDNS avec OVH plutôt que ddclient ?
Avantages par rapport à ddclient
| Critère | Docker DynDNS | ddclient |
|---|---|---|
| Installation système | ❌ Aucune | ✅ Oui (apt install) |
| Dépendances | ❌ Aucune | ✅ Perl + modules |
| Configuration | Simple (docker-compose.yml) | Complexe (/etc/ddclient.conf) |
| Portabilité | ✅ Fonctionne partout | ❌ Lié au système |
| Isolation | ✅ Conteneur isolé | ❌ Processus système |
| Logs | ✅ Fichier simple | ❌ Dispersés dans syslog |
| Mise à jour | ✅ Modifier le yml | ❌ Éditer le conf + redémarrer le service |
Cas d’usage idéal
Cette solution Docker est parfaite si :
- On veut éviter d’installer des paquets supplémentaires sur le système.
- On utilise déjà Docker pour d’autres services.
- On veut une solution portable et facilement reproductible.
- On préfère gérer la configuration dans un seul fichier docker-compose.yml.
Si on a besoin de gérer plusieurs domaines avec des fournisseurs DynDNS différents (OVH, No-IP, DynDNS.org, etc.), ddclient reste une meilleure option.
Bonus : Économies et simplicité
✅ Pas d’abonnement payant (DynDNS.org coûte 55$/an)
✅ Pas de renouvellement mensuel (No-IP oblige à cliquer tous les 30 jours)
✅ Autres services gratuits mentionnés avec leurs limitations (Dynu, FreeDNS)
Conclusion
On a vu comment créer une alternative légère à DynDNS avec OVH et Dockeret efficace à ddclient pour mettre à jour automatiquement l’IP publique sur OVH avec Docker. Cette solution :
✅ Ne nécessite aucune installation système supplémentaire.
✅ S’intègre facilement dans une infrastructure Docker existante.
✅ Produit des logs clairs et horodatés.
✅ Redémarre automatiquement en cas de reboot.
✅ Se configure en quelques minutes.
Pour aller plus loin, on peut adapter ce tutoriel à d’autres fournisseurs DynDNS en changeant simplement l’URL et le format de la requête curl.
sources:
Pour plus d’informations sur Docker, consultez la documentation officielle Docker.
La documentation OVH sur le DynHost explique le fonctionnement du service.
Découvrez d’autre article similaire:
-
Serveur iA Privé – Gestion multi-utilisateur dans OpenWebUI
Gestion multi-utilisateur dans OpenWebUI OpenWebUI intègre nativement un système de gestion multi-utilisateur, idéal pour partager une instance d’IA entre plusieurs personnes tout en gardant un bon niveau de…
-
Mettre à jour Portainer sur Ubuntu : Guide complet sans perte
Mettre à jour Portainer Il arrive un moment où une petite pastille en bas de l’interface Portainer nous rappelle qu’une nouvelle version est disponible. Pour maintenir la sécurité…
-
Installer Immich sur Ubuntu, OMV et Portainer
📝 Tutoriel complet — Installer Immich sur Ubuntu + OpenMediaVault + Portainer Objectif : Centraliser toutes les photos et vidéos sur un NAS. Elles seront indexées et consultables…
-
Installer Transmission dans Portainer sur Ubuntu
Installation de Transmission dans Portainer Objectif : Déployer un client BitTorrent léger et performant sur un serveur Ubuntu via Docker et Portainer. Transmission est l’un des clients BitTorrent…
-
Installer NextCloud dans Docker via Portainer sur une VM Ubuntu
Installation de Nextcloud dans Docker / Portainer Objectif : Créer un serveur de stockage privé (Cloud) pour synchroniser ses fichiers, contacts et calendriers, tout en gardant un contrôle…
-
Installation de Docker dans Open Media Vault
On part d’une nouvelle installation de Open Media Vault dans une VM sous Proxmox. Dans le terminal connecter à notre VM Open Media Vault, on écris la commande…