Skip to content

DuckDNS Docker : DDNS gratuit pour ton IP dynamique

brandon
Date de publication:

💡 TL;DR

  • DuckDNS met à jour automatiquement ton nom de domaine quand ton FAI change ton IP publique
  • Gratuit, sans pub, sans limitation, juste un token et une requête HTTP toutes les 5 minutes
  • Docker Compose officiel disponible, config en 2 variables d’environnement
  • Complément parfait d’un reverse proxy comme Nginx Proxy Manager pour exposer tes services

Table des matières

Table des matières

Pourquoi ton IP dynamique te pourrit la vie

Tout auto-hébergeur connaît la galère. Tu montes un serveur homelab, tu configures tes services, tout tourne nickel en local sur 192.168.1.42. Tu veux accéder à ton Nextcloud, ton Vaultwarden ou ton dashboard depuis l’extérieur. Tu notes l’IP publique affichée sur ta box, tu tapes l’adresse dans ton navigateur… et ça marche. Génial.

Deux jours plus tard, ta box redémarre suite à une mise à jour nocturne du FAI. Ton IP publique a changé. Ton bookmark est mort. Tu dois aller sur monip.org, noter la nouvelle IP, mettre à jour tes configs, tes scripts, tes apps mobiles. C’est insupportable.

La solution s’appelle DNS dynamique (DDNS). Un service qui surveille ton IP publique et met à jour automatiquement l’enregistrement DNS de ton nom de domaine quand elle change. Cloudflare Tunnel résout ça sans IP publique, mais si tu en as une (même dynamique), DuckDNS est la solution gratuite la plus simple qui existe.

DuckDNS Docker : c’est quoi exactement

DuckDNS est un service DDNS (Dynamic DNS) gratuit créé en 2014 par deux développeurs. Aucune interface chargée de pubs, aucun plan premium qui te bloque. Tu crées un sous-domaine du type tonnom.duckdns.org, tu récupères un token, et un petit script envoie ton IP actuelle à leurs serveurs régulièrerement.

Ce qui fait la différence :

L’image Docker officielle de LinuxServer encapsule tout ça proprement. Un conteneur léger qui tourne en fond et met à jour ton IP automatiquement. Le combo DuckDNS Docker te libère de la gestion manuelle de ton IP publique.

Prérequis

Pour vérifier si tu es en CGNAT, regarde l’IP WAN affichée sur ta box et compare-la avec curl ifconfig.me. Si les deux sont différentes, tu es derrière un CGNAT. Dans ce cas, DuckDNS ne suffira pas. Reporte-toi au guide Cloudflare Tunnel à la place.

Mise en place avec Docker Compose

Tu crées un dossier pour ton conteneur DuckDNS et tu places un docker-compose.yml dedans :

services:
  duckdns:
    image: lscr.io/linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - SUBDOMAINS=tonnom
      - TOKEN=votre-token-duckdns
      - LOG_FILE=false
    volumes:
      - ./config:/config
    restart: unless-stopped

Remplace tonnom par le sous-domaine choisi sur DuckDNS et votre-token-duckdns par ton token personnel (visible sur la page d’accueil une fois connecté).

Lance le conteneur :

docker compose up -d

Et c’est tout. Le conteneur envoie immédiatement ton IP à DuckDNS, puis vérifie toutes les 5 minutes si elle a changé.

Explication du docker-compose.yml

Pendant que le conteneur démarre, détaillons les variables importantes :

VariableDescription
SUBDOMAINSTon sous-domaine DuckDNS (sans le .duckdns.org)
TOKENTon token d’authentification DuckDNS
LOG_FILEtrue pour écrire un log dans /config/duckdns.log
TZFuseau horaire pour les timestamps de log

Le volume /config est optionnel si tu désactives les logs. Par contre, il devient utile si tu actives LOG_FILE=true pour déboguer. Le conteneur tourne avec les droits de l’utilisateur 1000:1000, ce qui évite de tourner en root inutilement.

Si tu gères plusieurs sous-domaines (par exemple home.duckdns.org et lab.duckdns.org), sépare-les par des virgules dans SUBDOMAINS :

- SUBDOMAINS=home,lab

Un seul conteneur suffit pour mettre à jour plusieurs sous-domaines avec le même token.

Vérification et test

Attends quelques secondes après le démarrage, puis vérifie que ton DNS pointe bien vers ton IP :

nslookup tonnom.duckdns.org

L’adresse retournée doit correspondre à ton IP publique. Si ce n’est pas le cas, consulte les logs du conteneur :

docker logs duckdns

Les messages types indiquent OK quand la mise à jour réussit. Si tu vois une erreur KO, vérifie que ton token est correct et que le sous-domaine existe bien sur ton compte DuckDNS.

Une fois le DNS résolu correctement, tu peux ouvrir le port 80 ou 443 de ta box vers ton serveur et accéder à tes services via https://tonnom.duckdns.org. Pour automatiser les certificats SSL et le routing, installe Nginx Proxy Manager. Tu auras un vrai nom de domaine fonctionnel avec HTTPS en quelques clics.

Intégration avec un reverse proxy

DuckDNS seul donne un nom de domaine qui pointe vers ton IP. Mais il ne gère pas les ports, ni les certificats SSL, ni le routage vers différents services. C’est là qu’un reverse proxy entre en jeu.

Avec Nginx Proxy Manager, tu configures un host proxy pour tonnom.duckdns.org qui pointe vers ton conteneur interne (par exemple http://nextcloud:80). NPM gère automatiquement le certificat Let’s Encrypt pour ton domaine DuckDNS. Résultat : tu tapes https://tonnom.duckdns.org et tu arrives sur ton Nextcloud, sans warning de certificat, sans port bizarre dans l’URL.

Si tu préfères un resolver DNS local performant pour ton réseau interne, jette aussi un œil à Unbound Docker. Il n’a rien à voir avec le DDNS public, mais c’est un excellent complément pour accélérer les requêtes DNS dans ton homelab.

DuckDNS vs les alternatives

CritèreDuckDNSCloudflare TunnelNo-IP (gratuit)
PrixGratuitGratuitGratuit (renouvellement mensuel obligatoire)
IP publique requiseOuiNonOui
Ouverture de portsOuiNonOui
Certificat SSLVia reverse proxyNatif (Cloudflare)Via reverse proxy
CGNAT compatibleNonOuiNon
ComplexitéTrès simpleSimpleSimple

DuckDNS brille par sa simplicité extrême. Si tu as une IP publique et que tu veux juste un nom de domaine stable sans te prendre la tête, c’est le choix le plus rapide. Si tu es en CGNAT ou que tu refuses d’ouvrir des ports, Cloudflare Tunnel est ta seule issue viable.

Sécurité : ouvrir des ports, c’est sérieux

DuckDNS implique d’ouvrir des ports sur ta box internet. C’est pratique, mais ça expose ton serveur au monde entier. Quelques règles d’or :

Si tu veux un accès distant sans exposer quoique ce soit, préfère un VPN comme WireGuard ou Tailscale. DuckDNS, c’est pour exposer des services publics, pas pour administrer ton serveur à distance.

Conclusion

DuckDNS Docker est l’outil DDNS le plus honnête que je connaisse. Gratuit, sans chichis, il fait exactement ce qu’il promet : maintenir ton nom de domaine à jour avec ton IP dynamique. Déployé en Docker Compose, il disparaît dans le décor et ne te demande plus jamais d’intervention. Associe-le à un reverse proxy et un pare-feu, et tu as une infrastructure d’accès distant propre pour zéro euro.

Next
MinIO Docker : stockage objet S3-compatible auto-hébergé