Service auto-hébergé
TimothyYe/godns avatar
TimothyYe/godns

GoDNS : DDNS auto-hébergé avec support multi-fournisseurs

Un outil client DNS dynamique qui prend en charge AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc., écrit en Go.

1 778 étoiles247 forksGoApache-2.0
GitHub

En bref

De quoi s’agit-il ?
Un client DNS dynamique en Go qui met à jour les enregistrements sur de nombreux fournisseurs, avec un panneau web et des notifications.
À qui s’adresse-t-il ?
GoDNS offre un fichier de configuration unique pour gérer les enregistrements DNS sur plusieurs fournisseurs, prend en charge le rechargement dynamique et inclut un panneau web. Il peut s'exécuter en tant que binaire, conteneur Docker ou service système, et est sous licence Apache 2.0.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 3 jours.
En quel langage est-il écrit ?
Principalement Go, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

GoDNS, un client DDNS multi-fournisseurs

GoDNS est un client DNS dynamique (DDNS) auto-hébergé écrit en Go. C'est une réécriture de l'ancien projet open-source DynDNS de l'auteur. Le README le décrit comme supportant plusieurs fournisseurs DNS et incluant un panneau web intégré. Le dépôt pointe également vers une version hébergée sur godns.app pour ceux qui ne veulent pas auto-héberger. La version auto-hébergée est disponible en binaire, image Docker ou build source. Le README ne spécifie aucun nombre d'utilisateurs ni statistiques de production.

Fournisseurs DNS pris en charge et leurs capacités

Le README liste 21 fournisseurs DNS dans un tableau, notamment Cloudflare, DigitalOcean, Google Domains, DNSPod, Dynv6, HE.net, AliDNS, DuckDNS, Dreamhost, No-IP, Scaleway, Linode, Strato, LoopiaSE, Infomaniak, Hetzner, OVH, Porkbun, Dynu, IONOS et TransIP. Pour chaque fournisseur, le tableau indique si les mises à jour IPv4 et IPv6 sont prises en charge, et si les domaines racine et les sous-domaines peuvent être mis à jour. Par exemple, Cloudflare, DigitalOcean, DNSPod, HE.net, AliDNS, Scaleway, Linode, Hetzner et Porkbun prennent en charge les domaines racine, tandis que Google Domains, Dynv6, DuckDNS, Dreamhost, No-IP, Strato, LoopiaSE, Infomaniak, OVH, Dynu, IONOS et TransIP ne prennent en charge que les sous-domaines. Le README note également qu'un problème GitHub suit l'état actuel du DDNS pour les domaines racine.

Configuration : formats, chargement dynamique et multi-fournisseurs

GoDNS lit la configuration à partir d'un fichier JSON ou YAML. Le README demande aux utilisateurs de copier config_sample.json ou config_sample.yaml vers config.json ou config.yaml. Le fichier de configuration inclut des propriétés telles que provider, email, password, login_token, domains, ip_urls, ipv6_urls, ip_type, interval, socks5_proxy, resolver et skip_ssl_verify. Une caractéristique notable est le chargement dynamique : si vous modifiez le fichier de configuration, GoDNS le recharge automatiquement et applique les changements. Le README souligne également que GoDNS prend désormais en charge plusieurs fournisseurs DNS simultanément dans un seul fichier de configuration, permettant de gérer ensemble des domaines de différents fournisseurs. Un guide séparé, MULTI_PROVIDER.md, fournit des instructions détaillées et des exemples.

Notifications et webhooks

GoDNS peut envoyer des notifications lorsque l'adresse IP change. Le README documente l'e-mail via SMTP, Telegram, Slack, Discord, Pushover, Bark et ntfy. Chaque canal de notification a son propre extrait de configuration. Par exemple, l'e-mail nécessite smtp_server, smtp_username, smtp_password, smtp_port, send_from et send_to. La propriété message_template prend en charge le markdown dans Telegram et Slack. En plus des notifications, GoDNS peut délivrer des webhooks via HTTP GET ou POST. La configuration du webhook a une url et un request_body optionnel ; si request_body est vide, une requête GET est envoyée. Les variables disponibles dans l'URL ou le corps sont Domain, IP et IPType. Le README fournit des exemples pour GET et POST.

Le panneau web intégré

Depuis la version 3.1.0, GoDNS inclut un panneau web pour gérer la configuration et surveiller l'état des domaines. L'interface web est désactivée par défaut. Pour l'activer, définissez la section web_panel dans le fichier de configuration, qui comprend enabled, addr, username et password. L'exemple montre addr comme 0.0.0.0:9000. Après activation, vous pouvez visiter http://localhost:9000 pour gérer et surveiller. Le README inclut une capture d'écran du panneau web mais ne décrit pas ses fonctionnalités en détail au-delà de la gestion de configuration et de la surveillance de l'état.

Exécuter GoDNS dans différents environnements

Le README décrit plusieurs façons d'exécuter GoDNS. Pour une exécution unique, définissez run_once sur true pour que le programme se termine après la première mise à jour. Pour un processus en arrière-plan, utilisez nohup ./godns &. Des configurations de démon gérées sont fournies pour upstart, systemd et procd (OpenWRT). Les fichiers de configuration pour ces systèmes d'initialisation sont inclus dans le dépôt sous config/upstart, config/systemd et config/procd. Les images Docker sont disponibles sur Docker Hub et GitHub Container Registry ; la commande exemple monte un fichier de configuration local et expose le port 9000 pour le panneau web. Pour Windows, le README explique comment utiliser NSSM pour installer godns.exe comme service. Le README note également que le programme ne sera pas redémarré automatiquement s'il s'arrête lorsqu'il est exécuté manuellement avec nohup.

Options diverses et licence

Le README couvre plusieurs fonctionnalités optionnelles. Le support IPv6 peut être activé en définissant ip_type sur IPv6 et en utilisant ipv6_urls, ou en laissant ip_urls et ipv6_urls vides pour laisser GoDNS découvrir l'adresse IPv6 de l'interface réseau. Une IP d'interface réseau peut être spécifiée avec ip_interface, et si ip_urls est également défini, la recherche en ligne est tentée d'abord. Tous les appels distants peuvent passer par un proxy SOCKS5 en définissant socks5_proxy et use_proxy. Il existe également un bloc de configuration pour obtenir l'IP publique d'un appareil Mikrotik RouterOS. Les informations de débogage peuvent être activées avec debug_info. Le README recommande quelques API de recherche d'IP publique. Le projet est sous licence Apache 2.0, qui accorde une licence perpétuelle, mondiale, non exclusive, sans redevance pour utiliser, reproduire, modifier et distribuer l'œuvre. Le texte de la licence ne mentionne pas de garantie ou de support, et le README ne fournit aucune garantie de sécurité.

Conclusion éditoriale

GoDNS offre un fichier de configuration unique pour gérer les enregistrements DNS sur plusieurs fournisseurs, prend en charge le rechargement dynamique et inclut un panneau web. Il peut s'exécuter en tant que binaire, conteneur Docker ou service système, et est sous licence Apache 2.0.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté