Un serveur Raspberry Pi hors ligne

Ce guide vous indique comment configurer un Raspberry Pi sous forme de hotspot Wi-Fi local au service de Kolibri.

Il existe plusieurs variétés de systèmes d’exploitation pour le Raspberry Pi. Ce guide est conçu pour et testé sur Raspbian, le choix d’OS le plus populaire, basé sur Debian.

Avertissement

Les étapes ci-dessous nécessitent une connexion Internet lors de l’installation. Une fois l’installation terminée, il est possible de répliquer une image pour une installation hors ligne.

Prérequis

Raspberry Pi and accessories

Kolibri fonctionne tant sur Raspberry Pi 3 que 4

  • Les modèles 3, 3+, 4 et Zero W de Raspberry Pi - ou : les versions de Raspberry Pi prenant en charge Raspbian Stretch ou Buster et disposant du Wi-Fi intégré
  • Carte MicroSD formatée > 4 Go (64 Go recommandé ou stockage USB connecté)
  • Un lecteur de carte pour un ordinateur portable ou un ordinateur pour enregistrer sur la carte MicroSD
  • Le fichier Raspbian Stretch OS .img le plus récent
  • Connexion Internet (pour la configuration de l’appareil)
  • Une carte MicroSD interne est utilisée pour le système de base, et un support de stockage externe pour les contenus (par exemple une clé USB de 64 Go). Nous vous recommandons de disposer d’un câble Ethernet pour la connectivité Internet lors de l’installation et de la récupération de contenus pour Kolibri.

Astuce

L’OS standard Raspbian a un bureau graphique. Vous pouvez également installer Raspbian Lite qui utilise moins de ressources, mais qui n’a qu’une interface de ligne de commande. Les instructions de cette documentation fonctionnent aussi bien sur l’un que sur l’autre.

Guides de démarrage

Ce guide détaille comment configurer Kolibri étape par étape, mais n’explique pas les concepts de base à propos de votre Raspberry Pi. Si vous débutez sur ce système, nous vous encourageons à lire le guide officiel Premiers pas avec le Raspberry Pi pour acquérir les connaissances de base sur la configuration de votre appareil.

Vous ne savez pas quel Raspbian choisir ? Nous vous recommandons d’opter pour Raspbian Lite si vous êtes à l’aise avec un environnement qui ne dispose que d’un terminal et d’aucune interface d’utilisateur graphique. La version de bureau sollicite davantage le processeur, et consomme plus de mémoire et d’électricité. Sachez en outre qu’il est possible de désactiver l’environnement de bureau une fois la configuration de l’appareil terminée.

L’installation de Kolibri est l’une des toutes dernières étapes. Assurez-vous de bien lire et compléter les étapes précédentes.

Configuration de la carte SD

Les commandes suivantes fonctionnent sous Linux/macOS pour configurer les fichiers .img mis à disposition. Vous devrez également connaître le nœud de périphérique pour le lecteur de carte SD. Sous Linux, c’est typiquement /dev/mmcblk0 pour la 0ème carte de votre lecteur de carte.

# Unpack the .zip into memory and write it to <device node>
unzip -p /path/to/raspbian-stretch-lite.zip | sudo dd of=/dev/mmcblk123 bs=4M conv=fsync

Astuce

Lisez les guides officiels pour la mise en place de votre carte : Copier des fichiers .img

Astuce

Choisissez votre carte MicroSD en fonction de l’expérience d’autres personnes et des références techniques. Pour plus d’informations, consultez ce thread sur notre Forum communautaire.

Mise à jour du logiciel

Après avoir installé et démarré votre Raspberry Pi, il est recommandé de mettre à jour tous les logiciels de l’appareil :

sudo apt update
sudo apt upgrade
sudo reboot  # Ensure that updates are active

Mise à jour du micrologiciel

Exécutez la commande « sudo rpi-update » pour mettre à jour le micrologiciel. Cette opération n’est nécessaire à aucune des étapes de ce didacticiel, mais est toujours recommandée car les problèmes matériels peuvent être résolus avec le temps et les performances améliorées. Il est impossible d’y procéder en copiant des cartes MicroSD, il vous faudra donc répéter l’opération pour chaque nouveau périphérique Raspberry Pi que vous installez.

Configuration générale du système

Lancez sudo raspi-config pour accéder aux options de configuration générales telles que le changement de mot de passe, la disposition du clavier, le fuseau horaire, etc.

Avertissement

Changez toujours votre mot de passe après avoir configuré l’appareil. Le mot de passe par défaut pour l’utilisateur pi est raspberry .

Configuration d’un hotspot

