[Tuto] Utilisation de l’accès à distance officiel (DNS Jeedom) avec un Docker Synology

Tags: #<Tag:0x00007fc6bde5dcc0> #<Tag:0x00007fc6bde5dbf8> #<Tag:0x00007fc6bde5db30>

Bonjour,

Le but de ce tuto est de pouvoir utiliser l’accès à distance officiel (via les DNS Jeedom) sur un Docker si vous avez acheté un Pack Jeedom (pack Power ou Ultimate).

Pour ma part, je ne souhaite pas exposer mon Jeedom sur Internet. Du coup, j’utilisais jusqu’à présent un VPN.
Par contre, c’est pénible à utiliser et s’il n’y a pas de VPN configuré sur l’équipement depuis lequel on veut accéder à Jeedom, c’est galère!

Mon idée était donc d’activer cet accès plus simplement.
L’idée est de simplement demander à Alexa (via l’application installé sur mon mobile) d’activer l’accès à distance ou de le couper.
Bien plus simple!

Par contre, comme vous le savez certainement, Docker n’est pas officiellement supporté par Jeedom.

L’installation d’OpenVPN va poser un problème. Voici ce que l’on va retrouver dans les logs du démon :

ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)




On va donc y remédier.

Pour cela, créez le script tun.sh (vous pouvez installer un éditeur de texte via les packages Synology) avec le contenu (script trouvé sur le net) :

#!/bin/sh

# Create the necessary file structure for /dev/net/tun
if ( [ ! -c /dev/net/tun ] ); then
  if ( [ ! -d /dev/net ] ); then
    mkdir -m 755 /dev/net
  fi
  mknod /dev/net/tun c 10 200
fi

# Load the tun module if not already loaded
if ( !(lsmod | grep -q "^tun\s") ); then
  insmod /lib/modules/tun.ko
fi

# Load iptables mangle is not already loaded
if ( !(lsmod |grep -q "^iptable_mangle\s") ); then
  insmod /lib/modules/iptable_mangle.ko
fi

Pour ma part, je l’ai enregistré dans : `/volume1/docker/tun/`

Ensuite, il faut ajouter ce script dans le planificateur de tâches pour qu’il s’exécute au démarrage.

Cela se passe ici : Panneau de configuration > Planificateur de tâches > Créer > Tâche déclenchée > Script défini par l’utilisateur :

  • Tâche : Saisir un nom pour votre script
  • Utilisateur : root
  • Evénement : Démarrage
  • Cocher « Activé »

Sous l’onglet « Paramètres de tâche »
Sous « Script défini par l’utilisateur » :
/volume1/docker/tun/tun.sh
(Correspond à l’emplacement et au nom de votre script bien entendu).

Vous n’avez pas besoin de redémarrer votre NAS. Il suffit de sélectionner le script (dans le planificateur de tâches) et de l’exécuter manuellement.

Vous n’avez plus qu’à relancer le démon OpenVPN (ou attendre) dans Jeedom et vérifier les logs.

A ce stade, le démon ne devrait plus générer d’erreur mais Jeedom sera redirigé vers le port 80 de votre interface de NAS.
Il va donc falloir faire des redirections.

Pour cela, allez dans : Panneau de configuration > Applications > Portail des applications > Proxy inversé
Et rajouter deux règles :

Règle 1 :

  • Description : Ce que vous voulez… Ici on parle de redirection du port 80
  • Source Protocole : HTTP
  • Source Nom d’hôte : votre adresse externe de Jeedom (ex : monlogin123.dns53.jeedom.com)
  • Source Port : 80
  • Destination Protocole : HTTP
  • Destination nom d’hôte : localhost
  • Destination Port : le port Apache de votre Docker

Règle 2 :

  • Description : Ce que vous voulez… Ici on parle de redirection du port 443
  • Source Protocole : HTTPS
  • Source Nom d’hôte : votre adresse externe de Jeedom (ex : monlogin123.dns53.jeedom.com)
  • Source Port : 443
  • Destination Procole : HTTPS
  • Destination nom d’hôte : localhost
  • Destination Port : le port Apache de votre Docker

