User Tools

Site Tools


documentation:raspberry_pi:camera_de_surveillance:4_-_administration_web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

documentation:raspberry_pi:camera_de_surveillance:4_-_administration_web [2017/07/14 19:45]
documentation:raspberry_pi:camera_de_surveillance:4_-_administration_web [2019/08/21 23:05] (current)
Line 1: Line 1:
 +<note warning>
 +**Page non maintenue**
 +Voir [[documentation:​raspberry_pi:​camera_de_surveillance:​4_-_picam-js|]] pour la nouvelle version
 +</​note>​
 +===== Administration Web (Obsolète) =====
 +Cette partie est optionnelle. Elle va vous permettre de mettre en place un petit serveur web sur votre Raspberry afin de visualiser votre webcam mais aussi de pouvoir activer/​désactiver la surveillance et connaître la date de la dernière intrusion.
 +
 +==== Lighttpd ====
 +Ici nous n'​utiliserez pas Apache qui est bien trop lourd mais lighttpd.
 +
 +=== Installation ===
 +<code bash>$ sudo apt-get install lighttpd php5-cgi php5-curl</​code>​
 +
 +Activez ensuite le support de php :
 +<code bash>$ sudo lighty-enable-mod fastcgi
 +$ sudo lighty-enable-mod fastcgi-php
 +$ sudo /​etc/​init.d/​lighttpd force-reload</​code>​
 +
 +Pour vérifier le bon fonctionnement de lighttpd, dans votre navigateur tapez simplement l'url du serveur :
 +<​code>​http://​192.168.1.6/</​code>​
 +
 +Vous devriez alors arriver sur la page par défaut de lighttpd.
 +
 +=== Authentification ===
 +Dans cette partie vous allez modifier la configuration de lighttpd afin que celui-ci vous demande un login/mot de passe lorsque vous accéderez à l'​interface.
 +<code bash>$ sudo nano -w /​etc/​lighttpd/​lighttpd.conf</​code>​
 +Dans le bloc **server.modules** rajoutez "​**mod_auth**"​
 +<code lighttpd>​server.modules = (
 +        "​mod_auth",​
 +)
 +</​code>​
 +
 +A la fin du fichier rajoutez les lignes suivantes :
 +<​code>​
 +auth.debug = 2
 +auth.backend = "​plain"​
 +auth.backend.plain.userfile = "/​home/​pi/​.lighttpdpassword"​
 +auth.require = ( "/"​ =>
 +        (
 +                "​method"​ => "​basic",​
 +                "​realm"​ => "​Password protected area",
 +                "​require"​ => "​user=user"​
 +        )
 +)
 +</​code>​
 +N'​oubliez pas de remplacer "​user=user"​ par l'​utilisateur de votre choix (exemple : "​user=darkou"​). Utilisez le même login/​password que dans le fichier motion.conf.
 +
 +Créez ensuite le fichier **/​home/​pi/​.lighttpdpassword** qui contiendra le mot de passe associé à l'​utilisateur "​user"​ :
 +<​code>​$ nano -w /​home/​pi/​.lighttpdpassword
 +user:​password
 +</​code>​
 +
 +Redémarrez lighttpd :
 +<​code>​$ sudo /​etc/​init.d/​lighttpd force-reload</​code>​
 +
 +Actualisez la page dans votre navigateur, vous devriez avoir une demande de mot de passe.
 +
 +=== Reverse proxy ===
 +Cette partie est facultative aussi. Le reverse proxy va vous permettre de pouvoir visualiser votre caméra depuis le web en ouvrant seulement le port 80 (http) de votre box. Il va également nous permettre de gérer notre caméra (activer/​désactiver la détection, ... )
 +
 +Vous devez encore une fois modifier le fichier lighttpd.conf :
 +<​code>​$ sudo nano -w /​etc/​lighttpd/​lighttpd.conf</​code>​
 +
 +Afin d'​activer le module **mod_proxy** :
 +<​code>​
 +server.modules = (
 +        "​mod_proxy",​
 +)
 +</​code>​
 +
 +A la fin du fichier rajoutez ces lignes :
 +<​code>​
 +$HTTP["​url"​] =~ "​^/​cam"​ {
 +    proxy.server ​ = ( ""​ =>
 +        (( "​host"​ => "​127.0.0.1",​ "​port"​ => 8082 ))
 +    )
 +}
 +$HTTP["​url"​] =~ "​^/​config"​ {
 +    proxy.server ​ = ( ""​ =>
 +        (( "​host"​ => "​127.0.0.1",​ "​port"​ => 8081 ))
 +    )
 +}
 +</​code>​
 +
 +Rechargez la configuration de lighttpd :
 +<​code>​$ sudo /​etc/​init.d/​lighttpd force-reload</​code>​
 +
 +Dans votre navigateur essayez l'url suivante :
 +<​code>​http://​192.168.1.6/​cam</​code>​
 +
 +Vous devriez alors voir votre caméra.
 +
 +=== Motion ===
 +Maintenant que votre caméra est accessible directement via lighttpd vous pouvez désactiver dans Motion le fait que le flux soit visualisable depuis le réseau et son authentification. Votre caméra étant déjà protégé via l'​authentification de lighttpd une double authentification sera plus contraignante qu'​autre chose.
 +
 +<​code>​$ sudo nano -w /​etc/​motion.conf</​code>​
 +Cherchez le bloc : "​**Live Stream Server**"​ (ligne ~513)
 +
 +Puis forcez les valeurs suivantes :
 +<​code>​
 +stream_localhost on
 +stream_auth_method 0
 +</​code>​
 +
 +<note warning>​Méthode non valable pour HTTP Based Control</​note>​
 +Cherchez ensuite le bloc "​**HTTP Based Control**"​ (juste en dessous)
 +Puis forcez la valeur suivante :
 +<​code>​
 +webcontrol_localhost on
 +
 +</​code>​
 +
 +Sauvegardez puis relancez motion :
 +<​code>​$ sudo /​etc/​init.d/​motion restart</​code>​
 +
 +Maintenant, si vous essayer de vous connecter sur **http://​192.168.1.6:​8082/​** avec votre navigateur vous aurez une erreur, par contre **http://​192.168.1.6/​cam** reste fonctionnel.
 +
 +===== Interface Web =====
 +Nous allons maintenant récupérer les sources de l'​interface web.
 +
 +==== Installation ====
 +<​code>​$ cd /​var/​www/​html
 +$ sudo rm index.lighttpd.html
 +$ sudo git clone https://​github.com/​Dbroqua/​picam-php.git .</​code>​
 +
 +Rechargez la page web ( http://​192.168.1.6/​ ), vous devriez apercevoir votre interface web avec la caméra et diverses informations.
 +
 +==== Configuration ====
 +=== conf.json ===
 +La version actuelle du picam-php permet la gestion de plusieurs caméra. Sur chacune de vos Raspberry équipé de Motion vous devrez installer picam-php.
 +
 +Le fichier conf.json que vous allez créer doit être placé au même niveau que le fichier index.html.
 +
 +Ce fichier contient la liste des Raspberry a monitorer ainsi que leur configurations.
 +== Serveur maitre ==
 +La configuration du serveur maître contient la description du motion local mais aussi la liste des motion distants.
 +<​code>​
 +[
 +  {
 +    "​type":​ "​local",​
 +    "​name":​ "​Living Room",
 +    "​motionAdminUri":​ "​http://​127.0.0.1:​8081/​0/​detection/",​
 +    "​service":​ "sudo /​etc/​init.d/​motion",​
 +    "​pid_file":​ "/​var/​run/​motion/​motion.pid",​
 +    "​intrusion_directory":​ "/​media/​freebox/",​
 +    "​intrusion_file":​ "/​media/​freebox/​intrusion.date"​
 +  },
 +  {
 +    "​type":​ "​net",​
 +    "​name":​ "Slave 1",
 +    "​scheme":​ "​http://",​
 +    "​host":​ "​192.168.1.4",​
 +    "​port":​ "​80",​
 +    "​login":​ "​user",​
 +    "​password":​ "​password",​
 +    "​motionAdminUri":​ "​http://​192.168.1.4:​8081/​0/​detection/"​
 +  }
 +]
 +</​code>​
 +
 +Quelques explications maintenant sur les différents paramètres possibles :
 +  * type : local/net (local pour la machine qui héberge le site et motion, net pour tout autre machine)
 +  * name : Nom de la caméra
 +  * scheme : type de protocole utilisé pour atteindre une machine distante ( http:// ou https:// ) **machine distante uniquement**
 +  * host : ip de la machine distante **machine distante uniquement**
 +  * port : port de la machine distante **machine distante uniquement**
 +  * login : login pour joindre la machine distante **machine distante uniquement**
 +  * password : mot de passe pour joindre la machine distante **machine distante uniquement**
 +  * motionAdminUri : url pour joindre l'​interface web de Motion ( http://ip de la machine:​8081/​0/​detection/​ )
 +  * service : binaire pour lancer/​arrêter motion
 +  * pid_file : emplacement du fichier pid de motion
 +  * intrusion_directory : emplacement ou son stockés le fichiers
 +  * intrusion_file : chemin vers le fichier contenant la date de la dernière intrusion
 +  ​
 +Au chargement de la page les différentes caméras seront automatiquement affichées. ​
 +
 +Afin de valider votre fichier json vous pouvez utiliser ce site : [[http://​jsonlint.com/​]] ​
 +== Serveurs esclaves ==
 +La configuration d'un serveur esclave est plus simple car elle ne contient que le bloc "​local"​.
 +<code json>
 +[
 +  {
 +    "​type":​ "​local",​
 +    "​name":​ "​Esclave",​
 +    "​motionAdminUri":​ "​http://​127.0.0.1:​8081/​0/​detection/",​
 +    "​service":​ "sudo /​etc/​init.d/​motion",​
 +    "​pid_file":​ "/​var/​run/​motion/​motion.pid",​
 +    "​intrusion_directory":​ "/​media/​freebox/",​
 +    "​intrusion_file":​ "/​media/​freebox/​intrusion.date"​
 +  }
 +]
 +</​code>​
 +
 +=== système ===
 +Afin de rendre les boutons start/stop actifs vous allez ajouter l'​utilisateur www-data au groupe sudo :
 +<note important>​Attention ! toute fausse manipulation pourrait bloquer le pi</​note>​
 +<code bash>$ sudoedit /​etc/​sudoers</​code>​
 +Puis rajoutez à la fin du fichier :
 +<​code>​www-data ALL=(ALL) NOPASSWD: ALL</​code>​
 +
 +Vos boutons sont maintenant actifs.