Accéder à Jeedom via une URL externe, en https et via un domaine OVH

Classé dans : Jeedom | 6

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.

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”

Jeedom avec URL et https - DynHost sur OVH

  • 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

Créer un identifiant sur DynHost sur 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”.

Jeedom avec URL et https - DynHost et IP

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 :

  1. 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
  2. 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 : www.ovh.com

Jeedom avec URL et https - Dynamic DNS sur DreamMachine PRO

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.

Ouverture des ports sur DreamMachine PRO

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:

Ouverture des ports sur DreamMachine PRO - Détail

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”.

Machine_Virtuelle_Jeedom

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 avec cette commande :

sudo apt-get install certbot python-certbot-apache

2. Installation des certificats SSL de Let’s Encrypt

Se placer dans le répertoire /etc

cd /etc

Lancer la commande 

sudo wget https://dl.eff.org/certbot-auto

Vous devriez avoir une réponse OK. Si pas et en particulier si vous avez l’erreur “Network is unreachable”, c’est probablement parce que vous n’avez pas ouvert tous les ports de votre routeur (443, 22 et 80) ou que vous n’avez pas redirigé les ports vers votre machine Jeedom.

Modifier les droits de la commande

sudo chmod a+x ./certbot-auto

Lancer la génération des certificats

./certbot-auto –apache -d monjeedom.mondomaine.ovh

A la question posée, répondez 1 (par sécurité)

Configuration_Apache

On vous demandera aussi de fournir une adresse email.

A la fin, si tout s’est bien passé, vous deviez avoir ce message.

SSL installé 2

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.

3. Renouvellement automatique des certificats

Afin de ne pas devoir renouveler les certificats manuellement à chaque expiration (90 jours), on peut automatiser l’action en insérant une commande dans le scheduler crontab.

sudo nano crontab -e

Insérer cette ligne à la fin du fichier afin que le renouvellement se fasse tous les 30 du mois

0 1 30 * * /etc/certbot-auto renew >> /var/log/ssl-renew.log

Sauver (CTRL + X sur MAC) et confirmer la sauvegarde (Y sur MAC)

Configuration de Jeedom

On va maintenant indiquer à Jeedom quelle est l’adresse de connexion externe.

Aller sur Réglages / Système / Configuration

Jeedom-Reglage-Systeme-Configuration

Dans “Accès externe”, renseigner “HTTPS” comme protocole, ensuite “monjeedom.mondomaine.ovh” et puis le port de communication (probablement 80).

URL pour accès externe à Jeedom

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. Et, 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.

6 Responses

  1. 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.

  2. 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.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.