Table des matières
Avoir le logiciel domotique Jeedom au coeur de son installation, c’est avoir l’assurance d’une domotique haut de gamme. On est ici à l’opposé des « jouets » que peuvent être les assistants vocaux comme Google Home, Amazon Alexa,… Ces assistants sont certes très pratiques pour interagir par la voix mais ils doivent idéalement se limiter à cela.
Mais n’avoir qu’un Jeedom qui ne fonctionnerait que lorsqu’on est connecté chez soi au même réseau, ce serait se priver inutilement. Rien de mieux en effet que de pouvoir piloter Jeedom depuis l’extérieur, au travers d’une belle URL et via le protocole sécurisé HTTPS (avec des certificats SSL).
Un service DNS est possible chez Jeedom, moyennant paiement. Personnellement, j’ai choisi la voie la plus difficile mais aussi la moins chère : utiliser un nom de domaine OVH (1,99 euros par an) et y installer un certificat SSL gratuit en provenance de Let’s Encrypt.
Plan A : uniquement un domaine chez OVH et les certificats let’s encrypt
Le nom de domaine chez OVH
L’achat en lui-même est facile : https://www.ovh.com/fr/domaines/. Le prix varie selon l’extension du nom de domaine (.be, .fr, .com,…..). Les .ovh sont souvent les moins chers. Il y a bien entendu moyen de trouver des noms de domaines gratuits (chez son fournisseur internet par exemple) mais, pour 1,99 euros, je préfère avoir l’expertise OVH.
Une fois acheté, le domaine est disponible après quelques dizaines de minutes. Pour la clarté de cet article, supposons que j’aie acheté le domaine mondomaine.ovh
La première chose à faire est d’activer DynHOST sur OVH. DynHOST permet de faire pointer un sous-domaine vers l’adresse IP dynamique de son routeur. Dès que cette adresse IP change, le routeur pourra alors faire une mise à jour se fait automatique dans la zone DNS du domaine. Cela permet de garder en permanence un accès à son Jeedom même si son adresse IP publique externe est modifiée par son fournisseur internet suite à un reboot par exemple.
- Dans la section Domaines, choisir son domaine nouvellement acheté, cliquer sur DynHost, cliquer sur « Gérer les accès »
- Cliquer sur « Créer un identifiant ». Il faut choisir un nom d’utilisateur (dans la zone « Suffixe de l’identifiant »), un mot de passe et un nom de sous-domaine. Ce nom de sous-domaine est l’URL qui permettra d’accéder à Jeedom. Supposons, toujours pour la clarté de cet article que je choisisse monjeedom.mondomaine.ovh (mondomaine.ovh étant déjà rempli sur ce formulaire). Mon but final sera donc d’accéder à Jeedom au travers de l’URL https://monjeedom.mondomaine.ovh
- Cliquer sur « Ajouter un DynHost ». Comme nom de Sous-Domaine, choisir la même chose que ci-dessus (monjeedom.mondomaine.ovh). Pour l’adresse IP, mentionner l’adresse IP fournie par son provider internet. Si vous ne la connaissez pas, ce site vous la donnera : https://www.monip.org. Cliquer sur « Valider ».
A noter: patientez environ deux heures à la fin de cette étape afin d’être sûr que la zone DNS soit bien mise à jour et bien propagée sur les autres serveurs.
La configuration du routeur
La seconde étape consiste à configurer le routeur. Cela se fait en deux temps :
- Configurer le routeur pour qu’il mette à jour son adresse IP dans la zone DNS du domaine, c’est-à-dire qu’il utilise la configuration DynHost de OVH réalisée à l’étape précédente
- Ouvrir les ports et les rediriger vers la machine qui héberge Jeedom pour permettre l’installation des certificats et la connexion depuis l’extérieur
Ces deux étapes dépendent du type de routeur. Le mien est DreaMachine Pro d’Ubiquiti. Les écrans seront donc différents chez vous mais le principe est le même sur quasiment tous les routeurs.
1. DynHost sur le routeur Dream Machine Pro d’Ubiquiti
Dans cette étape, il s’agit de renseigner au router les informations DynHost créée sur OVH:
- Service : dyndns
- Hostname doit contenir le nom de sous-domaine, soit l’URL pour accéder à Jeedom c’est-à-dire ici monjeedom.mondomaine.ovh
- Username et password doivent contenir les noms d’utilisateur et mot de passe DynHost créés chez OVH
- Server : http://www.ovh.com/nic/update?system=dyndns&hostname=%h&myip=%i (le print screen ci-dessous est donc faux sur ce paramètre : ce n’est pas www.ovh.com qu’il faut indiquer mais l’URL mentionnée. Merci à Mr Fabrice Moll pour cette précision)
Si tout est bien configuré, un clic sur « Save » termine la configuration. Si pas, un message d’erreur sera affiché.
2. Ouvrir les ports et les rediriger
Cette fois, nous allons ouvrir les ports afin de permettre d’installer les certificats Let’s Encrypt, condition sine qua non pour avoir du https
Il faut ouvrir les ports 80, 443 et 22 et les rediriger vers la machine Jeedom.
Pour chaque port, à savoir 80, 443 et 22, il faut autoriser le trafic et mentionner, dans le champs « Forward IP », l’adresse IP de la machine Jeedom. Par exemple pour le port 80:
A la fin de cette étape, si tout a bien fonctionné, vous devriez pouvoir vous connecter à votre Jeedom en tapant l’URL http://monjeedom.mondomaine.ovh. Si cela ne fonctionne pas, inutile d’aller plus loin car il y a soit une erreur au niveau de la configuration du domaine OVH soit au niveau du routeur.
Il reste maintenant à installer des certificats SSL pour pouvoir se connecter de façon sécurisée en https. Pour l’instant, via http, votre browser internet vous indique en effet que votre site n’est pas sécurisé.
Installation des certificats SSL sur Jeedom
Pour les certificats SSL, j’ai choisi Let’s Encrypt tout simplement parce que c’est gratuit.
1. Certbot de Let’s Encrypt
Certbot is a free and open-source utility mainly used for managing SSL/TLS certificates from the Let’s Encrypt certificate authority. It is available for most UNIX and UNIX-like operating systems, including GNU/Linux, FreeBSD, OpenBSD and OS X.
Certbot va simplifier l’installation des certificats SSL. Il faut donc l’installer sur la machine qui héberge Jeedom. Mon Jeedom étant installé sur une machine virtuelle Debian et sur un NAS Synology, j’y accède via le NAS Synology et le bouton « Connect ».
Cela ouvre une fenêtre me permettant de lancer les commandes Linux. Je commence par passer en superuser en tapant
su
Après avoir introduit le mode de passe du superuser, on lance l’installation de Certbot :
- installer snapd pour Debian : https://snapcraft.io/docs/installing-snap-on-debian
- installer Certbot :
sudo snap install --classic certbot
2. Installation des certificats SSL de Let’s Encrypt
J’ai, pour ce faire, suivi la procédure décrite ici, à l’exception de l’installation de CertBot (puisque c’était déjà fait) : https://linuxhostsupport.com/blog/install-lets-encrypt-ssl-certificates-using-certbot/
certbot –apache -d monjeedom.mondomaine.ovh
N’oubliez pas d’indiquer une adresse email et, à la question posée ci-dessous, répondez 1 par sécurité
A la fin, si tout s’est bien passé, vous deviez avoir un message indiquant que tout s’est bien passé.
Un petit conseil : faites une sauvegarde de vos certificats avec cette procédure de sahsanu (https://community.letsencrypt.org/t/confused-about-backing-up-keys-and-account-credentials/12483/2):
But the best approach is backup the entire
/etc/letsencrypt
dir. There you have not only the certs, the keys used for those certs, etc. but the renewal info, your account details used to revoke certs, etc. so yes, please, backup all.
sudo cp -r /etc/letsencrypt/ ~myuser
Edit: If you copy the files, the owner of that files will be root, if you want to view the contents using your user you should chown the copied dir.
sudo chown -R myuser:myuser ~myuser/letsencrypt/
Ensuite utilisez un Filezilla pour vous connecter à votre Machine Virtuelle et télécharger les fichiers.
Configuration de Jeedom
On va maintenant indiquer à Jeedom quelle est l’adresse de connexion externe.
Aller sur Réglages / Système / Configuration
Dans « Accès externe », renseigner « HTTPS » comme protocole, ensuite « monjeedom.mondomaine.ovh » et puis le port de communication (probablement 80).
Et voilà le résultat
Et voila, avec une commande https://monjeedom.mondomaine.ovh, vous devriez avoir accès à votre jeedom depuis l’extérieur.
Plan B : un domaine chez OVH et Cloudflare
Une autre option est d’utiliser Cloudflare. Les avantages de Cloudflare sont qu’on ne doit pas ouvrir de ports sur son routeur, que l’adresse IP publique de son routeur n’est pas dévoilée et que Cloudflare ajoute des couches de sécurité. Après des années avec la méthode ci-dessus, c’est celle-ci que j’ai adopté.
La création du compte Cloudflare et les configurations de Cloudflare et OVH ont été décrites dans l’article sur Home Assistant : Configurer Home Assistant pour un accès externe avec un domaine OVH et Cloudflare. C’est exactement la même chose pour Jeedom.
Une fois le domaine OVH et Cloudflare configurés, il reste encore à créer un tunnel Cloudflare pour Jeedom.
Une instance propre
Si vous avez implémenté le plan A ci-dessus et que vous avez installé Certbot et ses certificats SSL, il est impératif de tout désinstaller. Si pas, vous aurez plus que probablement l’erreur TOO_MANY_REDIRECT quand vous tenterez d’accéder à Jeedom via le tunnel Cloudflare. Je ne peux pas donner ici de bons conseils pour cette désinstallation car je n’y suis jamais parvenu. J’ai du me résoudre à créer une nouvelle machine virtuelle, à réinstaller Jeedom et à faire un backup/restore de mon Jeedom sur cette nouvelle machine virtuelle afin de ne plus avoir ni certbot, ni let’s encrypt ni SSL.
La création du tunnel Cloudflare
Dans le tableau de bord zero trust de Cloudflare / Networks / Tunnels, on choisit de créer un nouveau tunnel
On choisit ensuite le type de tunnel recommandé, à savoir Cloudflared
On lui donne un nom et on clique sur Save
Cloudflare fournit alors les commandes qu’il faut exécuter sur la machine virtuelle où se trouve Jeedom afin d’installer le connecteur Cloudflare.
Pour exécuter ces commandes, chacun sa méthode. La plus facile est de se connecter en SSH à la machine virtuelle et de copier/coller les commandes pour les exécuter. Ou bien, si on se connecte à sa machine virtuelle via un NAS Synology (et que le copier/coller ne fonctionne pas), on peut créer un script .sh (Jeedom le permet via Réglages / Système / Editeur de fichier) et exécuter ensuite ce fichier script .sh en se connectant à la machine virtuel via le NAS Synology et en utilisant la commande sh.
Ensuite, on retourne dans le tableau de bord zero trust de Cloudflare / Networks / Tunnels au niveau du tunnel créé. Dans l’onglet « Public Hostname », on ajoute un public hostname. On y configure ici le sous-domaine à utiliser pour Jeedom et le nom domaine OVH. Au niveau de « Service », le « Type » (soit le protocole) doit être HTTP et l’URL doit être celle de la machine virtuelle Jeedom sur le réseau local.
Ces informations doivent être, bien entendu, cohérentes avec la configuration réseau que l’on trouve dans Jeedom dans Réglage / Système / Configuration à l’onglet Réseaux:
Si, quand vous connecterez les assistants vocaux, vous rencontrez un problème, allez jetez un oeil sur ce bug. Vous y trouverez une solution pour contourner le problème (en attendant que les développeurs Jeedom ne le résolvent définitivement).
Et voilà le résultat
Et voila, avec une commande https://monjeedom.mondomaine.ovh, vous devriez avoir accès à votre jeedom depuis l’extérieur.
Conclusions
Pour 1,99 euros par an vous disposez maintenant d’une belle URL pour vous connecter de façon sécurisée (HTTPS) à votre Jeedom. En plus, vous avez votre propre nom de domaine et la possibilité d’y activer un petit hébergement gratuit de 10 Mo et une adresse email personnelle.
Jo
Superbe tuto !
Néanmoins, j’ai une question. Je suis dans la meme configuration avec jeedom tournant sur une VM Debian sur NAS Synology. Au moment de rentrer l’adresse mail, impossible de taper un simple « @ », à chaque fois j’obtiens « ^@ ».
Comment as-tu procéder ?
ObjetsConnectesAdmin
Bonjour. Merci c’est gentil. Sur mon MAC, c’est Alt et 0 qui donne un @ quand je me connecte à la VM sur le Synology. Si cela ne fonctionne pas, essaie peut-être tout les touches possibles avec ALT ou MAJ. Bonne journée.
Wanabo
Bonjour,
Merci pour ce tuto bien plus clair que tout ce que j’ai pu lire jusqu’à présent. Cependant, je cherche à installer Jeedom sur un autre port (4433 par exemple). (Le port 443 est déjà pris par un yunohost). FAut-il faire la même démarche en changeant simplement la redirection du port dans le routeur ? Merci !
ObjetsConnectesAdmin
Bonjour. J’avoue ne pas être sur. Voici ce que j’ai fait.
Tout d’abord, dans Jeedom (Réglages / Système / Configuration / tab Réseaux), j’ai choisi un autre port pour se connecter à Jeedom en externe. Vous pouvez donc choisir un autre port (il faut toutefois être sûr que le port n’est pas utilisé), comme par exemple 4433.
Ensuite, sur le routeur, j’ai ouvert le port 4433 et je l’ai redirigé vers l’adresse IP qui héberge Jeedom et le port 443.
Et pour me connecter à Jeedom, j’utilise alors l’adresse URL d’OVH a la fin de laquelle on ajoute « :4433 » pour indiquer le port (cela donne https://MonNomdDomaine.ovh:4433/)
Donc, chez moi, j’utilise bien un autre port que le 443 pour me connecter à Jeedom depuis l’extérieur mais c’est le port 443 qui est utilisé derrière pour Jeedom. Dans votre cas, j’ai l’impression que vous souhaitez que Jeedom utilise aussi un autre port que le 443. Et là, je ne sais vraiment pas ce qui est possible ou pas.
Une piste de solution réside peut-être par l’usage d’un reverse proxy. A creuser mais je n’ai aucunes expériences dans ce domaine pour vous aider.
Bonne chance en tout cas et si vous avez une solution, ca m’intéresse de la connaître.
wanabo
Merci pour votre réponse. C’est effectivement ça : mettre jeedom sur un autre port. Je vais essayer, je pensais qu’il fallait une configuration particulière de let’s enscrypt mais cela ne semble pas être le cas. Concernant le reverse proxy, j’ai déjà étudié la question sans comprendre comment ça marche….
Merci pour votre aide.
ObjetsConnectesAdmin
Lorsqu’on installe Let’s encrypt ou lorsqu’on doit renouveler les certificats (tout les 2-3 mois), il est impératif d’ouvrir le ports 443 sur le routeur et de le rediriger vers la machine qui héberge Jeedom. Je pense que, si vous utilisez un autre port, cela sera compliqué pour l’installation/renouvellement des certificats Let’s encrypt.
Mais une petite question: yunohost est-il installé sur la même machine que Jeedom ? Si pas, je ne vois pas le soucis : il suffit d’utiliser deux ports différents pour les accès depuis l’extérieur et de les rediriger, au niveau du routeur, sur les ports 443 des deux machines. Si c’est sur la même machine, alors en effet je ne sais pas ce qu’il faudrait faire.
Bonne chance.
Nicolas Comet
Bonjour,
J’ai déjà généré un certificat pour mon nom de domaine sur l’interface de mon synology. (xxx.synology.me)
Comment simplement installer ces certificats sur mon raspberry qui héberge mon Jeedom svp ? Je ne veux pas installer certbot qui va générer un certificat puisque j’en ai déjà au format .pem
Bowerwald
Bonjour Nicolas,
Je suis dans la même situation que toi.
As-tu depuis trouvé une solution ?
Merci d’avance pour ton retour,
fabmoll
Bonjour,
Merci pour l’article qui m’a bien aidé
Cependant, pour la partie DynHost l’ip ne se met jamais à jour chez OVH 🙁
Pourtant tout est bien encodé et je n’ai pas d’erreur dans le log de la dream machine.
Faut-il faire quelque chose en particulier ? Est-ce que l’adresse http://www.ovh.com est suffisante ?
Merci pour votre aide :p
ObjetsConnectesAdmin
Bonjour. Hélas, en effet, cela ne fonctionne plus non plus chez moi. Si vous trouvez une solution, je suis preneur. Ce que je fais, c’est que je change manuellement le mapping dans OVH avec la nouvelle adresse IP quand celle-ci change (ce qui, dans mon cas, se fait 2 ou 3 fois par an maximum).
fabmoll
Hello, alors après avoir testé plusieurs je suis enfin tombé sur la bonne config !!!!
Voici l’adresse à utiliser dans la configuration dyndns (champ « server »):
http://www.ovh.com/nic/update?system=dyndns&hostname=%h&myip=%i
Avant il fallait faire un escape des « / » mais cela a été corrigé entre temps donc il faut ajouter l’adresse comme indiqué.
Je viens de le valider car justement mon adresse avait été modifiée 🙂
ObjetsConnectesAdmin
Merci beaucoup pour l’information. J’ai corrigé l’article grâce à vous et, lors du prochain changement d’adresse IP, je ne serai plus ennuyé.
fabmoll
J’ai dû adapter mon url dans les paramètres car cela ne fonctionnait pas en automatique mais bien en forçant la commande.
Cela devient donc :
http://www.ovh.com/nic/update?system=dyndns&myip=%i&hostname=MonHostName
Il faut remplacer MonHostName par le vôtre.
Là je vois que cela se modifie effectivement en automatique.
Par contre, parfois le controller ne détecte pas le changement d’ip mais ça c’est un autre problème.
Pour info, mon controlleur est en version 6.4.54.