Les Raspberry Pis 3 et 4 ont un adaptateur Wi-Fi interne qui peut servir de point d’accès, donnant ainsi à d’autres appareils la possibilité de se connecter au Raspberry Pi par Wi-Fi. Dans ce cas, nous appelons le Raspberry Pi un hotspot.

Nous supposons que vous aurez besoin de connecter le Raspberry Pi à Internet avant et après la configuration du hotspot. La façon la plus simple d’y parvenir est de connecter le Raspberry Pi par câble Ethernet. De cette façon, il ne sera pas nécessaire de désactiver et d’activer la configuration Wi-Fi à chaque fois.

  • L’appareil peut être configuré de telle sorte qu’il utilise automatiquement l’interface Ethernet comme une passerelle vers Internet lorsqu’un câble est connecté.
  • Si vous avez besoin d’accéder à Internet via le Wi-Fi, vous devrez désactiver le hotspot et vous connecter via les outils standards de gestion du réseau.

Installation de hostapd et dnsmasq

Pour servir des clients sur un hotspot Wi-Fi local, il faut que le Raspberry Pi fonctionne comme :

  • un point d’accès
  • un serveur DHCP
  • un serveur DNS

Le point d’accès est géré par le paquet hostapd,tandis que les serveurs DHCP et DNS sont inclus dans le paquet dnsmasq. Cette section explique comment les installer et les configurer tous les deux. Pour des informations plus détaillées, référez-vous à la documentation en ligne sur Raspberry Pi.

sudo apt install dnsmasq hostapd

Configuration d’une IP statique

Tout d’abord, l’interface Wi-Fi du serveur wlan0 doit avoir une adresse IP constante et ne pas essayer de l’obtenir d’un autre serveur. C’est ce que l’on appelle une IP statique.

Elle est définie dans le fichier de configuration /etc/dhcpcd.conf, que vous pouvez éditer avec la commande ci-dessous.

sudo nano /etc/dhcpcd.conf

Utilisez les flèches pour naviguer jusqu’à la fin du fichier, puis copiez et collez le texte suivant et appuyez sur CTRL + X pour enregistrer et quitter. Dans cette configuration, l’adresse IP du serveur sur le réseai Wi-Fi est 192.168.4.1. Si vous voulez la modifier, sachez que d’autres modifications conséquentes détaillées dans la suite de ce didacticiel seront nécessaires.

interface wlan0
    static ip_address=192.168.4.1/24
    nohook resolv.conf, wpa_supplicant

Après avoir installé les nouveaux paquets hostapd et dnsmasq et configuré une IP statique, redémarrez le système.

sudo reboot

Configuration des services DHCP et DNS

Commencez par créer un nouveau fichier de configuration pour dnsmasq à l’endroit approprié et par l’éditer :

sudo nano /etc/dnsmasq.d/hotspot.conf

Copiez et collez le texte suivant, puis appuyez sur CTRL + X pour enregistrer et quitter.

interface=wlan0

# Gateway + DNS server
dhcp-option=3,192.168.4.1
dhcp-option=6,192.168.4.1

# specify the range of IPs that will be handed out
dhcp-range=192.168.4.2,192.168.4.200,255.255.255.0,24h

# Let the Raspberry Pi resolve to all DNS queries
address=/#/192.168.4.1

Ensuite, assurez-vous que dnsmasq n’interfère pas avec les requêtes DNS locales faites à partir du Pi :

sudo nano /etc/default/dnsmasq

Copiez et collez le texte suivant à la fin du fichier, puis appuyez sur CTRL + X pour enregistrer et quitter.

# do not overwrite /etc/resolv.conf so that local DNS still goes through
DNSMASQ_EXCEPT=lo

Configuration du point d’accès

Avertissement

Cela activera une nouvelle configuration réseau et annulera la possibilité de se connecter à une source en ligne en utilisant le Wi-Fi. La connexion à internet reste possible par le réseau câblé. Ce didacticiel comporte encore quelques étapes qui nécessitent une connectivité pour le téléchargement et la configuration de Nginx et Kolibri. Si le Pi est en ligne via le Wi-Fi, ne redémarrez pas l’appareil et n’exécutez pas les commandes systemctl qui se trouvent à la fin de cette section avant la toute fin du didacticiel. Vous devriez également télécharger et installer tous les logiciels et toutes les chaînes Kolibri nécessaires.

Astuce

Nous recommandons de connecter l’appareil à Internet par câble (Ethernet), afin que vous puissiez télécharger des contenus et des logiciels de manière fiable à tout moment.

Il vous faudra écrire un fichier de configuration avec des informations concernant votre réseau Wi-Fi local.

