Différences entre les versions de « Ressources::RaspberryPi »
Ligne 405 : | Ligne 405 : | ||
sudo service hostapd start | sudo service hostapd start | ||
sudo service dnsmasq start | sudo service dnsmasq start | ||
+ | </syntaxhighlight> | ||
+ | ==Installer et configurer nginx== | ||
+ | * Pour installer nginx, taper | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo apt-get install nginx | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Pour modifier la page html par défaut de nginx, créer un fichier index.html à la racine du serveur | * Pour modifier la page html par défaut de nginx, créer un fichier index.html à la racine du serveur |
Version du 9 août 2016 à 20:57
Configurer le Raspberry Pi
Configurer le Raspberry PI pour une connexion distante
Le but ici est de pouvoir accéder au raspberry via un terminal sur un ordinateur connecté au même réseau wifi, en indiquant simplement le nom du raspberry sans préciser son adresse ip. Pour que la reconnaissance du nom fonctionne, il faut que le paquet avahi-daemon soit installé sur le raspberry (c'est le cas par défaut pour les versions les plus récentes de raspbian). Et que "bonjour" (windows) ou avahi-daemon (linux) soit installé sur l'ordinateur.
Avec un écran hdmi, un réseau wifi et un clavier
- Brancher l'écran, brancher le clavier, connecter la prise d'alimentation au raspberry.
- Ouvrir le terminal
- Naviguer jusqu'au dossier "wpa_supplicant" du raspberry
cd /etc/wpa_supplicant
- Lister le contenu du dossier à l'aide de la commande
ls
Le fichier wpa_supplicant.conf devrait apparaitre.
- Modifier ce fichier en tapant
sudo nano wpa_supplicant.conf
- Dans l'éditeur qui vient de s'ouvrir, ajouter à la fin:
network={ ssid="réseau wifi" psk="mot de passe wifi" }
- Sauvegarder et quitter (Ctrl + x)
- Naviguer jusqu'au dossier "etc" de la partition root de la carte SD
cd /media/utilisateur/root/etc/
- Modifier le fichier "hosts" en tapant
sudo nano hosts
- Modifier le nom du raspberry à la fin du fichier, donc remplacer
127.0.1.1 raspberrypi
par
127.0.1.1 lenomdevotreraspberry
- Sauvegarder et quitter (Ctrl + x)
- Modifier le fichier "hostname" en tapant
sudo nano hostname
- Modifier le nom du raspberry à la fin du fichier, donc remplacer
raspberrypi
par
lenomdevotreraspberry
- Sauvegarder et quitter (Ctrl + x)
- Redémarrer le raspberry avec la commande
sudo reboot
(Linux ou Mac OS) Sans écran, sans clavier, avec un réseau wifi et un ordinateur
- Insérer la carte SD du raspberry dans l'ordinateur
- Avec le terminal, naviguer jusqu'au dossier "wpa_supplicant" de la partition root de la carte SD
cd /media/utilisateur/root/etc/wpa_supplicant
- Lister le contenu du dossier à l'aide de la commande
ls
Le fichier wpa_supplicant.conf devrait apparaitre.
- Modifier ce fichier en tapant
sudo nano wpa_supplicant.conf
- Dans l'éditeur qui vient de s'ouvrir, ajouter à la fin:
network={ ssid="réseau wifi" psk="mot de passe wifi" }
- Sauvegarder et quitter (Ctrl + x)
- Naviguer jusqu'au dossier "etc" de la partition root de la carte SD
cd /media/utilisateur/root/etc/
- Modifier le fichier "hosts" en tapant
sudo nano hosts
- Modifier le nom du raspberry à la fin du fichier, donc remplacer
127.0.1.1 raspberrypi
par
127.0.1.1 lenomdevotreraspberry
- Sauvegarder et quitter (Ctrl + x)
- Modifier le fichier "hostname" en tapant
sudo nano hostname
- Modifier le nom du raspberry à la fin du fichier, donc remplacer
raspberrypi
par
lenomdevotreraspberry
- Sauvegarder et quitter (Ctrl + x)
- Ejecter la carte SD de l'ordinateur, insérer la carte dans le raspberry et connecter la prise d'alimentation au raspberry. Le raspberry devrait se connecter automatiquement au réseau wifi au prochain démarrage
- Pour pouvoir y accéder via l'ordinateur taper dans le terminal "ssh pi@lenomdevotreraspberry.local"
- Le mot de passe pour se connecter est par défaut "raspberrypi"
(Windows) Sans écran, sans clavier, avec un cable ethernet, un réseau wifi et un ordinateur
- Sur l'ordinateur portable, installer "Bonjour for windows" (à télécharger à l'adresse https://support.apple.com/kb/DL999)
- Sur l'ordinateur portable, installer le client SSH "Putty" (à télécharger à l'adresse https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe)
- Raccorder le cable ethernet à l'ordinateur portable et au raspberry.
- Connecter la prise d'alimentation au raspberry.
- Ouvrir putty et entrer "raspberrypi.local" dans le champ "hostname".
- Cliquer sur "Open". Un terminal devrait s'ouvrir.
- Taper "pi" après la mention "login as"
- Taper "raspberrypi" comme mot de passe
- Naviguer jusqu'au dossier "wpa_supplicant" du raspberry
cd /etc/wpa_supplicant
- Lister le contenu du dossier à l'aide de la commande
ls
Le fichier wpa_supplicant.conf devrait apparaitre.
- Modifier ce fichier en tapant
sudo nano wpa_supplicant.conf
- Dans l'éditeur qui vient de s'ouvrir, ajouter à la fin:
network={ ssid="réseau wifi" psk="mot de passe wifi" }
- Sauvegarder et quitter (Ctrl + x)
- Naviguer jusqu'au dossier "etc" de la partition root de la carte SD
cd /media/utilisateur/root/etc/
- Modifier le fichier "hosts" en tapant
sudo nano hosts
- Modifier le nom du raspberry à la fin du fichier, donc remplacer
127.0.1.1 raspberrypi
par
127.0.1.1 lenomdevotreraspberry
- Sauvegarder et quitter (Ctrl + x)
- Modifier le fichier "hostname" en tapant
sudo nano hostname
- Modifier le nom du raspberry à la fin du fichier, donc remplacer
raspberrypi
par
lenomdevotreraspberry
- Sauvegarder et quitter (Ctrl + x)
- Redémarrer le raspberry avec la commande
sudo reboot
- Fermer putty, débrancher le cable ethernet.
- Lorsque le raspberry a redémarré, ouvrir à nouveau putty et entrer "lenomdevotreraspberry.local" dans le champ "hostname".
- Cliquer sur "open", le terminal devrait s'ouvrir à nouveau.
Mettre à jour les logiciels
- Dans le terminal, taper
sudo apt-get update
La commande met à jour la base de données locale des logiciels disponibles en téléchargeant les bases de données de paquets dont les adresses se trouvent dans le fichier /etc/apt/sources.list
- Taper ensuite
sudo apt-get upgrade
pour mettre à jour tous les logiciels installés sur le raspberry.
- Taper enfin
sudo apt-get dist-upgrade
pour mettre à jour la version de Raspbian si nécessaire.
Changer le mot de passe de l'utilisateur [facultatif]
L'utilisateur par défaut se nomme "pi". Pour changer son mot de passe, taper dans le terminal la commande
passwd
et suivre les instructions.
Installer et configurer Samba [facultatif]
Samba va permettre de partager les dossiers du raspberry sur le réseau pour pouvoir y accéder via le navigateur de fichiers de votre ordinateur.
- Dans le terminal, taper
sudo apt-get install samba samba-common-bin
- Ouvrir le fichier de configuration de samba en tapant
sudo nano /etc/samba/smb.conf
- Modifier la ligne
wins support = no
en
wins support = yes
- Ajouter les lignes suivantes à la fin du fichier
[pihome] comment=home pi path=/home/pi browseable=Yes writeable=Yes only guest=no create mask=0775 directory mask=0775 public=no
- Sauver le fichier et quitter (ctrl+x)
- Ajouter l'utilisateur pi comme utilisateur samba
sudo smbpasswd -a pi
Installer et configurer un bureau à distance [facultatif]
Installer le serveur du bureau à distance sur le raspberry
- Installer "tightvncserver":
sudo apt-get install tightvncserver
- Lancer "tightvncserver"
tightvncserver
Entrer un mot de passe demandé. Le bureau distant a normalement été créé à l'adresse :1, :0 étant l'adresse du bureau par défaut sur le raspberry.
- Pour éteindre le bureau par défaut, taper
service lightdm stop
- Pour éteindre un bureau créé aevec tightvncserver, taper
vncserver -kill :1
où :1 est l'adresse du bureau que vous désirez arrêter.
(Linux) Se connecter via l'ordinateur client
- Chercher l'application (ou installer via
apt-get
si nécessaire) "remote desktop viewer" (Vinagre pour Gnome, krdc pour KDE) - Ouvrir l'application et dans le champs "host" taper l'adresse du raspberry suivie de l'adresse de l'écran (exemple:
lenomdevotreraspberry.local:1
). Spécifier "VNC" comme protocole de connexion et cliquer sur "connect".
(Mac OS) Se connecter via l'ordinateur client
- Dans le menu du Finder, cliquer sur "Aller " puis "Se connecter au serveur", puis entrer l'adresse du raspberry précédée de "vnc://", par exemple:
vnc://lenomdevotreraspberry.local:1
(Windows) Se connecter via l'ordinateur client
- Télécharger "tightvnc" à l'adresse http://www.tightvnc.com/download.php et l'installer.
- Ouvrir l'application et dans le champs "host" taper l'adresse du raspberry suivie de l'adresse de l'écran (exemple:
lenomdevotreraspberry.local:1
). Cliquer sur "connect".
Lire une vidéo
Le lecteur vidéo par défaut installé sur Raspbian se nomme omxplayer. Il peut être exécuté à distance, sans nécessairement de session de bureau active sur le raspberry. Pour lire une vidéo, taper dans le terminal:
omxplayer --loop --no-osd lefichier.mp4
Créer des scripts bash et automatiser leur exécution
Créer un script de base qui s'exécutera à chaque démarrage du raspberry
Le script bash que nous allons réaliser envoie du texte dans un fichier à chaque exécution.
Insérer du texte dans un fichier
- Créer un fichier "messages" qui contiendra le texte
touch messages
- Tester l'envoi de texte dans le fichier
echo "test" >> messages
- Afficher le contenu du fichier
cat messages
Créer un fichier contenant la commande d'insertion du texte
- Créer un nouveau fichier
nano hello.sh
- Y insérer l'entête qui indique le programme qui doit l'interpréter et la commande
#!/bin/bash
echo "hello" >> /home/pi/messages
exit 0
- Sauver et quitter le fichier (ctrl + x)
- Rendre le fichier exécutable
chmod +x hello.sh
- Tester son exécution
./hello.sh
Exécuter le script créé à chaque démarrage du raspberry
- Il s'agit de modifier le fichier "/etc/rc.local" pour y ajouter l'adresse du script juste avant la ligne "exit 0"
sudo nano /etc/rc.local
- La fin du fichier doit ressembler à ceci:
/home/pi/hello.sh &
exit 0
Créer un script d'envoi d'email qui s'exécutera à chaque connexion au wifi
Le script bash que nous allons réaliser envoie un email à chaque exécution.
Installer et configurer les outils nécessaires
- Installer les paquets nécessaires
sudo apt-get install mailutils mpack ssmtp
- Configurer ssmtp avec les informations de connexion à un serveur smtp
sudo nano /etc/ssmtp/ssmtp.conf
Exemple de configuration pour envoyer les mails à partir d'une adresse gmail
root=utilisateur@gmail.com mailhub=smtp.gmail.com:587 hostname=lionel AuthUser=utilisateur@gmail.com AuthPass=motdepasse FromLineOverride=YES UseTLS=YES UseSTARTTLS=YES
- Pour les adresses gmail, il est possible de devoir effectuer des étapes supplémentaires; voir ici: https://support.google.com/mail/answer/78754?hl=en
Envoyer un mail via une ligne de commande
echo "Contenu du mail" | mail -s "Titre du mail" destinataire@gmail.com
Créer un fichier contenant la commande d'envoi d'un email
- Créer un nouveau fichier
nano email.sh
- Y insérer la commande l'entête qui indique le programme qui doit l'interpréter et la commande d'envoi d'email
#!/bin/bash
echo "Contenu du mail" | mail -s "Titre du mail" destinataire@gmail.com
exit 0
- Sauver et quitter le fichier (ctrl + x)
- Rendre le fichier exécutable
chmod +x email.sh
- Tester son exécution
./email.sh
Exécuter le script créé à chaque connexion au réseau wifi
Puisque notre script a besoin de la connexion pour fonctionner, il faut qu'il s'exécute au moment où cette connexion est disponnible et non directement au démarrage du raspberry.
- Copier le script dans le répertoire "/etc/network/if-up.d"
sudo mv email.sh /etc/network/if-up.d/email
- Modifier le script pour qu'il n'envoie pas de mail si une autre interface réseau que le wifi se connecte et pour qu'il attende quelques secondes après l'activation du wifi (pour l'obtention d'une adresse ip) avant d'envoyer un email.
#!/bin/bash
if [ "$IFACE" != "wlan0" ];then
exit 0
fi
sleep 10
echo "Contenu du mail" | mail -s "Titre du mail" destinataire@gmail.com
exit 0
Planifier l'exécution d'un script avec crontab
Crontab permet l'exécution planifiée d'un script, c'est à dire programmer l'exécution d'un script pour qu'elle ait lieu toutes les x minutes/x heures/x jours du mois/x mois/x jours de la semaine.
- Pour éditer le crontab de l'utilisateur courant (pi), il faut taper la commande:
crontab -e
- Chaque ligne de ce fichier correspond à une commande planifiée. Par exemple, pour exécuter toutes les 5 minutes notre script /home/pi/hello.sh, il faut ajouter la ligne
5 * * * * /home/pi/hello.sh
à la fin du fichier. Les règles pour écrire la planification sont indiquées au début du fichier crontab.
- Sauver et quitter (ctrl+x)
Convertir son raspberry en point d'accès wifi
Le but est ici de transformer le raspberry pi en un point d'accès wifi accessible sur n'importe quel matériel (smartphone, tablette ou ordinateur) et d'afficher son propre contenu dans le navigateur web de l'appareil connecté.
Installer et configurer les hostapd et dnsmasq
- Installer "hostapd et dnsmasq", le premier servira à configurer le point d'accès wifi et le second servira à distribuer des adresses ip (via dhcp):
sudo apt-get install dnsmasq hostapd
- Empêcher le client dhcp présent sur le raspberry de prendre en compte l'interface wlan0 en modifiant le fichier "/etc/dhcpcd.conf"
sudo nano /etc/dhcpcd.conf
- Dans le fichier ouvert ajouter la ligne suivante:
denyinterfaces wlan0
- L'interface wifi du raspberry doit agir comme serveur dhcp avec une adresse ip fixe (par exemple 10.10.0.1) et une tranche d'adresses ip à distribuer (par exemple de 10.10.0.10 à 10.10.0.30). Modifier le fichier "/etc/network/interfaces" pour attribuer une ip fixe:
sudo nano /etc/network/interfaces
Dans le fichier, modifier la configuration de l'interface wlan0 comme suit:
allow-hotplug wlan0
iface wlan0 inet static
address 10.10.0.1
netmask 255.255.255.0
network 10.10.0.0
broadcast 10.10.0.255
Sauver et quitter (ctrl+x)
- Créer un fichier de configuration, "/etc/hostapd/hostapd.conf" pour le point d'accès wifi
sudo nano /etc/hostapd/hostapd.conf
et y insérer le contenu suivant (en adaptant le nom du point d'accès):
interface=wlan0 driver=nl80211 #nom du point d'accès ssid=lionel_wifi # 2.4GHz band hw_mode=g channel=6 ieee80211n=1 auth_algs=0 # la suite sert à sécuriser le réseau, décommenter si nécessaire # WPA2 ##wpa=2 #mot de passe ##wpa_passphrase=raspberry
- Tester le point d'accès:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
- Indiquer à hostapd le fichier de configuration créé. Ouvrir le fichier "/etc/default/hostapd"
sudo nano /etc/default/hostapd
Modifier la ligne #DAEMON_CONF=""
par DAEMON_CONF="/etc/hostapd/hostapd.conf"
.
- Renommer l'ancien fichier de configuration de dnsmasq et en créer un nouveau
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
- Y mettre le contenu suivant:
interface=wlan0 listen-address=10.10.0.1 bind-interfaces domain-needed bogus-priv dhcp-range=10.10.0.10,10.10.0.30,12h address=/#/10.10.0.1
- Sauver et quitter (ctrl+x)
- Démarrer hostapd et dnsmasq
sudo service hostapd start
sudo service dnsmasq start
Installer et configurer nginx
- Pour installer nginx, taper
sudo apt-get install nginx
- Pour modifier la page html par défaut de nginx, créer un fichier index.html à la racine du serveur
nano /var/www/html/index.html
- Sauver et quitter (ctrl+x)