Le principe
Un logiciel local sur le robot crée un tunnel avec le serveur ngrok qui expose sur une adresse simple (nom du projet . ngrok . com) les ports d’accès sur le robot.
Installation sur Raspberry Pi
Le téléchargement depuis le site ngrok est plus simple à faire depuis un ordinateur (sous Linux) par exemple pour ensuite transférer le fichier ngrok.zip vers la Raspberry Pi.
Il faut télécharger la version Linux/ARM (car la puce de la Raspberry Pi est un ARM et pas un processeur x86 de PC).
L’envoi peut se faire avec une copie sécurisée (scp) ou avec un client SFTP afin d’utiliser la liaison SSH (pi/raspberry).
Voilà ce que ça donne pour transférer le fichier depuis le PC atelier4 du local sur le robot Nono dans le répertoire /home/pi/local/ :
pobot@atelier4:~/Downloads$ scp ngrok.zip pi@pibot-nono.lan:~/local/
pi@pibot-nono.lan's password: raspberry
ngrok.zip 100% 3022KB 3.0MB/s 00:01
pobot@Atelier4:~/Downloads$
On se connecte ensuite à Nono.
pobot@atelier4:~/Downloads$ ssh pi@pibot-nono.lan
pi@pibot-nono.lan ~ $ cd local
pi@pibot-nono ~/local $ unzip ngrok.zip
Archive: ngrok.zip
inflating: ngrok
pi@pibot-nono ~/local $
Et c’est fini ! Vous pouvez déplacer l’exécutable où vous voulez (/usr/local/bin par exemple) mais ce n’est pas obligatoire.
Connexion avec ngrok
On se crée un compte sur https://ngrok.com en payant le prix qu’on estime juste (il faut en avoir le besoin, mais un tel dispositif m’a souvent manqué donc 30€ est un juste prix).
Dans la page "dashboard", les instructions vous sont données pour créer la première liaison.
Voici ce qu’on exécute sur la Raspberry Pi (avec le token qui correspond à votre compte) :
pi@pibot-nono ~/local $ ./ngrok -authtoken i42jhLoLptdrHmdrA9Q 80
ngrok
Tunnel Status online
Version 1.7/1.6
Forwarding http://77da7c7a.ngrok.com -> 127.0.0.1:80
Forwarding https://77da7c7a.ngrok.com -> 127.0.0.1:80
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms
Il faut appuyer sur CTRL+C pour sortir. Ce premier test valide juste que ngrok fonctionne sur votre carte et qu’il arrive à se connecter au serveur pour obtenir une adresse Internet (http://77da7c7a.ngrok.com).
Si vous avez fait tourner un serveur web sur votre robot, vous pourrez y accéder via cette adresse, mais nos besoins concernent plutôt un tunnel SSH pour se connecter au robot.
Ouvrir un tunnel SSH
Il faut rajouter le protocole TCP et bien sûr le port 22 :
pi@pibot-nono ~/local $ ./ngrok -authtoken i42jhLoLptdrHmdrA9Q -proto=tcp 22
ngrok (Ctrl+C to quit)
Tunnel Status online
Version 1.7/1.6
Forwarding tcp://ngrok.com:38027 -> 127.0.0.1:22
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms
Désormais, on peut se connecter via "ssh -p 38027 pi@ngrok.com" avec le mot de passe "raspberry" (le port a été changé pour l’exemple...).