Probèmes entre PiHole et Let's Encrypt

Bonjour à tous,
Je rencontre quelques difficultés à faire cohabiter l’application PiHole avec Yunohost, surtout lorsqu’il s’agit de générer un nouveau certificat Let’s Encrypt pour un nouveau domaine ou lorsque yunohost doit faire un renouvellement des certificats.

J’ai actuellement l’application PiHole installée, je m’en sers comme adblocker pour mon réseau local et résolveur DNS. Le problème est que lorsque je crée un nouveau domaine sur yunohost, je ne peux pas générer de certificat Let’s Encrypt, le bouton est désactivé et m’affiche le message:

Ce domaine ne semble pas prêt pour un certificat Let’s Encrypt. Veuillez vérifier votre configuration DNS et l’accessibilité de votre serveur HTTP.

J’ai remarqué qu’en arrêtant le service pihole-FTL le bouton pour générer le certificat Let’s Encrypt redevient cliquable, mais lorsque je clique dessus il ne va pas au bout de la génération du certificat et m’affiche cette erreur:

Registering account…

Parsing CSR...

Parsing account key...

Le fichier de configuration « /etc/dnsmasq.d/01-pihole.conf » devrait être supprimé par le service dnsmasq mais a été conservé.

Le fichier de configuration « /etc/dnsmasq.d/03-pihole-wilcard.conf » devrait être supprimé par le service dnsmasq mais a été conservé.

La configuration de SSOwat a été générée

Now attempting install of certificate for domain sous-domaine.domaine.tld!


Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/moulinette/interfaces/api.py", line 405, in process
    ret = self.actionsmap.process(arguments, timeout=30, route=_route)
  File "/usr/lib/python2.7/dist-packages/moulinette/actionsmap.py", line 519, in process
    return func(**arguments)
  File "/usr/lib/moulinette/yunohost/domain.py", line 229, in domain_cert_install
    return yunohost.certificate.certificate_install(auth, domain_list, force, no_checks, self_signed, staging)
  File "/usr/lib/moulinette/yunohost/certificate.py", line 146, in certificate_install
    auth, domain_list, force, no_checks, staging)
  File "/usr/lib/moulinette/yunohost/certificate.py", line 302, in _certificate_install_letsencrypt
    _display_debug_information(domain)
  File "/usr/lib/moulinette/yunohost/certificate.py", line 883, in _display_debug_information
    local_dns_ip = _get_local_dns_ip(domain)
  File "/usr/lib/moulinette/yunohost/certificate.py", line 872, in _get_local_dns_ip
    answers = resolver.query(domain, "A")
  File "/usr/lib/python2.7/dist-packages/dns/resolver.py", line 1041, in query
    timeout = self._compute_timeout(start)
  File "/usr/lib/python2.7/dist-packages/dns/resolver.py", line 858, in _compute_timeout
    raise Timeout(timeout=duration)
Timeout: The DNS operation timed out after 30.0012128353 seconds

Pour pouvoir installer le certificat, je me connecte en ssh a ma machine et je renomme les fichiers:

/etc/dnsmasq.d/01-pihole.conf
/etc/dnsmasq.d/03-pihole-wilcard.conf
… puis je change sur mon router l’addresse de mon résolveur DNS, je laisse les résolveurs DNS de mon FAI par défaut .

Puis je régénéré le certificat SSL Let’s Encrypt… et cela fonctionne.

Installation avec succès d’un certificat Let’s Encrypt pour le domaine sous-domaine.domaine.tld !

La configuration a été mise à jour pour le service « nginx »

Certificate signed!

Signing certificate...

sous-domaine.domaine.tld verified!

Verifying sous-domaine.domaine.tld ...

Already registered!

Registering account...

Parsing CSR...

Parsing account key...

dnsmasq.service is not active, cannot reload.

cp: cannot stat '/tmp/pi-hole.bck/01-pihole.conf': No such file or directory

Échec de l’exécution du script « /usr/share/yunohost/hooks/conf_regen/43-dnsmasq »

See "systemctl status dnsmasq.service" and "journalctl -xe" for details.

Job for dnsmasq.service failed because the control process exited with error code.

Le fichier de configuration « /etc/dnsmasq.d/a03-pihole-wilcard.conf » devrait être supprimé par le service dnsmasq mais a été conservé.

Le fichier de configuration « /etc/dnsmasq.d/a01-pihole.conf » devrait être supprimé par le service dnsmasq mais a été conservé.

sed: can't read /etc/dnsmasq.d/01-pihole.conf: No such file or directory

cp: cannot stat '/etc/dnsmasq.d/01-pihole.conf': No such file or directory

Now attempting install of certificate for domain sous-domaine.domaine.tld!

Je renomme ensuite les fichiers .conf comme avant
je relance le service pihole-FTL et re-configure l’adresse ip de mon pi-hole comme resolveur DNS sur mon routeur. Puis pour finir je vais dans les “settings” de PiHole et je restart le dnsmasq sinon pihole m’affiche “DNS service not running

Tout fonctionne a nouveau mais c’est galère comme méthode ^^
Je me demandais s’il y a une solution plus simple. Si quelqu’un a une idée je suis preneur ^__<

Can you please show me your /etc/hosts ?
Looks like there was a dns error, and when it’s about to resolve your own domain, pihole is tweaking your /etc/hosts.

hi @Maniack_Crudelis
of course, here is my hosts:

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       raspberrypi
192.168.178.27  mydomain.tld #Added by pihole#
192.168.178.27  funkwhale.mydomain.tld #Added by pihole#
192.168.178.27  peertube.mydomain.tld #Added by pihole#
192.168.178.27  blog.mydomain.tld #Added by pihole#

Is 192.168.178.27 the local IP of your server ?

Yes, that’s right.

I can’t see any reason right now for Let’s Encrypt do not find your server, your configuration seems to be ok.

1 Like

It’s okay @Maniack_Crudelis , I appreciate you looking at my problem. I can bypass the problem manually until I find a solution.