Voici un petit tuto qui vous permettra de redonné vie à votre NabazTag:tag grâce à OpenJabNab (ne fonctionne pas avec les NabazTag v1, sans nombril)
1. Pré-requis
- Un raspberry pi avec son alimentation
- Une carde SD de 4Go ou plus
- L'image d'un raspbian et d'un logiciel pour transférer l'image sur la SD (http://www.raspberrypi.org/downloads/)
- un logiciel de prise de main à distance en SSH, j'utilise putty (le clique droit de la souris permet de coller se que l'on a copier).
- 1h à 2h (temps de compilation en fonction de la puissance de la machine)
2. Étapes préalables à faire sur le raspberry pi
Une fois connecté au raspberry pi (rpi), si c'est la première fois que vous le démarrez raspberry pi un petit utilitaire se lance automatiquement qui vous permet de gérer quelques points de la framboise (rpi).
I. Configuration du rpi
Si vous êtes déjà connecté en SSH, lancez la commande suivante :
- Code:
-
sudo raspi-config
Puis dans l'écran suivant, choisir en ce déplaçant avec les flèches haut et bas et en validant par entrer :
- "1 Expand Filesystem", pour tirer parti des 4 Go de mémoire.
- "2 Change User Password", pour changer le mot de passe de l'utilisateur "pi".
- "3 Enable Boot to Desktop/Scratch", "Console Text console", pour le lancement de l'interface graphique au boot.
- "4 Internationalisation Options", pour régler les variables locale (I1) et l'heure (timezone,, I2).
- "8 Advanced Options", puis "A3 Memory Split" afin de changer la taille de la mémoire vidéo en mettant 16 (pour 16Mo). OpenJabNab n'a pas besoin d'une interface graphique.
- "8 Advanced Options", puis "A4 SSH" activer l'accès SSH, si ce n'est pas déjà fait ^^
Avant d’installer OpenJabNab, il faut attribuer une adresse IP fixe au rpi, au NabazTag et éventuellement à un ordinateur de votre réseau pour la configuration via navigateur.
Vous avec deux solutions, soit vous modifiez les fichiers de configuration de l'interface réseau de votre rpi pour qu'il utilise une IP fixe, soit vous le faite via votre routeur en attribuant un baux static à l'adresse MAC du rpi. Choix plus judicieux car cela permet, en plus de ne pas a avoir à modifier les fichiers de conf à chaque réinstallation du rpi, et d'en attribuer une aussi au NabazTag.
Voici ma configuration réseau (bien sûr à modifier selon votre propre configuration réseau dans les fichiers suivants) :
Routeur : 192.168.0.254
Ordinateur : 192.168.0.1
Raspberry pi : 192.168.0.199
NabazTag : 192.168.0.190
Si vous voulez quand même mettre une IP fixe :
- Code:
-
sudo nano /etc/network/interfaces
Contenu du fichier :
- Code:
-
auto lo
iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.199
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
dns-nameservers 192.168.0.199 192.168.0.254
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
- Code:
-
sudo nano /etc/resolv.conf
Contenu du fichier :
- Code:
-
nameserver 192.168.0.199
nameserver 192.168.0.254
II. Installation du serveur DNS bind9
1) Lancement de l'installation de bind9
- Code:
-
sudo apt-get install bind9
2) Configuration de bind9
- Code:
-
sudo nano /etc/bind/named.conf.local
Contenu du fichier :
- Code:
-
zone "raspberry.pi"{
type master;
file "/etc/bind/db.raspberry.pi";
};
zone "0.168.192.in-addr.arpa"{
type master;
file "/etc/bind/db.192.168.0.inv";
};
Dans le fichier précédent, on a fait mention à deux fichiers : db.raspberry.pi et db.192.168.0.inv, on va donc les créer.
- Code:
-
sudo nano /etc/bind/db.raspberry.pi
Contenu du fichier :
- Code:
-
$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.0.199
192.168.0.199 IN A 192.168.0.199
- Code:
-
sudo nano /etc/bind/db.192.168.0.inv
Contenu du fichier :
- Code:
-
$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.
199 IN PTR ojn.raspberry.pi.
Le 199 de la dernière ligne correspond au dernier digit de l'adresse IP de mon rpi (à modifier selon votre config réseau).
3) On lance le serveur
- Code:
-
sudo /etc/init.d/bind9 start
Il se lancera ensuite automatiquement au démarrage
4) On redémarre le rpi
- Code:
-
sudo reboot
On va tester le bon fonctionnement du serveur DNS :
- Code:
-
ping ojn.raspberry.pi
Attention, ce n'est pas comme sous Windows, ça ne s'arrête pas tout seul au bout de la 4ème
requête. Terminer avec un Ctrl+C.
On peut tester le ping depuis votre PC (le mien est sous Windows), ne pas oublier de modifier les DNS de l'interface réseau. On ping l'IP du rpi pour voir si la liaison entre les deux fonctionne et après on ping le serveur DNS du rpi (ojn.raspberry.pi). Si ça ne fonctionne pas, il y a un problème de configuration de bind9 sur le rpi.
3. Installation d' OpenJabNab
Personnellement, pour bien séparer les sites web sur le rpi et s'y retrouver plus facilement, j'ai préféré créer un utilisateur nommé 'ojn', bien sûr c'est facultatif.
I. Création de l'utilisateur 'ojn' (facultatif)
1) On passe en administrateur
- Code:
-
su
2) Création de l'utilisateur 'ojn'
On crée l'utilisateur 'ojn', on le rajoute dans des groupes (propre à raspbian, à modifier si vous utilisez une autre distribution) et on édite le fichier des utilisateurs de la commande 'sudo'.
- Code:
-
adduser ojn
- Code:
-
usermod -G adm,dialout,sudo,plugdev,users,input,spi,gpio ojn
- Code:
-
nano /etc/sudoers
Rajoutez "ojn ALL=(ALL) NOPASSWD: ALL" à la fin du fichier, cela permettra de ne pas taper le mot de passe de l'utilisateur 'ojn' à chaque fois que l'on fait appel à la commande 'sudo'.
II. Installation de l'environnement d'OpenJabNab
1) On se connecte avec l'utilisateur 'ojn'
- Code:
-
su ojn
2) Installation du serveur web et configuration de ce dernier
On installe le serveur web (ici apache v2), on active le mode rewrite d'apache et on le redémarre pour que le mode rewrite soit prit en compte.
- Code:
-
sudo apt-get install apache2 php5 libapache2-mod-php5
- Code:
-
sudo a2enmod rewrite
- Code:
-
sudo service apache2 restart
3) Installation de quelques packages supplémentaire
On installe quelques packages ou on les met à jour pour la compilation d'OpenJabNab (s'ils sont déjà présent sur la distribution, ça le détectera et ça ne les téléchargera pas).
- Code:
-
sudo apt-get install git qt-sdk qt4-qmake qt4-qtconfig qt4-designer qt4-dev-tools libqwt5-qt4-dev build-essential build-essential g++
4) Téléchargement d'OpenJabNab
On télécharge les sources d'OpenJabNab à la racine du dossier de l'utilisateur courant.
- Code:
-
cd
- Code:
-
sudo git clone https://github.com/OpenJabNab/OpenJabNab.git
Optionnel, ajouter les voix des Nabaztag/tag pour les humeurs.
- Code:
-
cd ~/OpenJabNab/http-wrapper/ojn_local/plugins/
- Code:
-
sudo wget http://down.dandu.be/nabaz-lang-mp3-fr.tar.gz
- Code:
-
sudo wget http://down.dandu.be/nabaz-ojn-mp3-fr.tar.gz
- Code:
-
sudo tar xvfz nabaz-lang-mp3-fr.tar.gz
- Code:
-
sudo tar xvfz nabaz-ojn-mp3-fr.tar.gz
5) On redonne la propriété du dossier à l'utilisateur 'ojn'
- Code:
-
sudo chown -R ojn:ojn ~/OpenJabNab/
6) Préparation à l'exécution d'OpenJabNab
On donne les droits de lecture-écriture au répertoire 'ojn_include' qui sera utilisé par le service web pendant le fonctionnement du serveur OpenJabNab.
- Code:
-
sudo chmod 0777 ~/OpenJabNab/http-wrapper/ojn_admin/include
7) Ajout dans apache le site d'OpenJabNab
On commence par créer un fichier de configuration d'ojn dans le dossier d'apache des sites disponible.
- Code:
-
sudo nano /etc/apache2/sites-available/ojn
Contenu du fichier :
- Code:
-
DocumentRoot /home/ojn/OpenJabNab/http-wrapper/
ServerName ojn.raspberry.pi
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Maintenant, on ajoute la configuration du site d'ojn dans apache et on relance apache pour que la modification soit prise en compte.
- Code:
-
sudo a2ensite ojn
- Code:
-
sudo service apache2 reload
Si vous avez un message d'erreur qui ressemble à ceci :
"Reloading web server config: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName"
Tapez ceci pour résoudre le problème :
- Code:
-
sudo sh -c 'echo "ServerName localhost" >> /etc/apache2/conf.d/name' && sudo service apache2 restart
Compilation d'OpenJabNab
On va dans le dossier d'OpenJabNab, on demande la génération des makefiles pour la compilation et on compile. Sur un rpi modèle B révision 2 (donc ethernet + 512Mo de RAM), ça prends environs 1 heure.
- Code:
-
cd ~/OpenJabNab/server
- Code:
-
qmake -r
- Code:
-
make
9) Configuration d'OpenJabNab
On va créer un fichier 'ini' sur lequel le serveur s’appuiera. A modifier si vous avez créé un autre nom de domaine.
- Code:
-
sudo nano ~/OpenJabNab/server/bin/openjabnab.ini
Contenu du fichier :
- Code:
-
[Config]
httpListener = true
httpApi = true
httpVioletApi = true
xmppListener = true
RealHttpRoot = ../../http-wrapper/ojn_local/
HttpRoot = ojn_local
HttpPluginsFolder = plugins
StandAloneAuthBypass = true
AllowAnonymousRegistration = true
AllowUserManageBunny = true
AllowUserManageZtamp = true
SessionTimeout = 500
TTS = acapela
MaxNumberOfBunnies = 64
MaxBurstNumberOfBunnies = 72
[OpenJabNabServers]
PingServer = ojn.raspberry.pi
BroadServer = ojn.raspberry.pi
XmppServer = ojn.raspberry.pi
ListeningHttpPort = 8080
ListeningXmppPort = 5222
[Log]
LogFile = openjabnab.log
LogFileLevel = Debug
LogScreenLevel = Warning
DisplayCronLog = false
Ajoutez cette ligne au fichier hosts (sous windows, il faut le faire avec un éditeur en tant qu’administrateur, et le fichier est dans ce répertoire : C:\Windows\System32\drivers\etc)
- Code:
-
192.168.0.199 ojn.raspberry.pi
Se rendre à l'adresse suivante avec votre navigateur :
- Code:
-
http://ojn.raspberry.pi/ojn_admin/install.php
Normalement, il n'y a rien à modifier puis validez.
10 ) On lance le serveur OpenJabNab
On se connecte au rpi avec l'utilisateur 'ojn' ou 'pi', selon votre configuration de votre rpi. On va dans le dossier d'OpenJabNab et on démarre le service.
- Code:
-
cd ~/OpenJabNab/server/bin
- Code:
-
./openjabnab
Le serveur doit se lancer sans erreur.
Retour sur l'ordinateur, on clique sur le lien (vers http://ojn.raspberry.pi/ojn_admin/index.php). Les statistiques doivent être affichées en bas, preuve que le serveur fonctionne.
'Bunnies » 0/1 • Ztamps » 0 • Plugins » 28/28 '
11) Configuration de NabazTag
Pour accéder à la configuration du lapin, on appui sur le bouton du NabazTag avant de mettre son alimentation, puis quand les led clignote en bleu, relâcher le bouton, puis connectez vous en wifi dessus (192.168.0.1) avec un appareil. Personnellement j'ai utilisé mon smartphone pour accéder au réseau wifi du NabazTag.
Voici la configuration à mettre dans « advanced » (lien en bas à droite) :
DHCP enabled : no
Local IP : 192.168.0.190
Local Mask : 255.255.255.0
Local gateway : 192.168.0.254
DNS server : 192.168.0.199
Violet Platform : ojn.raspberry.pi/vl
Une dernière information : le serveur ojn sur le rpi s’arrête avec un Ctrl + C
4. Lancement automatique
I. transforme un programme en service
Le but de la manœuvre est de faire démarre le service OpenJabNab précédemment créer à chaque démarrage du rpi.
1) On crée le fichier correspondant au service.
On commence par créer un fichier 'openjabnab' dans le dossier de l'utilisateur.
- Code:
-
sudo nano ~/openjabnab
Contenu du fichier :
- Code:
-
#! /bin/sh -e
### BEGIN INIT INFO
# Provides: openjabnab
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Démarrage OJN automatique
# Description: Lance le serveur OpenJabNab au démarrage du RPi.
### END INIT INFO
DAEMON="/home/ojn/OpenJabNab/server/bin/openjabnab" #ligne de commande du programme
DIR="/home/ojn/OpenJabNab/server/bin/"
DEAMON_OPT="" #argument à utiliser par le programme
DAEMONUSER="ojn" #utilisateur du programme
DEAMON_NAME="openjabnab" #nom du programme (doit être identique à l'exécutable)
PATH="/sbin:/bin:/usr/sbin:/usr/bin" #ne pas toucher
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
d_start () {
log_daemon_msg "Démarrage du service OpenJabNab"
start-stop-daemon -background --chdir $DIR --name $DEAMON_NAME --start --quiet --user $DAEMONUSER --exec $DAEMON -
log_end_msg $?
}
d_stop () {
log_daemon_msg "Arrêt du service OpenJabNab"
start-stop-daemon --chuid ojn:ojn --name $DEAMON_NAME --stop --retry 5 --quiet --name $DEAMON_NAME
log_end_msg $?
}
case "$1" in
start|stop)
d_${1}
;;
restart|reload|force-reload)
d_stop
d_start
;;
force-stop)
d_stop
killall -q $DEAMON_NAME || true
sleep 2
killall -q -9 $DEAMON_NAME || true
;;
status)
status_of_proc "$DEAMON_NAME" "$DAEMON" "system-wide $DEAMON_NAME" && exit 0 || exit $?
;;
*)
echo "Utilisation :
/etc/init.d/$DEAMON_NAME {start|stop|force-stop|restart|reload|force-reload|status}"
exit 1
;;
esac
exit 0
2) On le teste
Pour le tester, il faut le rendre exécutable.
- Code:
-
sudo chmod 0755 ~/openjabnab
- Code:
-
./openjabnab start
Vérifier que le serveur fonctionne en allant sur http://ojn.raspberry.pi/ojn_admin avec votre navigateur.
On arrête le service sur le rpi.
- Code:
-
./openjabnab stop
3) On l'ajoute au démarrage du rpi
Pour automatiser son lancement automatique, il faut copier le fichier 'openjabnab' dans le dossier '/etc/init.d/', lui rajouter les options d'exécution (ici celles par défaut de l'outil update-rc.d), puis on redémarre le rpi.
- Code:
-
sudo cp openjabnab /etc/init.d/openjabnab
- Code:
-
sudo update-rc.d openjabnab defaults
- Code:
-
sudo reboot
Au redémarrage, vérification :
- Code:
-
/etc/init.d/openjabnab status
Qui doit retourner :
[ ok ] /home/ojn/OpenJabNab/server/bin/openjabnab is running.
A vous de joué !