Si vous êtes lecteurs régulier, vous savez sûrement que j’ai des Nabaztag à la maison (huit…), et que les lapins demandent des serveurs pour fonctionner. Le problème, c’est que les serveurs de Violet sont assez foireux (genre 10 minutes de décalage sur l’heure) et que les serveurs OJN ne sont pas toujours pérennes. La solution ? Monter un serveur à la maison. J’ai pris un Raspberry Pi pour cet usage précis, pour plusieurs raisons : ce n’est pas très cher, ça consomme peu, c’est accessible quand on connaît un peu l’informatique.
J’ai utilisé le serveur OJN (OpenJabNab), une solution open source qui permet de monter un serveur maison pour les Nabaztag/tag (le modèle avec un nombril). C’est une solution assez efficace qui permet pas mal de choses, même si dans mon cas je me limite à l’heure et aux humeurs. Plusieurs serveurs publics utilisent cette solution, j’ai préféré l’utiliser en local.
J’ai trouvé pas mal d’informations sur le forum des lapins, je vous conseille d’y aller si vous avez un souci, je me suis pas mal inspiré de certains sujets pour ce tuto.
Matériel nécessaire :
Il faudra au minimum le matériel suivant :
- Un Raspberry Pi
- Une carte SD de 4 Go
- Un câble Micro USB et un chargeur d’iPhone
Dans mon cas, j’ai utilisé un Raspberry Pi modèle A avec un adaptateur Ethernet vers USB Apple qui était dans un tiroir. On a aussi besoin d’un clavier USB, d’un téléviseur/écran avec une prise HDMI (et son câble) et éventuellement d’un hub USB pendant quelques minutes.
J’ai aussi utilisé une horloge RTC (un truc capable de garder l’heure) parce que mon projet est de rendre le serveur totalement indépendant et utilisable sans accès à Internet, et donc sans possibilité de se synchroniser pour garder l’heure.
On va commencer par aller télécharger une image de Raspbian et un petit programme pour installer le système sur une carte SD.
Lancez le programme, sélectionnez l’image à installer, la carte SD de 4 Go et attendez. Ca prend quelques minutes.
Une fois que c’est fait, branchez le Raspberry Pi à un écran, avec sa sortie HDMI, branchez aussi un clavier et l’Ethernet. Il va falloir configurer l’appareil, c’est assez simple.
Il faut donc choisir expand_rootfs (pour tirer parti des 4 Go de mémoire), changer le mot de passe, régler l’heure, changer la taille de la mémoire vidéo en mettant 16 Mo uniquement, activer l’accès SSH et désactiver le lancement de l’interface graphique au boot.
Normalement, que ce soit avec un modèle B (Ethernet intégré) ou un modèle A (via USB), le Raspberry Pi se connecte au net. Il suffit de faire ping google.com
pour le vérifier.
On va maintenant fixer l’adresse IP du Raspberry Pi, on en aura besoin plus tard.
sudo nano /etc/network/interfaces
Il faut remplacer iface eth0 inet dhcp
par les valeurs suivantes, en fonction de vos choix. Dans mon cas, l’adresse IP du Raspberry Pi sera 192.168.1.61.
iface eth0 inet static
address 192.168.1.61
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.61
Vous sauvez (ctrl + o), vous quittez (ctrl + x), vous redémarrez.
sudo reboot
Vous pouvez ranger le clavier, l’écran, etc.
Passez sur votre Mac, lancez le terminal et tapez la commande suivante.
ssh pi@adresse_ip
Maintenant, tapez les commandes suivantes.
sudo apt-get update
sudo apt-get upgrade
On va installer un service Bonjour open source pour simplifier la gestion du Raspberry Pi depuis un Mac.
sudo apt-get install avahi-daemon
sudo update-rc.d avahi-daemon defaults
sudo nano /etc/avahi/services/ssh.service
On colle ça dans le fichier.
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h SSH</name>
<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group>
Maintenant, on change le nom, par exemple NabzPi.
Il faut changer dans deux fichiers.
sudo nano /etc/hosts
sudo nano /etc/hostname
Enfin, on redémarre et on peut se connecter en tapant la commande suivante.
ssh pi@NabzPi.local
Maintenant, on va passer à un truc énervant. Le Nabaztag/tag a besoin d’un nom de domaine pour se connecter à OJN. On a donc besoin d’un serveur DNS maison (ou, mais c’est moins pratique, d’un vrai nom de domaine).
sudo apt-get install bind9
sudo /etc/init.d/bind9 start
Créons le nom de domaine (utilisé uniquement en local) ojn.raspberry.pi.
sudo nano /etc/bind/named.conf.local
On ajoute ça dans le fichier. Attention, la deuxième partie est votre réseau à l’envers, donc 1.168.192 si vous avez des adresses en 192.168.1.x.
zone "raspberry.pi"{
type master;
file "/etc/bind/db.raspberry.pi";
};
zone "1.168.192.in-addr.arpa"{
type master;
file "/etc/bind/db.192.168.1.inv";
};
On crée le premier fichier.
sudo nano /etc/bind/db.raspberry.pi
Pensez à utiliser votre adresse IP.
$TTL 604800
@ IN SOA ojn.raspberry.pi. root.raspberry.pi. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ojn.raspberry.pi.
ojn IN A 192.168.1.61
192.168.1.61 IN A 192.168.1.61
On ajoute le second fichier.
sudo nano /etc/bind/db.192.168.1.inv
Le nombre sur la dernière ligne est la dernière partie de l’IP du Raspberry Pi.
$TTL 604800
@ IN SOA ojn.raspberry.pi. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ojn.raspberry.pi.
61 IN PTR ojn.raspberry.pi.
Maintenant, on oblige le raspberry Pi à utiliser son serveur DNS local.
sudo nano /etc/resolv.conf
Il faut ajouter l’adresse IP.
nameserver 192.168.1.61
Enfin, on active le serveur de cache pour que le Raspberry accède au net.
sudo nano /etc/bind/named.conf.options
Dans ce fichier, il faut décommenter forwarders et les lignes suivantes et utiliser les DNS de votre FAI (ou à défaut votre routeur).
forwarders {
80.10.246.1;
};
On redémarre le tout et on teste le DNS. Les deux commandes doivent donner un résultat.
ping google.com
ping ojn.raspberry.pi
On peut enfin passer au serveur lui-même.
Premièrement, il faut un serveur web. Vu que le serveur ne devrait pas accueillir des milliers de lapin, on va prendre un classique Apache.
sudo apt-get install apache2 php5 libapache2-mod-php5
On a quelques modifications à faire.
sudo /bin/hostname -F /etc/hostname
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Maintenant, on s’occupe d’OpenJabNab.
sudo apt-get install git
cd /var/www
sudo git clone https://github.com/OpenJabNab/OpenJabNab.git
On configure Apache.
sudo nano /etc/apache2/sites-available/default
Il faut modifier DocumentRoot /var/www par DocumentRoot /var/www/OpenJabNab/http-wrapper.
Il faut remplacer les deux premiers AllowOverride None par AllowOverride All
Maintenant, 3 commandes.
sudo a2dissite default
sudo a2ensite default
sudo /etc/init.d/apache2 restart
Vus pouvez vérifier que ça fonctionne en tapant l’adresse IP du Raspberry Pi dans votre navigateur. Vous aurez un message (normal) Problem with OpenJabNab ! si tout se passe bien.
On va maintenant compiler, prévoyez un peu de temps, la compilation peut prendre plusieurs dizaines de minutes.
sudo apt-get install qt4-qmake qt4-qtconfig qt4-designer qt4-dev-tools libqwt5-qt4-dev build-essential
cd /var/www/OpenJabNab/server
sudo qmake -r
sudo make
Quand c’est fait, un peu de configuration.
sudo cp openjabnab.ini-dist bin/openjabnab.ini
sudo nano bin/openjabnab.ini
Remplacer RealHttpRoot = ../../http-wrapper/ojn_local/ par RealHttpRoot = /var/www/OpenJabNab/http-wrapper/ojn_local/
Mettre ojn.raspberry.pi comme domaine.
Mettre les quatre paramètres suivants à true.
StandAloneAuthBypass=true
AllowAnonymousRegistration=true
AllowUserManageBunny=true
AllowUserManageZtamp=true
sudo nano bin/plugins/plugin_auth.ini
Ajouter dans le fichier.
[global]
authMethod=full
sudo chmod 777 /var/www/OpenJabNab/http-wrapper/ojn_admin/include
Maintenant, on lance OpenJabNab.
sudo ./bin/openjabnab
Une fois lancé (et sans erreur), on se connecter sur IP/ojn_admin dans le navigateur.
Il faut créer un compte utilisateur et vérifier que ça marche, normalement vous devriez avoir le texte suivant en bas de la page.
Bunnies » 0/1 • Ztamps » 0 • Plugins » 28/28
Si ça fonctionne, vous pouvez fermer le programme (ctrl + c).
Maintenant, on va ajouter un service Bonjour pour un accès plus simple.
sudo nano /etc/avahi/services/ojn.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name>Serveur Nabaztag</name>
<service>
<type>_http._tcp</type>
<port>80</port>
<txt-record>path=/ojn_admin/</txt-record>
</service>
</service-group>
sudo service avahi-daemon restart
Si ça marche, le serveur est accessible depuis Signets -> Bonjour dans Safari.
Enfin, on va ajouter les voix des Nabaztag/tag pour les humeurs.
cd /var/www/OpenJabNab/http-wrapper/ojn_local/plugins/
sudo wget http://down.dandu.be/nabaz-lang-mp3-fr.tar.gz
sudo wget http://down.dandu.be/nabaz-ojn-mp3-fr.tar.gz
sudo tar xvfz nabaz-lang-mp3-fr.tar.gz
sudo tar xvfz nabaz-ojn-mp3-fr.tar.gz
Maintenant, on relance le serveur, on se connecte et on va ajouter un lapin.
sudo /var/www/OpenJabNab/server/bin/openjabnab
Sur le serveur
Dans Account, donnez un nom au lapin et entrez son adresse MAC, elle est sous le lapin. Pas besoin des majuscules et des « : » dans l’adresse.
Sur le lapin
Allumer le lapin en pressant sa tête, il passe au bleu.
Connectez-vous en Wi-Fi sur le lapin (Nabaztag suivi d’un nombre).
Tapez l’adresse 192.168.0.1 dans le navigateur.
Click here to start -> Advanced configuration.
Il faut désactiver le DHCP et donner une IP fixe au lapin, mais surtout lui donner l’adresse IP du Raspberry Pi comme serveur DNS.
Enfin, il faut mettre ojn.raspberry.pi/vl comme serveur.
Cliquez sur Update and Start et attendez.
Si ça marche, le lapin va bouger ses oreilles.
Maintenant, vous pouvez aller configurer le lapin dans OpenJabNab.
Pour les voix : activer le plug-in Clock et configurez-le pour utiliser les voix Violet.
Activer ensuite le plug-in Send random mp3 at random intervals et configurez-le pour utiliser les voix Violet.
Pour le reste des options, je vous laisser chercher dans OpenJabNab, c’est assez complet.
Lancement automatique
Enfin, on va lancer le programme au boot du Raspberry Pi.
J’ai eu quelques soucis en le lançant via init.d, et le plus simple — étant donné que le Raspberry Pi ne sert qu’à ça dans mon cas — est de placer la ligne suivante dans rc.local, juste avant le exit 0. Pour ceux qui veulent un truc plus propre, le tutorial disponible là explique comment lancer le serveur en tant que daemon.
sudo nano /etc/rc.local
sudo /var/www/OpenJabNab/server/bin/openjabnab
Maintenant, il suffit de redémarrer le Raspberry Pi et vérifier que ça fonctionne.
Pour la maintenance, le serveur est accessible via Bonjour, ou — au pire — via une session en SSH. Dans mon cas, il tourne depuis une semaine environ, avec deux lapins connectés en permanence.
Sujet très intéressant, mais la ménagère de 50 ans ne peut pas y arrivée ;-)
Il serait sympa de faire une image disque finie, et de pouvoir ainsi la collée sur un SD de 4 Go ?
Remonté peut-être l’adresse IP statique à 192.168.1.201 par exemple pour gêner personne…
J’ai jamais essayé de faire une image disque, aucune idée de comment on fait ça.
Pour l’IP, j’ai juste mis une en dehors du range de mon DHCP.
Ce que je suis en train de faire, mais y a un peu de taf’, c’est rendre le tout totalement indépendant, en utilisant une carte Wi-Fi pour émettre un réseau directement depuis le Pi. Le seul souci, pour le moment, c’est que le Pi a pas de RTC, donc c’est pas génial (j’ai ajouté une horloge sur le mien)
> (genre 10 minutes de décalage sur l’heure)
Après un plantage du serveur cette nuit, ils l’ont redémarrer et à l’heure ;-)
Salut,
Je suis bloque a l’etape: ping ojn.raspberry.pi
il me renvoie « ping: unknown host ojn.raspberry.pi »
j’ai suivi toutes les etapes encore et encore sauf le partie sur bonjour car je ne suis pas sous mac :(
Une idee? ca fait tellement longtemps que mon nabaztag dort dans sa boite que je peine a le reveiller :(
Merci
En fait, il suffisait de commenter les dns de mon routeur dans /etc/resolv.conf car j’ajoutais l’IP du pi ensuite…. donc, pour le moment ca roule :)
Bonjour,
Merci pour ce très bon tuto.
Je suis en plein dedans et j’ai eu le même souci que rodskin.
Pour info, je suis parti de ce tuto pour refaire mon Bind :http://webadonf.net/2011/03/configurer-un-serveur-dns-avec-bind9-sur-debian-squeeze/
Si ça peut aider !!
Bonne soirée, ou nuit plutôt :-)
Sachawolf
Hello,
Bon je me suis couché à 1h30 pour mon lapin, si c’est pas de l’amour :-D
Tout fonctionne parfaitement à un détail près.
Il faut que je puisse mettre ce serveur OJN dans un vhost Apache2.
Est ce que quelqu’un a déjà essayé ? Cela fonctionnet’il ?
Merki d’avance,
Sachawolf
« Un câble microUSB et un chargeur d’iPhone » … Un chargeur d’iPhone… Tiens donc. 95% des chargeurs de smartphones sont en micro USB, pourquoi avoir choisi le seul chargeur qui ne l’est pas? :)
Le chargeur d’un iPhone n’est pas différent d’un autre chargeur : il a une prise USB sur laquelle on met un câble USB (ici un micro USB).
Il n’y a pas des « chargeurs micro USB » et « des chargeurs iPhone », juste des chargeurs avec une prise USB qui sort 5 W ;)
Bonjour,
Tout d’abord un grand merci, je m’étais cassé les dents pas mal de fois avec OJN et j’avais pour ainsi dire abandonné.
Je suis enconre néophite sur tout ce qui est service et script de démarrage.
Il me semble avoir suivi à la lettre votre script de la partie tuto en PDF mais apparement openjabnad ne démarre pas.
apparment, le manquerai un arguement au démarrage.
Merci pour votre aide.
Cordialement
maf
Honnêtement, ça fait un moment que je l’ai fait, donc je ne suis pas certain de pouvoir vous aider. Vous avez essayé le forum dédié, sur forumactif ?
Je cherche, je vous tiens au courant.
En tout cas, bravo pour votre réactivité.
Bonjour
pas mal l’idée, je suis pressé de tester .. le seul hic .. c’est que je ne trouve pas de karotz . Sur leboncoin, dès qu’il y en a un qui apparait .. il est déjà vendu ;)
personne sur ce site, n’a envie de se débarrasser de son karotz ;) , je suis preneur,
merci pour votre retour
bonne soirée
Bonjour,
J’ai installer sans problème le serveur sur le raspberry et il fonctionne bien. Le seul hic, c’est que le nabaztag ne se connecte pas au serveur (3 led vert au ventre et orange au net). Ça peut venir de quoi? J’ai une freebox que j’ai régler en version 1.
Merci par avance et Félicitation pour le tuto
Cordialement
Bonne journée
Bonsoir Pierre.
A votre avis en 2015, le nabaztag est-il toujours utile ou d’autres solutions sont plus adaptées?
Je demande ça car j’en ai une à la maison qui trouve ça trop mignon et qui en aimerait bien un. Mais est-ce judicieux.
Merci d’avance.
Ca n’a jamais été utile. Pour faire joujou, ça reste sympa, mais c’est totalement inutile : ça parle un peu, ça donne l’heure, mais c’est à peu près tout.
Après, on en trouve assez facilement pour 10/15 € sur LeBonCoin en cherchant un peu.
Merci pour votre tutoriel sur BIND9.
J’ai pu faire tourner mon nabaztag en local en attendant l’évolution matériel prévue prochainement ;)
Hello
bon, ça faisait longtemps que je voulais essayer d’avoir mon propre serveur OJN.
Je me suis lancé, sans trop y croire.
Là je coince sur Qt4 qui n’est plus dispo.
Ca commence à dater.
Quelqu’un a essayer de voir si ça tourne avec Qt5 ?
C’est quand même dommage d’avoir besoin de Qt… :(
Hello Everybody and Rabbits,
Je suis en train d’installer le serveur sur une Virtual Machine de la Freebox Delta, mais ça galère un peu… Notamment parce qu’il s’agit d’une Debian Bullseye au lieu d’une Raspbian.
Sinon, la commande sudo /etc/init.d/bind9 star ne veut rien dire…
Je reviendrai vers vous quand cela fonctionnera.
J’ai 4 V.1 et un V.2 qui tournent pour l’instant sur OpenJabNab, je peux faire plein d’essais.