sudo nano /etc/hostapd/hostapd.conf

Dans le fichier, copiez-collez la configuration suivante pour spécifier le nom du réseau, son canal Wi-Fi (fréquence) et le mode de bande passante (nous recommandons le mode “g” à 2,4 GHz). Pour utiliser 5 GHz, indiquez hw_mode=a. Appuyez sur CTRL + X pour enregistrer et quitter.

interface=wlan0
driver=nl80211
ssid=Offline Library
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

# Remove the '#' in front of below lines to set a password 'Password'
# wpa=2
# wpa_passphrase=Password
# wpa_key_mgmt=WPA-PSK
# wpa_pairwise=TKIP
# rsn_pairwise=CCMP

Ensuite, éditez /etc/default/hostapd pour activer le fichier de configuration que vous venez d’écrire :

sudo nano /etc/default/hostapd

En bas du fichier, ajoutez le texte suivant et appuyez sur CTRL + X pour quitter et enregistrer.

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Enfin, démarrez le système service de points d’accès hostapd et le serveur DHCP et DNS dnsmasq :

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl restart dnsmasq

Établir un « portail captif »

Il n’est pas nécessaire de mettre en place un « portail captif », mais c’est une bonne idée, puisque son fonctionnement améliorera l’expérience des utilisateurs, qui n’auront pas à deviner l’emplacement (nom d’hôte / domaine) des services sur le Raspberry Pi. En outre, de nombreux appareils supportent l’affichage automatique de votre page d’accueil lors de la connexion au Wi-Fi.

Hotspot login dialog

Des boîtes de dialogue de ce type apparaîtront sur de nombreux appareils lorsqu’ils détecteront une connexion Wi-Fi efficace sans connexion Internet.

À l’étape précédente, nous avons configuré le Raspberry Pi pour indiquer aux appareils sur le hotspot local hors ligne que toute ressource qu’ils demandent, telle que http://domain.com, doit se résoudre à l’adresse IP statique du Raspberry Pi 192.168.4.1.

Tout d’abord, installez le serveur HTTP nginx :

sudo apt install nginx

Ensuite, il vous faudra modifier et adapter votre page de portail captif par défaut. Vous pouvez utiliser ce modèle (affiché dans la capture d’écran précédente). Copiez-collez le contenu du template en éditant /var/www/html/index.html:

sudo nano /var/www/html/index.html

Vous pouvez utiliser CTRL + MAJ + V pour coller du texte dans le terminal. Appuyez sur CTRL + X pour quitter et enregistrer.

Installation de Kolibri

  1. Tout d’abord, il faut mettre à niveau la bibliothèque python3-cffi, car elle est obsolète sur Raspbian. Mettez-la à jour comme ceci :

    sudo apt install libffi-dev python3-pip python3-pkg-resources dirmngr
    sudo pip3 install pip setuptools --upgrade
    sudo pip3 install cffi --upgrade
    
  2. Ajoutez notre PPA Ubuntu avec ces instructions spéciales :

    sudo su -c 'echo "deb http://ppa.launchpad.net/learningequality/kolibri/ubuntu bionic main" > /etc/apt/sources.list.d/learningequality-ubuntu-kolibri-bionic.list'
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys DC5BAA93F9E4AE4F0411F97C74F88ADB3194DD81
    sudo apt update
    
  3. Installez kolibri et kolibri-server :

    sudo apt install kolibri kolibri-server
    

    Pendant l’installation, faites les choix suivants si vous y êtes invité : Utilisez le port TCP par défaut 8080 pour Kolibri car le port 80 sera utilisé par Nginx plus tard dans ce didacticiel. Activez le service système Kolibri en sélectionnant Yes lorsque vous êtes invité à lancer Kolibri au démarrage. Utilisez l’utilisateur par défaut pi pour qu’il ait accès aux périphériques USB.

  4. Une fois la commande terminée, ouvrez le navigateur par défaut à http://127.0.0.1:8080 et procédez à la Configuration initiale de votre installation.

Note

Le service normal du système Kolibri exécutera des tâches en arrière-plan, mais son serveur HTTP est désactivé, car tout cela est géré par la configuration Nginx et UWSGI.

Note

