Serveur Saint-Ouen

De OLPC France Wiki
Aller à : navigation, rechercher

Cette page décrit les aspects techniques de la mise en place du serveur OLPC France à l'école de Saint-Ouen.

Côté matériel

Le TonidoPlug 2 fait partie des « plug computer (lien Wikikpédia) », des petites machines à basse consommation, sans écran ni clavier, qui permettent de délivrer du contenu localement.

Le TonidoPlug 2 permet d'émettre un réseau wifi, mais cette fonction est annoncée comme très expérimentale - pour ne pas prendre de risque, nous avons branché le serveur sur un routeur DLINK solide, facile à configurer, pouvant prendre en charge de nombreuses connexions.

Côté matériel, aucun souci à signaler, hormis le fait que le bouton "power off" du plug… ne sert à rien.

Côté logiciel

Le Tonidoplug est livré avec une Debian 6 et une interface web dédiée.

Pour pouvoir installer nginx, ffmpeg et d'autres logiciels, il nous fallait passer à Debian 7.0 (Wheezy).

Les soucis rencontrés :

  • pas de montage automatique de la clef USB avec le logiciel livré.
  • la mise à jour vers Debian Wheezy ne met pas à jour le noyau Linux (issu du portage de Debian pour les architectures ARM - voir ici).
  • le code pour convertir le plug en point d'accès wireless ne fonctionne plus après la mise à jour Debian 6.0 vers Debian 7.0.

Contenus

Kiwix

Sur le serveur, nous avons installé Kiwix, téléchargé une version hors ligne de Vikidia et une version hors ligne de Wikipédia, les deux avec les images complètes et datant de mars 2016.

Sur le serveur, kiwix est lancé au démarrage depuis le fichier /etc/init.d/rc.local avec deux commandes de ce genre :

kiwix-serve --port=2345 /path/to/vikidia_fr_all_nopic_2016-04.zim

Canopé et Kahn Academy

Nous avons téléchargé des vidéos de la Kahn Académie en français et de la collection "Les fondamentaux" du réseau Canopé.

Pour chacune de ces vidéos, nous avons soit téléchargé, soit créé des vignettes.

Nous avons aussi un fichier .js qui contient les métadonnées liées à ces vidéos : titre, catégorie, etc. Ce fichier sera sollicité par l'activité VideoViewer pour savoir où trouver les vidéos, les vignettes, etc.

Vidéos perso

L'enseignante de Saint-Ouen a sélectionné des vidéos dont elle nous a envoyé les URL pour que nous les téléchargions et les mettions sur le serveur.

Elles sont dans un répertoire qui pourra être enrichi de nouvelles vidéos au format .ogg uploadées par l'enseignante quand elle le souhaite : le fichier .js et les vignettes de ces nouvelles vidéos sont automatiquement générés sur le serveur.

VideoViewer

Lionel a développé l'activité VideoViewer qui permet de présenter des bibliothèques de ressources vidéos via le XO.

J'ai modifié le fichier constant.js en ajoutant ces bases :

    {
    	name: "khanacademy",
    	title: "Khan Academy",
    	database: "http://192.168.100.137/kafr/database.js",
    	videos: "http://192.168.100.137/kafr/videos/%id%",
    	images: "http://192.168.100.137/kafr/images/%id%.png"
    },
    {
    	name: "canope",
    	title: "Canopé",
    	database: "http://192.168.100.137/canope/database.js",
    	videos: "http://192.168.100.137/canope/videos/%id%",
    	images: "http://192.168.100.137/canope/images/%id%.png"
    },
    {
    	name: "perso",
    	title: "Saint-Ouen",
    	database: "http://192.168.100.137/perso/database.js",
    	videos: "http://192.168.100.137/perso/videos/%id%",
    	images: "http://192.168.100.137/perso/images/%id%.png"
    }

Code

Les deux scripts ci-dessous sont régulièrement appelés via cron pour créer des vignettes à partir des éventuelles nouvelles vidéos, et mettre à jour le fichier database.js dédié aux vidéos perso ajoutées par l'enseignant.

olpc-generate-previews.sh

    #!/bin/bash
    
    cd /media/disk2part1/www/perso/videos/
    
    for f in *.ogg; do
        if [ -f "../images/${f%.ogg}.png" ]
        then
    	echo "Skip existing preview picture"
        else
    	ffmpeg -i "$f" -ss 00:00:15 -t 1 "../images/${f%.ogg}.png";
        fi
    done

olpc-generate-json.js

    #!/bin/bash
    
    cd /media/disk2part1/www/perso/videos/
    
    echo "[" > ../database.js
    
    entry="{\"id\":\"%s\", \"image\":\"%s\", \"category\":\"%s\", \"title\":\"%s\"},\\n"
    
    for f in *.ogg; do
        if [[ "${f%.ogg}" =~ ^(.+)---(.+)$ ]]
        then
    	printf "$entry" "${f%.ogg}" "${f%.ogg}" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" >> ../database.js;
        else
    	printf "$entry" "${f%.ogg}" "${f%.ogg}" "" "$f" >> ../database.js;
        fi
    done
    
    # Adding "" so that the last comma does not break the file
    echo "\"\"]" >> ../database.js