Et voilà… Normalement vous devriez avoir accès à votre Jeedom sous Docker Syno depuis l’extérieur.
En espérant que cela va aider au moins une personne ;)

3 J'aime

Merci pour ce tuto, je ne savait pas comment faire pour rendre accessible Jeedom sur Docker de l’extérieur
ça fonctionne nickel

1 J'aime

Content que cela a servi à au moins une personne :grin:

Disons 2 !
Merci.:+1:t2:

1 J'aime

Je dirai même 3.
Un grand Merci pour ce super tuto @Kyoshi.
Cdt

Content que ça serve :wink:

C’est une bonne solution en effet.

Cependant, pour Docker, il y a la possibilité d’utiliser un Load Balancer / Reverse Proxy (Genre Traefik). Il permet en plus de configurer le https en http-01 (avec letsencrypt, en auto renewal) également et de faire la redirection auto du port 80 vers le 443.

Il suffit de monter une stack (compose ou swarm pour faire simple), de configurer Jeedom pour Traefik en mode dynamique avec des labels, et c’est tout :slight_smile:

bjr @Kyoshi,
il y a 2 mois j’ai fait l’ensemble du tuto pour accéder xxxxx.dns3.jeedom.com et ça marche bien. Par contre j’ai voulu faire de même avec le nouveau dns (plus facile à retenir) xxxxx.eu.jeedom.link et là pas pas d’accès. y aurait t’il une autre manip à faire. je n’ai pas touché au fichier « tun », je n’ai fait que rajouter les redirections en http et https et relancer le script.
Merci d’avance.
cdt

Bonjour,

J’ai suivi le tuto, par contre j’ai l’impression que la redirection ne fonctionne pas, je tombe sur cette page :

Capture jeedom

Quelqu’un a t’il deja eu se probleme?

Merci d’avance

Suis je le seul à avoir besoin d’aide pour les DNS Jeedom sur Docker ?

Avant la maj de Synology cela fonctionnait : depuis impossible

merci à vous de me dire si chez vous sous Docker cela fonctionne ?

ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

Bonjour,

Je suis passé sous Docker et je souhaite profité du DSN Jeedom que j’ai depuis toujours.

La manip me semble complexe, et j’ai uniquement un OpenVpn sur mon Syno et non mon Jeedom, existe t-il une manip plus simple ? Merci.
Ca me semble compliqué

Bonjour,

Comment connaître le porte apache utilisé par docker ? Merci.

Cela depend de ton type de réseau Docker ?
Host ? macvlan ?

J’ai suivi votre tuto Macvlan.

@Didier3L vous pouvez me confirmer le port en macvlan ? Merci.

Alors c’est le port par défaut : 80

Merci. Ca ne fonctionne toujours pas ! Je n’y comprends rien. Désolé pour le pavé mais avec tous les éléments peut-être qu’une erreur va apparaître.

Voici mes screens :
Lancement de script
image
Emplacement de script
image
image
image

Script

#!/bin/sh

# Create the necessary file structure for /dev/net/tun
if ( [ ! -c /dev/net/tun ] ); then
  if ( [ ! -d /dev/net ] ); then
    mkdir -m 755 /dev/net
  fi
  mknod /dev/net/tun c 10 200
fi

# Load the tun module if not already loaded
if ( !(lsmod | grep -q "^tun\s") ); then
  insmod /lib/modules/tun.ko
fi

# Load iptables mangle is not already loaded
if ( !(lsmod |grep -q "^iptable_mangle\s") ); then
  insmod /lib/modules/iptable_mangle.ko
fi

Redirection
image
image

Reverse Proxy
image

Si quelqu’un voit une erreur je suis preneur car la je suis coincé et n’y comprend rien.