Les problèmes suivants sont assez courants avec les Raspberry Pi :

  • L’heure du système n’est pas réglée correctement ou se réinitialise lors qu’on l’éteint. Cela entraîne des erreurs lors du téléchargement du logiciel. Par exemple, les certificats SSL pour les sources en ligne ne seront pas validés. Assurez-vous que le bon fuseau horaire figure bien dans /etc/fuseau horaire et que l’horloge est correctement réglée en exécutant sudo ntpd -gq.

  • L’espace de stockage est souvent limité. Si vous avez une source de stockage USB supplémentaire, vous pouvez utiliser la commande kolibri manage movedirectory ou créer vos propres liens symboliques pour stocker ailleurs le dossier de données.

    Avec la fonction de gestion intégrée :

    # Stop kolibri
    sudo systemctl kolibri stop
    # Move the data
    kolibri manage movedirectory /path/to/your/external_drive
    # Start kolibri
    sudo systemctl kolibri start
    
  • Les opérations d’E/S sont lentes: Typiquement, le transfert de fichiers de/vers une carte MicroSD ou un périphérique de stockage USB sur un Raspberry Pi forme un goulot d’étrangement. Une fois Kolibri opérationnel, ce ne sera plus le cas, mais vous en ferez l’expérience lorsque vous copierez le contenu initial de plusieurs gigaoctets. Tant le lecteur de carte SD que les ports USB vous limiteront à 50-80Mo/sec. D’après notre expérience, il importe peu que vous utilisiez le lecteur de carte SD principal pour le stockage ou d’autres médias connectés à votre port USB, car en principe, ils atteignent tous deux à peu près la même vitesse maximale. Cependant, vous constaterez peut-être des différences significatives dans la vitesse de chaque carte SD.

    Lors de la réplication d’installations, vous pouvez gagner du temps en connectant la carte SD ou le périphérique de stockage USB à un autre appareil à plus grande vitesse de transfert. Le processus de réplication sera décrit dans un guide à venir.

Configuration du domaine local Kolibri

Une fois l’installation terminée, vous pouvez rendre kolibri disponible au port :80, en plus du port :8080. Cela permettra de saisir, par exemple, un domaine kolibri.library dans la barre de localisation du navigateur, qui s’affichera grâce au portail captif.

Pour activer votre serveur web Nginx pour servir Kolibri, éditez /etc/nginx/sites-available/kolibri et ajoutez un hôte virtuel:

sudo nano /etc/nginx/sites-available/kolibri

Astuce

Vous pouvez utiliser un autre nom de domaine au lieu de kolibri.library. C’est le nom utilisé dans la configuration ci-dessous.

Copiez et collez les éléments suivants dans le fichier de configuration :

server {
  listen 80;
  listen [::]:80;

  server_name kolibri kolibri.library;

  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}

Appuyez sur CTRL + X pour quitter et enregistrer. Activez ensuite la nouvelle configuration en la reliant au répertoire des hôtes virtuels activés :

sudo ln -s /etc/nginx/sites-available/kolibri /etc/nginx/sites-enabled/

Enfin, rechargez Nginx pour que le nouveau site soit disponible :

sudo systemctl reload nginx

Désinstallation

Avec la ligne de commande : sudo apt-get remove kolibri.

Mise à jour

Lorsque vous utilisez la méthode d’installation PPA, les mises à niveau vers des versions plus récentes seront automatiques, à condition qu’un accès Internet soit disponible.

Rattachement d’un support de stockage USB

Beaucoup de gens conservent la carte MicroSD de 4 Go ou 16 Go fournie avec le Raspberry Pi. Pour accéder à davantage de contenu, tel que l’ensemble de la Khan Academy, vous pouvez utiliser un support de stockage USB – une clé ou un disque dur.

Astuce

Déplacer le contenu : Si vous avez une source USB de stockage supplémentaire, vous pouvez utiliser la commande kolibri manage movedirectory ou créer vos propres liens symboliques pour placer ailleurs le dossier de données.

Avec la fonction de gestion intégrée :

# Stop kolibri
sudo systemctl kolibri stop
# Move the data
kolibri manage movedirectory /path/to/your/external_drive
# Start kolibri
sudo systemctl kolibri start

Ou en utilisant des liens symboliques, vous devez démarrer et arrêter Kolibri et définir correctement les permissions :

# Stop kolibri
sudo systemctl kolibri stop
# Relocate the full Kolibri data and configuration user folder
sudo mv /home/pi/.kolibri /your/external/media/kolibri_data
# Ensure that the kolibri system service user owns the folder
sudo chown -R pi /your/external/media/kolibri_data
# Restore the original location with a symbolic link
sudo ln -s /your/external/media/kolibri_data /home/pi/.kolibri
# Start kolibri
sudo systemctl kolibri start

Autres conseils

Avertissements relatifs aux locales

Lors de l’installation du logiciel, vous pourriez rencontrer des avertissements relatifs à la locale du système tels que Can't set locale; make sure $LC_* and $LANG are correct!. En général, c’est parce qu’il manque des locales UTF-8 pour la locale système choisie. Vous pouvez y remédier en exécutant ceci à partir de la ligne de commande :

