Un Raspberry Pi sous Raspbian n’existe pas sur un reseau pour un ordinateur Windows, sauf en tant qu’adresse IP.
Par exemple un appareil « PI-ArtNum-01 » sous Raspbian connecté au réseau local avec l’adresse IP 192.168.1.114 sera visible en tapant ping 192.168.1.114 dans l’invite de commande Windows mais pas ping PI-ArtNum-01. Du moins pas tant qu’on aura pas installé samba sur le Pi et défini le workgroup comme indiqué dans cet article « Mise en service d’un Raspberry Pi« .
Et même lorsque Windows trouvera le pi par son « hostname », il n’y aura pas moyen d’échanger des fichiers tant qu’on n’aura pas défini un espace partagé avec Samba. C’est ce que nous allons faire dans cet article.
Qu’est-ce que Samba ?
Samba permet le partage de fichiers sur un réseau local. Il facilite le réglage des droits d’accès selon cet article de linuxConfig.org, en anglais qui sera intéressant pour aller plus loin.
l’état initial
Mon Raspberry Pi (un Pi 3 B+) est connecté à mon réseau local. Il porte le nom (hostname défini avec Raspi-config) « ArtNum-01 ». Samba a été installé en même temps que d’autres éléments de notre Pi puisque j’ai suivi mon tutoriel « Mise en service d’un Raspberry« . A ce stade, si je tape \\PI-ArtNum-01 dans l’explorateur Windows, le Pi apparaît dans les éléments réseau. Par contre il est « vide » pour Windows
Pas possible d’accéder au contenu du Pi à partir de l’explorateur Windows
Définir un répertoire partagé avec Samba
Pour définir un espace partagé avec Samba sur le Pi, on va éditer /etc/samba/smb.conf et y copier et coller (shift + inser avec l’éditeur MC) tout en bas le contenu qui suit :
Raspbian va redémarrer automatiquement Samba lorsqu’on sauvegarde le fichier de configuration.
Ensuite dans l’invite de commande du Raspberry Pi, on va créer un utilisateur et un mot de passe pour ce répertoire partagé.
smbpasswd -a al
On tape deux fois le mot de passe choisi. On le note soigneusement !
Sur une machine Windows du même réseau local, je vois maintenant le répertoire PiShare de PI-ArtNum-01. Si je double-clique dessus, Windows me demande le nom d’utilisateur et le mot de passe. Si vous les renseignez, vous avez maintenant accès (deux fois bizarrement) aux fichiers du Raspberry Pi :
Accès au répertoire partagé ( le même sous ses deux noms…)
Si je le souhaite, je peux également « connecter un lecteur réseau », ce qui revient à disposer du répertoire partagé sur une machine Windows comme s’il était sur un disque Windows
Je clique à droite sur Réseau dans la liste des répertoires de l’explorateur Windows et je choisis « connecter un lecteur réseau » (en anglais c’est « Map network drive » qui est probablement plus juste)
Dans la fenêtre qui s’ouvre je choisis d’affecter la lettre M au répertoire partagé de ce Pi (\\PI-ArtNum-01\PiShare).
connecter un répertoire partagé d’un Raspberry Pi comme un lecteur réseau
Et voilà ce PiShare apparaît comme un répertoire local.
Par contre comme je me suis déjà connectée en donnant le mot de passe, Windows ne me demande pas de fournir mon nom d’utilisateur et mon mot de passe. Lorsque je redémarre windows et que je recommence cette connexion :
saisie du nom d’utilisateur et du mot de passe d’un répertoire partagé par Samba
Et maintenant ?
Je vais pouvoir facilement placer des scripts p5.js pour des projets d’art numérique sur ce Pi.
Je veux installer node.js sur un Raspberry Pi car je voudrais disposer d’un serveur capable de diffuser des travaux d’art numérique (qui utilisent du javascript et la bibliothèque p5.js). C’est aussi une installation qui me servira à tester différents capteurs connectés à un Raspberry Pi pour des projets de domotique. J’en parlerai dans les prochains articles de cette série, .
Dans cet article je vais me concentrer sur l’installation de node.js. Je parlerai plus tard d’expériences que je réaliserai ensuite en art numérique ou domotique.
Préparer un Raspberry Pi avec Raspbian
Je dispose d’un Raspberry Pi 3 B+ qui fonctionnait sous Raspbian Stretch lite. J’y ai installé Raspbian Buster « with desktop and recommanded software ». C’est possible sous réserve d’avoir une carte SD de 8 Go au moins (avec 4Go, la carte est occupée à 85% dès l’installation de Raspbian).
L’installation a été réalisée sur la base de mon article « Mise en service d’un Raspberry Pi« . Le Pi est connecté en ethernet mais dispose aussi d’une connexion wifi. Son nom est Pi-ArtNum-01.
Qu’est-ce que node.js (et npm)
Je ne suis pas une experte, ce que je dis doit être pris avec des pincettes ! Ma source principale a été cette page de OpenClassRoom et aussi cet article, beaucoup plus concret mais en anglais. Node.js est un moyen de faire du JavaScript en dehors du navigateur, par exemple pour générer des pages web. Node.js est open source et compatible avec la plupart des plateforme.
et node.js est inséparable de npm le système de gestion de paquets de node.js. Ce que je comprends c’est que c’est le système qui gère les « extensions » de node.js.
et NodeRed ???
Pour savoir à quoi sert nodered, voir cet article de projetdiy.fr. nodeRED est une application reposant sur Node.js qui permet de programmer graphiquement des composants dans un environnement Web (source cet article de blog.ippon.fr). Pour l’instant nous ne nous y intéresserons pas, même s’il est déjà installé sur notre Raspberry Pi (essayez de taper node-red -v dans l’invite de commande).
Installation d’une version récente de node.js
Je vais avoir besoin des dernières versions de node.js et npm. Commençons par déterminer si j’ai ces programmes et dans quelle version avec les commandes node -v et npm -v.
Le dézipper puis le placer dans le répertoire home/al/ Hello_P5_drawing_2020_04_12_07_55_16 avec filezilla. Et maintenant regardons quel est son chemin exact sur le Pi :
cd /home/al
cd p5jsFiles
cd Hello_P5_drawing_2020_04_12_07_55_16
ls
Nota si j’étais entrée comme al, cd ~ ou seulement cd m’enverrait directmeent sur /home/al
Maintenant lancer le serveur http avec http-server, en étant dans le répertoire du script précédent
Dans un navigateur internet je peux en principe accéder au serveur avec l’une des trois adresses HTTP proposées. Dans mon cas je suis en accès distant (SSH) et la première adresse ne fonctionne pas. Par contre les deux autres adresses sont celles du Pi (en connexion ethernet et en connexion wifi). Si je tape http://192.168.1.100:8080, j’ai un message d’erreur d’abord et lorsque je recommence, mon canevas apparaît à l’écran du navigateur tandis que divers message apparaissent dans la console pi !
Le canevas d’un script p5.js apparaît dans mon navigateur. La console vers le Pi affiche plein de messages !
Et si je bouge ma souris dans le canevas, le script Hello P5 drawing fonctionne !
Je bouge la souris sur mon écran d’ordinateur et le Raspberry Pi donne l’ordre de tracer des traits en fonction de mes mouvements !
Donc ca y est j’ai réussi à servir des fichiers p5.js sur mon pi.
Autres utilisations possibles de node.js sur mon raspberry pi
Si je veux disposer de plusieurs serveurs (plusieurs nodes ou processus), il va falloir trouver un système qui permet de lancer simultanément des serveurs http sur plusieurs ports distincts. C’est ce que font les auteurs des articles suivants :
Je ne sais pas encore ce que je veux faire. Mon souhait est de pouvoir brancher un Pi à une télévision et le laisser tout seul pour exposer des travaux numériques. Et ensuite, je pourrai y connecter des capteurs divers pour que les scripts interagissent avec les visiteurs ou le contexte. A suivre donc dans la série !
Pour démarrer un Raspberry Pi neuf, il y a plusieurs opérations à réaliser. On trouve énormément de documents sur internet et je ne veux pas en ajouter un énième. Cet article vise simplement à établir une check-list pour me simplifier la vie.
Mettre l’OS sur la carte SD
Mise à jour du 31/08/2022 :
L’OS du Raspberry Pi est à télécharger sur le site de la fondation Raspberry Pi. J’ai choisi une version 64 bit compatible avec mon Pi 3B. J’ai pris la version lite, sans desktop. J’ai une carte sd 8 Go. J’ai utilisé Raspberry Pi Imager (téléchargeable sur le site de la fondation Raspberry Pi également).
Avec Raspberry Pi Imager j’ai effectué les réglages suivants avant de flasher la carte SD :
définir hostname de ce pi
définir l’utilisateur de base et le mot de passe correspondant (pi/raspberry n’est plus défini par défaut ! 😜)
cocher que le ssh doit être activé et indiquer le user name et le password. Je prévois en effet de connecter le Pi de manière « headless » (sans écran, clavier et souris)
configurer le wifi (j’ai mis un dongle wifi)
Et dire que clavier français et surtout timezone française.
Si nécessaire
Dans le cas où on n’utilise pas le paramétrage si dessus, on peut quand même autoriser la liaison ssh et régler le wifi autrement :
Autoriser la liaison SSH (headless)
On doit placer un fichier vide nommé ssh (sans extension) dans le répertoire boot de la carte SD. Pour plus d’explications voir cet article sur le site officiel du Raspberry Pi. On réalise cette opération par l’intermédiaire du lecteur de carte SD. Ensuite, lorsque le Pi démarre, il recherche ce fichier. S’il le trouve, il active le SSH puis détruit le fichier
Régler le wifi
Si on veut que le Pi se connecte en wifi, il faut lui donner les paramètres wifi. Sur cette page on voit comment faire. En l’occurence j’ai placé le fichier wpa_supplicant.conf dans le répertoire boot de la carte sd. Ce fichier contient les informations suivantes :
# wpa_supplicant.conf
# see https://github.com/binnes/tobyjnr/wiki/Raspberry-Pi-Initial-setup
# place this file named wpa_supplicant.conf in the /boot directory
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR
network={
ssid="mon-reseau1"
psk="password1"
id_str="home 1"
priority=1
}
network={
ssid="mon-reseau2"
psk="password2"
id_str="home 1"
priority=2
}
Encrypter le mot de passe wifi
En principe on ne devrait pas mettre les mots de passe en clair. Une bonne pratique est d’encrypter cette information par un « hash ». J’ai découvert comment faire dans cet article en anglais.
Sur un Pi (on peut le faire plus tard si on n’a pas de deuxième pi), en ligne de commande, on tape wpa_passphrase mon-reseau2 password2 et en retour on obtient l’information cryptée : network={ ssid="mon-reseau2" #psk="password2" psk=261066f1ec70322a9b305031fd2164401fbae41235107dc66eaad93ed991abcf }
Je n’ai plus qu’à placer ce mot de passe cryptée à la place de celui que j’avais initialement mis en clair.
Brancher le Pi
Equipement nécessaire :
un chargeur 5V et au moins 1A avec un cable micro-USB ;
un cable ethernet.
Et c’est tout ! Il n’y a pas besoin de connecter le Pi à un clavier et un écran car il autorise la connexion SSH si on a placé un fichier ssh comme indiqué ci-dessus.
Premier démarrage
Dans l’écran du routeur, on voit apparaître un nouvel appareil, nommé RASPBERRYPI. Pour moi il a l’adresse IP 192.168.1.14.
Dans l’invite de commande Windows, ping RASPBERRYPI ne fonctionne pas mais ping 192.168.1.14 donne une réponse.
Démarrer la session avec ssh pi@192.168.1.14 (l’adresse est donnée en allant regarder quelle est l’adresse du dispositif « RASPBERRYPI », dans le tableau de bord du routeur ou de la box.
Nota : si on s’est déjà connecté en SSH à la même adresse, on peut avoir une erreur « @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ». Dans ce cas, ssh-keygen -R 192.168.1.14 va générer une nouvelle clé SSH et la commande ssh pi@192.168.1.14 va fonctionner correctement.
Le mot de passe pour l’utilisateur pi est raspberry.
Et voilà !
Premiers paramétrages
sudo raspi-config nous amène à la configuration du Pi.
Au démarrage on est en anglais, on peut le changer si on préfère. Je ne le change pas.
On navigue avec les flèches de direction, on sélectionne avec la tabulation puis <ENTREE>.
Voici les changements à faire :
expand FileSystem (advanced options)
Oui, pour utiliser toute la carte SD
Time zone (internationalisation)
Europe / Paris
Wait for network at boot
Par défaut sur « non » dans Jessie ou stretch mais sur « oui » dans Jessie Lite ou stretch. Régler sur « NON »
Hostname (Network options)
Mettre un nom unique (AlRadio)
Password:
Modifier, ça ne doit plus être ‘raspberry’ pour l’utilisateur pi
Noter qu’en principe on ne modifie pas ces éléments :
configure keyboard
Inutile si pas de clavier
ssh (dans interfacing options)
activer est déjà réalisé
Boot Option
B1 console (on n’accède pas en mode graphique) – on pourra toujours accéder à l’interface graphique avec la commande startx
Ensuite on tape init 6 pour redémarrer le Pi.
On peut vérifier l’espace libre sur la carte SD en tapant
sudo df -h
Si on a utilisé une carte SD de 8 Go, on devrait voir que /dev/root fait environ 7 Go, avec environ 50% used, 50% available (disponible) si Raspbian Buster"normal", 12% si Buster "lite".
Autres réglages préliminaires
créer un utilisateur
Pour créer un utilisateur ‘al’ :
sudo useradd -m -G adm,dialout,cdrom,audio,plugdev,users al
puis créer son mot de passe
sudo passwd al
Changer le mot de passe root
sudo passwd root
nous demande le nouveau mot de passe. On peut ensuite devenir root en tapant su – puis le mot de passe correspondant.
Changer le mot de passe pi
Cet article, déjà cité, insiste sur l’importance du changement du mot de passe par défaut de l’utilisateur pi afin contrer les pirates qui utilisent l’internet des objets pour faire tomber des sites.
sudo passwd pi
nous demande le nouveau mot de passe, qui ne doit pas être ‘raspberry’ !
Pour installer l’éditeur MidnightCommander, en tant que root (avec su – , sinon sudo devant la commande) :
sudo apt-get install mc
Ca prend plusieurs minutes.
Ensuite, pour le démarrer
sudo mc
Dans mc, on peut utiliser la souris, cliquer sur options / Configuration puis entre [ ] devant « Use Internal Editor ». Comme ça on n’aura jamais besoin d’utiliser l’affreux éditeur nano fourni par défaut.
Si pour une raison ou une autre la souris ne fonctionne pas, on accède au menu avec F9 puis les flèches de direction.
Sortir de mc avec F10.
autoriser la connexion en tant que root (ssh ou ftp)
Editer, avec mc (sudo avant), le fichier /etc/ssh/sshd_config
Trouver la ligne sous # Authentication: contenant PermitRootLogin without-password .
La changer en PermitRootLogin yes.
permettre à windows de trouver le hostname
On a vu précédemment que ping ne fonctionnait pas avec le nom du Pi et c’est toujours le cas. On est obligé d’utiliser l’adresse IP du Pi, ce qui n’est pas pratique.
Pour y parvenir, il faut installer Samba sur le Pi et régler le « workgroup » au même groupe que celui de l’ordinateur windows utilisé.
Installer Samba avec cette commande (qui met longtemps à s’exécuter…) :
sudo apt-get install samba samba-common-bin
Editer, avec mc (sudo avant), le fichier /etc/samba/smb.conf et changer la ligne workgroup = WORKGROUP pour que WORKGROUP corresponde au bon nom.
Pour trouver le nom du workgroup utilisé par windows 10, aller dans paramètres puis système puis information système. Le nom du workgroup est indiqué en face de « organisation ».
C’est le fichier qui contient la configuration du « shell » de l’utilisateur. Il définit en particulier les couleurs employées pour différents éléments.
Le plus simple est de prendre un fichier .bashrc d’un autre Pi, par exemple en FTP (cf plus bas). Ensuite, dans le nouveau Pi, renommer le fichier .bashrc en .bashrcOLD et copier le nouveau fichier .bashrc.
A faire pour tous les utilisateurs définis dans le Pi (/home/pi/.bashrc) et pour root aussi (/root/.bashrc).
J’ai en particulier défini la ligne PS1 comme suit :
Depuis mon ordinateur Windows, je « ping » le pi dans l’invite de commande.
un ping du Pi par son « hostname » devrait renvoyer quelque chose
Si le ping ne renvoie rien, c’est probablement que le paramétrage de Samba n’a pas été fait correctement.
Vérifier le nom ‘hostname’ du pi et autres infos
La commande hostnamectl nous indique différentes informations comme le nom de l’appareil, sa version de Raspbian, etc
Faire une copie de la carte sd
A ce stade, si l’on veut éviter de devoir tout refaire pour un autre Pi, on peut faire une copie de la carte SD à l’aide de cet article. Attention si on fait ainsi la copie, on ne pourra restaurer la sauvegarde que sur une carte sd au moins égale à celle d’origine. Si besoin voir cet article en anglais, sur la manière de réduire (shrink) la taille d’une image disque.
Type d’authentification : demander le mot de passe
identifiant utilisateur ou root
mot de passe : selon l’utilisateur désigné
Commandes utiles
Quelques commandes utiles
apt update
génère une liste de ce qui doit être mis à jour
apt full-upgrade
fait la mise à jour des paquets. Voir la différence avec apt upgrade dans cet article.
rpi-update
Update the Pi firmware. Si la réponse est « rpi-update: command not found », lancer apt-get install rpi-update avant. Voir cet article.
apt-get clean
efface les paquets téléchargés pour la mise à jour
Pour redémarrer : reboot ou init 6
Pour éteindre le Pi : init 0 ou halt -p . Il est préférable d’éviter de le débrancher sans l’avoir éteint avant.
Si nécessaire (affichage de The following packages were automatically installed and are no longer required), on peut exécuter apt autoremove pour enlever tous les paquets qui ne sont plus utiles.
Pour mettre à jour le Pi avec des correctifs de sécurité :
Dans ce premier article de la série Gérer tous ses emails avec Gmail, nous allons voir comment utiliser une boîte gmail pour lire et envoyer des mails créés dans un hébergement OVH.
Cet article date de 2016 et a été mis à jour en avril 2020 puis en décembre 2024.
Le contexte
Nous avons un compte gmail classique (pas d’utilisation de gmail pour entreprises), par exemple à l’adresse exemple@gmail.com . Dans d’autres articles de cette série, nous verrons des cas d’utilisation de gmail pour entreprises.
Sur OVH, dans l’espace client, nous avons créé une adresse mail se terminant par notre nom de domaine, par exemple exe@parcours-performance.com , avec le mot de passe mot1de1PASSE.
Maintenant, nous voulons pouvoir utiliser notre compte gmail exemple@gmail.com pour lire les mails reçus par exe@parcours-performance.com et en envoyer à ce nom. On peut ainsi gérer autant de boîtes mail que l’on veut à partir d’un seul compte gmail.
Les conseils d’OVH pour régler gmail
OVH a réalisé un guide « Configuration d’un e-mail sur l’interface de Gmail » mais ce guide indique qu’il faut utiliser la fonction « “Ajouter un compte de messagerie POP3 que vouspossédez”. Le gros inconvénient de cette solution est que gmail va alors chercher de temps les mails. L’intervalle de temps est 20 minutes. On est donc toujours en décalage avec la messagerie. Je préfère nettement la méthode suivante, qui synchronise les comptes en temps réel.
Réglage de la messagerie sur OVH
Il faut dire au gestionnaire de messagerie qu’on souhaite qu’il transfère les mails à une autre adresse. On va donc procéder à une redirection. Dans le compte ovh, on crée les adresses mails puis on appuie sur le bouton « gestion des redirections » à droite du tableau des adresses mails.
on redirige ensuite, par exemple exe@parcours-performance.com vers exemple@gmail.com . On choisit si on veut qu’OVH garde aussi une copie des mails (elle ne sera pas synchronisée) ou non. Moi je préfère qu’OVH ne conserve pas de copie.
A partir de maintenant, tout mail adressé à exe@parcours-performance.com me parviendra dans ma boîte gmail. Si je veux pouvoir répondre en tant que exe@parcours-performance.com à partir de ma boîte gmail, il faut que je paramètre gmail comme suit.
Paramétrage de gmail
Dans gmail, cliquer sur « paramètres » (la roue dentée en haut à droite). Aller dans l’onglet » comptes » puis en face de « Envoyer des e-mails en tant que », cliquer sur le lien « ajouter une autre adresse email ». Une fenêtre du navigateur s’ouvre :
Dans Nom, on met ce que je veux. C’est ce qui apparaîtra comme nom d’expéditeur dans les mails envoyés. L’usage est d’écrire « Prénom NOM » dans cette case. Ici j’ai mis « monNom ».
L’adresse mail est exe@parcours-performance.com.
MAJ du 22/10/2016 :
Il faut cocher la case « traiter comme un alias » si l’on souhaite pouvoir envoyer un mail à l’adresse exe@parcours-performance.com à partir d’elle même ou d’une autre gérée par notre boîte gmail.
En effet, comme indiqué dans ce document Google, lorsque la case est cochée, « Les messages que vous envoyez à une adresse Envoyer des e-mails en tant que apparaissent comme non lus dans votre boîte de réception. ». C’est utile pour s’envoyer des mémos à soi même et aussi pour vérifier que les réglages faits fonctionnent correctement.
On clique sur le bouton « étape suivante » et on accède une nouvelle fenêtre :
ici, il faut mettre comme serveur SMTP celui qui est indiqué par OVH : ssl0.ovh.net.
En 2024 c‘est la connexion TLS qui est recommandée, avec port 597.
Le mot de passe est celui que l’on a défini lorsqu’on a créé l’adresse mail dans OVH. Pour moi ici, « mot1de1PASSE ».
Le nom d’utilisateur est l’ensemble de l’adresse mail (ici exe@parcours-performance.com).
On clique sur « ajouter un compte » et une autre fenêtre, la dernière, s’ouvre :
Pour récupérer le code, on ouvre le webmail d’OVH (https://mail.ovh.net/roundcube/). On indique l’adresse mail et le mot de passe (dans cet exemple exe@parcours-performance.com et mot1de1PASSE.
Dans la boîte de réception du webmail, on voit un mail de exemple@gmail.com , avec un titre contenant « …Confirmation – Envoyer des e-mails en tant que… ». A l’intérieur, il y a un code de confirmation, par exemple 893052657. On le copie puis on le colle dans la fenêtre gmail ci-dessus. On clique sur le bouton « Valider » et ça y est !
Dans notre boîte Gmail exemple@gmail.com, on peut envoyer des mails en tant que exe@parcours-performance.com.
On notera que certains clients web comme outlook montreront en clair l’adresse mail du compte gmail d’expédition, en plus de l’adresse mail de l’expéditeur.
Pour l’utilisateur, les mails sont maintenant gérés par gmail, avec son excellent gestionnaire de spam. C’est un énorme avantage.
Et maintenant ?
Si on utilise gmail dans le cadre de gmail for Work, on pourra aller voir les réglages dans un autre article de cette série Gérer tous ses emails avec Gmail.
Lorsqu’on met des fichiers sur Google Drive, on peut les partager. Mais tous les liens de partage emmènent vers l’interface Google Drive.
C’est très bien si on veut collaborer en ligne : commentaires ou modifications en ligne.
Ça n’est pas pratique du tout si on veut juste permettre le téléchargement du fichier. Mais heureusement il y a une solution, que je vous présente rapidement ici.
J’ai trouvé la solution ici, dans un forum d’aide Google. Le lien doit être sous la forme https://drive.google.com/uc?export=download&id=YourFile'sID
Il existe même une solution en ligne, en anglais, pour générer le nouveau lien : formulaire gdoc2direct.
Attention sur le formulaire ci-dessus, il y a un message indiquant que le système ne fonctionne pas avec un fichier qui n’a pas été chargé sur Google Drive. Ainsi un fichier créé sur Drive doît être téléchargé sur mon ordinateur puis chargé sur google Drive…
Commentaires récents