# Run this and select the appropriate missing UTF-8 locales
sudo dpkg-reconfigure locales

Désactivation du bureau graphique

Une fois que l’appareil Pi est déployé, l’environnement de bureau peut ne plus avoir d’utilité. Il peut être désactivé en toute sécurité. Cela permet d’économiser les ressources informatiques et l’électricité. Suivez les étapes suivantes pour désactiver ou activer le bureau :

# Run the configuration and navigate to the Boot option, selecting "Console"
sudo raspi-config

Accès à distance

Pour l’accès à distance, nous recommandons le protocole SSH (Secure Shell). Une fois installé et activé, vous pouvez gérer le Raspberry Pi sans y connecter d’écran et de clavier, mais à partir d’un ordinateur connecté à l’appareil par réseau local ou Wi-Fi. Vous pouvez utiliser sudo raspi-config pour activer le service système SSH. Pour en savoir plus, consultez la documentation officielle de Raspberry Pi.

Enregistrement de votre image pour la réplication

Une fois satisfait de votre configuration, vous souhaiterez peut-être déployer plusieurs Raspberry Pis dans différentes écoles, salles de classe, etc.

Astuce

Il est recommandé d’utiliser le même SSID Wi-Fi (que nous avons appelé Offline Library dans ce didacticiel) si vous installez plusieurs Raspberry Pis dans la même zone. Il faudra cependant les configurer sur des canaux Wi-Fi différents. Séparez-les par un comptage de 2, cela évitera les chevauchements de fréquences radio.

Avertissement

La réplication de l’enregistrement du dispositif Kolibri rendra la synchronisation en ligne imprévisible (échec).

Le mécanisme de synchronisation de Kolibri permet la synchronisation des données utilisateurs d’un appareil à l’autre par le biais d’un service en ligne. Celle-ci s’effectue automatiquement lorsque Kolibri détecte une connexion Internet. Vous devez désenregistrer (déprovisionner) votre appareil avant de copier la carte SD et le périphérique de stockage externe :

kolibri manage deprovision

Après avoir répliqué votre carte SD et votre périphérique de stockage externe, vous devez réenregistrer l’installation Kolibri sur chaque appareil. Ceci peut être fait sans supprimer les données installées :

# This will ask you questions
kolibri manage provisiondevice

Combien de clients sont supportés ?

Astuce

Nous vous recommandons de faire votre propre analyse comparative et de partager vos expériences dans nos Forums communautaires. Consultez en particulier ce fil de discussion sur le choix d’une carte MicroSD.

Il peut être difficile de prédire combien d’élèves pourront utiliser Kolibri sur un Raspberry Pi au même moment. Un obstacle majeur sera le Wi-Fi intégré au Raspberry Pi, qui pourrait supporter entre 5 et 10 appareils dans un rayon limité par la puissance de diffusion restreinte dudit Wi-Fi.

L’antenne Wi-Fi et la carte du Raspberry Pi n’ont pas la capacité de servir de nombreux clients. Par conséquent, il pourrait vous être utile de connecter un point d’accès plus puissant. Dans ce cas, modifiez le serveur DHCP (dnsmasq) pour qu’il écoute le périphérique eth0 au lieu de wlan0, en désactivant le Wi-Fi par la suppression de hostapd.

Un Raspberry Pi avec 1 Go de RAM peut supporter 10 clients lorsqu’il est exécuté derrière un point d’accès, mais vous aurez probablement besoin d’un appareil Raspberry Pi 4 plus récent si vous souhaitez en supporter plus de 10.

Étapes suivantes

Il est possible que vous souhaitiez installer d’autres services comme Kiwix. Si vous avez suivi ce didacticiel, vous pouvez installer Kiwix en même temps que Kolibri en téléchargeant le paquet kiwix-serve et en ajoutant une configuration Nginx similaire à celle que nous avons ajoutée pour Kolibri.

Le Raspberry Pi a l’avantage d’être peu coûteux et économe en énergie : Vous pouvez le connecter à l’énergie solaire ; vous pouvez également mettre en place un bon système de distribution de mises à jour de logiciels et de pièces de rechange par le biais de cartes SD et de supports USB externes. Vous pouvez également faire du Raspberry Pi lui-même un élément hot-swap dans un montage, de sorte que l’ensemble de l’appareil soit recueilli et remplacé lors des mises à jour. À vous de définir ces prochaines étapes, mais n’hésitez pas à partager vos idées dans notre Forum communautaire.