Serveur Domoticz pour TD/TP en BTS SN
But: monter un serveur Domoticz avec des modules sonoff a base de esp8266 pour faire des TD / TP en BTS SN ( ancien BTS Electronique ).
le Raspberry communique avec les modules sonoff avec un réseau wifi séparé du réseau local.
Matériel nécessaire :
– Un Raspberry PI 3 ( ou un autre avec dongle wifi ) avec carte SD de 8Go ( actuellement ~3.5Go utilisé )
– Un écran 7″ officiel tactile pour le Raspberry pi ( optionnel )
– plusieurs modules « SonOff » pour la partie purement Domotique ( attention présence de tension secteur 220v )
le tuto est découpée en plusieurs parties a suivre dans l’ordre
-Installation du Raspberry PI
-Début du paramétrage
-Installation de Node-Red
-Installation de Webmin
-Hotspot Wifi et DHCP
-Serveur Web nginx
-Installation phpmyadmin depuis les sources
-Configuration de Samba
-Installation de eZServerMonitor
-l’ecran 7″ tactile officiel du Rapsberry pi
-Test divers
-Mise à jour de domoticz par tache cron ( Optionel )
-Sauvegarde des bases de données SQL
Partie 1 ) Installation du Raspberry PI
On récupère l’image « raspbian lite » sur https://www.raspberrypi.org/downloads/raspbian/
Une fois l’image récupérée on va la copier sur la carte SD , avec Win32diskimage ou autre logiciel
On accède a la partition FAT32 de la carte SD et on crée un fichier texte que l’on appelle ssh , cela activera le serveur ssh du Pi au démarrage
On met la carte SD dans le Raspberry et on démarre le système , si l’écran est branché on peux suivre le processus , sinon attendre environ 5mn
On Scanne son réseau avec un utilitaire ( dans mon cas Angry Ip Scanner => http://angryip.org/ ) pour trouver l’adresse du PI
on se connecte en SSH ( utilisateur: pi , mot de passe: raspberry )
Dans le reste du Tuto lorsqu’il y a des lignes de commandes, celles commençant par $ sont lancées avec l’utilisateur pi et celles commençant par # par l’utilisateur root ( ne pas taper $ ou # lors des commandes ). et lorsque dans les lignes de commandes si en fin de ligne il y a \ cela veux dire que la commande continue sur la ligne suivante il faut tous taper sur une seule ligne et de pas mettre le \ .
quand je dis on edite le fichier x , cela veux dire : sudo nano x
on vas changer locale , timezone , key, wifi
$sudo raspi-config
on vas changer le mot de passe du compte root => « Domotic »
$sudo passwd root
Mise a jour kernel & firmware
$sudo rpi-update
Une fois a jour on reboot et on enlève l’ancien firmware (4.14.34 dans mon cas ) , faire ls -al /lib/modules pour voir les versions installées . on peux meme enlever celui qui ne se termine pas pas v7+
$sudo rm -fr /lib/modules/4.14.34*
on met a jour les paquets
$sudo apt-get clean $sudo apt-get autoclean $sudo apt-get update $sudo apt-get upgrade -y $sudo apt-get dist-upgrade -y $sudo reboot
on commence a installer tous ce que l’on a besoin on paramétreras ça plus tard
sudo apt-get install cmake make gcc g++ git libcurl4-openssl-dev libusb-dev python3-dev libcurl4-openssl-dev libssl1.0-dev \ python-rpi.gpio f2fs-tools mosquitto-clients mosquitto dnsmasq hostapd ntp nginx php7.0-fpm php-apcu php7.0-mysql php7.0-curl \ php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 \ php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext mariadb-server samba perl libnet-ssleay-perl openssl nscd \ libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python x11-xserver-utils xinit xserver-xorg matchbox-window-manager \ unclutter firefox-esr-l10n-fr firefox-esr xdotool libboost-dev libboost-thread-dev libboost-system-dev libudev-dev xterm \ automysqlbackup resolvconf avahi-utils avahi-daemon
un petit reboot et on vas commencer le paramétrage
Partie 2 ) Début du paramétrage
on vas autoriser tous les utilisateur a lancer le serveur graphique
$sudo dpkg-reconfigure xserver-xorg-legacy
on vas sécuriser les bases SQL ( Domotic en mdp , supprimer les bases test , autoriser le remote …)
Remove anonymous users? => Y
Disallow root login remotely? => N
Remove test database and access to it? => Y
$sudo mysql_secure_installation $echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | sudo mysql -u root -p
maintenant on vas installer Domoticz. Plus besoin d’installer les sources et de compiler
$sudo curl -L install.domoticz.com | bash
en réseau local pas besoin de IPV6 , on vas le desactiver , editer /etc/sysctl.conf et ajouter a la fin :
# désactivation de ipv6 pour toutes les interfaces net.ipv6.conf.all.disable_ipv6 = 1 # désactivation de l’auto configuration pour toutes les interfaces net.ipv6.conf.all.autoconf = 0 # désactivation de ipv6 pour les nouvelles interfaces (ex:si ajout de carte réseau) net.ipv6.conf.default.disable_ipv6 = 1 # désactivation de l’auto configuration pour les nouvelles interfaces net.ipv6.conf.default.autoconf = 0
on actualise
$sudo sysctl -p
Partie 3 ) Installation de Node-Red
$cd $bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) $sudo systemctl enable nodered.service $sudo service nodered restart
Partie 4 ) Installation de Webmin
$cd /tmp $sudo wget http://prdownloads.sourceforge.net/webadmin/webmin_1.881_all.deb $sudo dpkg -i webmin_1.881_all.deb
on editer /etc/webmin/miniserv.conf , et changer ssl=1 en ssl=0
$sudo service webmin restart
se connecter sur la page de webmin http://ip_du_pi:1000 ( user: root , mdp : Domotic)
passer webmin en Francais : menu webmin , Configuration de Webmin , langue
télécharger le module de gestion de nginx sur https://www.justindhoffman.com/sites/justindhoffman.com/files/nginx-0.10.wbm_.gz
ajouter le module dans webmin : menu webmin , Configuration de Webmin , modules webmin ,
Partie 5 ) Hotspot Wifi et DHCP
$sudo nano /etc/dhcpcd.conf
ajouter a la fin: le PI chercheras un dhcp sur son interface filaire , mais pour la partie wifi c’est lui qui serat serveur DHCP
denyinterfaces wlan0
on attaque la partie hotspot en éditant /etc/hostapd/hostapd.conf
si vous voulez changer le code wifi ou le ssid c’est le moment
driver=nl80211 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 beacon_int=100 auth_algs=1 wpa_key_mgmt=WPA-PSK ssid=Domo-Jules channel=6 hw_mode=g wpa_passphrase=Domoticz_Jules interface=wlan0 wpa=2 wpa_pairwise=TKIP country_code=FR
le PI vas aussi servir de serveur DNS pour le reseau Wifi , on edite /etc/hosts
127.0.0.1 localhost 127.0.1.1 raspberrypi 192.168.254.1 domo.home www.domo.home 192.168.254.1 sql.domo.home www.sql.domo.home 192.168.254.1 webmin.domo.home www.webmin.domo.home 192.168.254.1 nofuss.domo.home www.nofuss.domo.home 192.168.254.1 node.domo.home www.node.domo.home 192.168.254.1 status.domo.homewww.status.domo.home 192.168.254.1 system.domo.home www.system.domo.home
config serveur dhcp sur wlan0 bloc adr de 192.168.254.10 -> 192.168.254.200 . On vas forcer l’ip de wlan0 , on édite /etc/network/interfaces
et ajouter :
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet static address 192.168.254.1 netmask 255.255.255.0 network 192.168.254.0 broadcast 192.168.254.255
partie serveur dhcp
$sudo rm /etc/dnsmasq.conf $sudo nano /etc/dnsmasq.conf
interface=wlan0 # Use interface wlan0 #no-resolv no-poll listen-address=192.168.254.1 # Explicitly specify the address to listen on bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere server=8.8.8.8 # Forward DNS requests to Google DNS server=192.168.254.1 # domain-needed # Don't forward short names bogus-priv # Never forward addresses in the non-routed address spaces. addn-hosts=/etc/dnsmasq_static_hosts.conf # Assign IP addresses between 192.168.254.10 and 192.168.254.200 with a 12 hour lease time dhcp-range=192.168.254.10,192.168.254.200,12h # force appariel adr mac b4:7c:9c:fe:11:50 => IP 192.168.254.201 dhcp-host=b4:7c:9c:fe:11:50,192.168.254.201
Editez /etc/default/hostapd , ajouter :
DAEMON_CONF="/etc/hostapd/hostapd.conf"
dans /etc/sysctl.conf ajouter
net.ipv4.ip_forward=1
le Pi vas servir de serveur ntp (time) pour les modules domotiques sonoff , on édite /etc/ntp.conf et on ajoute
restrict 192.168.254.0 mask 255.255.255.0 broadcast 192.168.254.255 broadcast 224.0.1.1
$sudo service hostapd start
$sudo service dnsmasq start
Partie 6 ) Serveur Web nginx
Au lieu d’utiliser Apache en serveur Web on vas utiliser nginx ( moins gourmand en mémoire) , ne gérant pas l’activation / désactivation des sites virtuels comme apache on vas creer un fichier nginx_modsite et le rendre executable
$sudo nano /usr/bin/nginx_modsite $chmod +x /usr/bin/nginx_modsite
contenu de nginx_modsite
#!/bin/bash ## # File: # nginx_modsite # Description: # Provides a basic script to automate enabling and disabling websites found # in the default configuration directories: # /etc/nginx/sites-available and /etc/nginx/sites-enabled # For easy access to this script, copy it into the directory: # /usr/local/sbin # Run this script without any arguments or with -h or --help to see a basic # help dialog displaying all options. ## # Copyright (C) 2010 Michael Lustfield <mtecknology@ubuntu.com> # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. ## # Default Settings ## NGINX_CONF_FILE="$(awk -F= -v RS=' ' '/conf-path/ {print $2}' <<< $(nginx -V 2>&1))" NGINX_CONF_DIR="${NGINX_CONF_FILE%/*}" NGINX_SITES_AVAILABLE="$NGINX_CONF_DIR/sites-available" NGINX_SITES_ENABLED="$NGINX_CONF_DIR/sites-enabled" SELECTED_SITE="$2" ## # Script Functions ## ngx_enable_site() { [[ ! "$SELECTED_SITE" ]] && ngx_select_site "not_enabled" [[ ! -e "$NGINX_SITES_AVAILABLE/$SELECTED_SITE" ]] && ngx_error "Site does not appear to exist." [[ -e "$NGINX_SITES_ENABLED/$SELECTED_SITE" ]] && ngx_error "Site appears to already be enabled" ln -sf "$NGINX_SITES_AVAILABLE/$SELECTED_SITE" -T "$NGINX_SITES_ENABLED/$SELECTED_SITE" ngx_reload } ngx_disable_site() { [[ ! "$SELECTED_SITE" ]] && ngx_select_site "is_enabled" [[ ! -e "$NGINX_SITES_AVAILABLE/$SELECTED_SITE" ]] && ngx_error "Site does not appear to be \'available\'. - Not Removing" [[ ! -e "$NGINX_SITES_ENABLED/$SELECTED_SITE" ]] && ngx_error "Site does not appear to be enabled." rm -f "$NGINX_SITES_ENABLED/$SELECTED_SITE" ngx_reload } ngx_list_site() { echo "Available sites:" ngx_sites "available" echo "Enabled Sites" ngx_sites "enabled" } ## # Helper Functions ## ngx_select_site() { sites_avail=($NGINX_SITES_AVAILABLE/*) sa="${sites_avail[@]##*/}" sites_en=($NGINX_SITES_ENABLED/*) se="${sites_en[@]##*/}" case "$1" in not_enabled) sites=$(comm -13 <(printf "%s\n" $se) <(printf "%s\n" $sa));; is_enabled) sites=$(comm -12 <(printf "%s\n" $se) <(printf "%s\n" $sa));; esac ngx_prompt "$sites" } ngx_prompt() { sites=($1) i=0 echo "SELECT A WEBSITE:" for site in ${sites[@]}; do echo -e "$i:\t${sites[$i]}" ((i++)) done read -p "Enter number for website: " i SELECTED_SITE="${sites[$i]}" } ngx_sites() { case "$1" in available) dir="$NGINX_SITES_AVAILABLE";; enabled) dir="$NGINX_SITES_ENABLED";; esac for file in $dir/*; do echo -e "\t${file#*$dir/}" done } ngx_reload() { read -p "Would you like to reload the Nginx configuration now? (Y/n) " reload [[ "$reload" != "n" && "$reload" != "N" ]] && invoke-rc.d nginx reload } ngx_error() { echo -e "${0##*/}: ERROR: $1" [[ "$2" ]] && ngx_help exit 1 } ngx_help() { echo "Usage: ${0##*/} [options]" echo "Options:" echo -e "\t<-e|--enable> \tEnable site" echo -e "\t<-d|--disable> \tDisable site" echo -e "\t<-l|--list>\t\tList sites" echo -e "\t<-h|--help>\t\tDisplay help" echo -e "\n\tIf is left out a selection of options will be presented." echo -e "\tIt is assumed you are using the default sites-enabled and" echo -e "\tsites-disabled located at $NGINX_CONF_DIR." } ## # Core Piece ## case "$1" in -e|--enable) ngx_enable_site;; -d|--disable) ngx_disable_site;; -l|--list) ngx_list_site;; -h|--help) ngx_help;; *) ngx_error "No Options Selected" 1; ngx_help;; esac
on vas supprimer les config par defaut de nginx
$sudo rm /etc/nginx/sites-available/default et /etc/nginx/sites-enabled/default
on vas créer tous les fichiers de config nginx
$cd /etc/nginx/sites-available $sudo nano 0000-default $sudo nano domo.home $sudo nano node.home $sudo nano nofuss.home $sudo nano sql.home $sudo nano status.home $sudo nano system.home $sudo nano webmin.home
contenu de 0000-default
server { listen 80 default; server_name _; access_log /var/log/nginx/access.log ; error_log /var/log/nginx/error.log; uninitialized_variable_warn off; root /var/www/; location / { autoindex on; index index.php index.html index.htm; } location ~ /\.ht { deny all; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } location /php_status { fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; include fastcgi_params; allow 127.0.0.1; deny all; } }
contenu de domo.home
server { listen 80; server_name domo.home www.domo.home; access_log /var/log/nginx/domo.home_access.log; error_log /var/log/nginx/domo.home_error.log; uninitialized_variable_warn off; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
contenu de node.home
server { listen 80; server_name node.domo.home www.node.domo.home; access_log /var/log/nginx/node.domo.home_access.log; error_log /var/log/nginx/node.domo.home_error.log; location / { proxy_pass http://localhost:1880; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
contenu de nofuss.home
server { listen 80; server_name nofuss.domo.home www.nofuss.domo.home; access_log /var/log/nginx/nofuss.domo.home_access.log; error_log /var/log/nginx/nofuss.domo.home_error.log; uninitialized_variable_warn off; root /var/www/nofuss.domo.home/; location / { root /var/www/nofuss.domo.home/; autoindex on; index index.php index.html index.htm; } location ~ /\.ht { deny all; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
contenu de sql.home
server { listen 80; server_name sql.domo.home www.sql.domo.home; access_log /var/log/nginx/sql.domo.home_access.log; error_log /var/log/nginx/sql.domo.home_error.log; uninitialized_variable_warn off; root /usr/share/phpmyadmin/; location / { index index.php; } ## Images and static content is treated different location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 360d; } location ~ /\.ht { deny all; } location ~ /(libraries|setup/frames|setup/libs) { deny all; return 404; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name; fastcgi_param HTTPS off; } }
contenu de status.home
server { listen 80; server_name status.domo.home www.status.domo.home; access_log /var/log/nginx/status.domo.home_access.log; error_log /var/log/nginx/status.domo.home_error.log; uninitialized_variable_warn off; root /var/www/eZServerMonitor-2.5/; location / { autoindex on; index index.php index.html index.htm; } location ~ /\.ht { deny all; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
contenu de system.home
server { listen 80; server_name system.domo.home www.system.domo.home; access_log /var/log/nginx/system.domo.home_access.log; error_log /var/log/nginx/system.domo.home_error.log; uninitialized_variable_warn off; root /var/www/system/; location / { autoindex on; index index.php index.html index.htm; } location ~ /\.ht { deny all; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
contenu de webmin.home
server { listen 80; server_name webmin.domo.home www.webmin.domo.home; access_log off; error_log off; location / { proxy_pass http://127.0.0.1:10000; proxy_redirect off; #Proxy Settings proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 128k; proxy_buffers 32 32k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; } }
maintenant on active les sites
$sudo nginx_modsite -e 0000-default $sudo nginx_modsite -e domo.home $sudo nginx_modsite -e node.home $sudo nginx_modsite -e nofuss.home $sudo nginx_modsite -e sql.home $sudo nginx_modsite -e tatus.home $sudo nginx_modsite -e system.home $sudo nginx_modsite -e webmin.home
on vérifie les sites avec : $sudo nginx_modsite -l
On ne redémarre pas encore nginx car pas encore installés les différents sites
Available sites: 0000-default domo.home node.home nofuss.home sql.home status.home system.home webmin.home Enabled Sites 0000-default domo.home node.home nofuss.home sql.home status.home system.home webmin.home
Partie 7 ) Installation phpmyadmin depuis les sources (version 4.8.1 au 2018/05/27)
$cd /tmp $wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.tar.gz $tar -zxvf phpMyAdmin-4.8.1-all-languages.tar.gz $sudo mv phpMyAdmin-4.8.1-all-languages /usr/share/phpmyadmin sudo cd /usr/share/phpmyadmin $sudo cp config.sample.inc.php config.inc.php $sudo phpenmod mcrypt $sudo phpenmod mbstring $sudo systemctl restart php7.0-fpm
pour accéder a phpmyadmin en root , on édite /etc/mysql/mariadb.conf.d/50-server.cnf et ajouter apres bind-address = 127.0.0.1
sql-mode="NO_ENGINE_SUBSTITUTION"
on édite /etc/mysql/debian.cnf et on met le mot de passe sql (Domotic) puis on lance :
$echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | sudo mysql -u root -p $sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
on édite /usr/share/phpmyadmin/config.inc.php
modifier: $cfg['blowfish_secret'] =>mettre n'importe quoi (32cars) /* User used to manipulate with storage */ $cfg['Servers'][$i]['controlhost'] = ''; $cfg['Servers'][$i]['controluser'] = 'root'; $cfg['Servers'][$i]['controlpass'] = 'Domotic'; => mdp SQL
on relance le service sql
$sudo service mysql restart
Partie 8 ) Configuration de Samba
$sudo rm -fr /etc/samba/smb.conf $sudo nano /etc/samba/smb.conf
on vas créer 3 partages : [Web] => /var/www/ , [Home] => /home/pi/ , [Logs] => /var/log/
contenu de smb.conf
#======================= Global Settings ======================= [global] workgroup = WORKGROUP # wins support = no dns proxy = no #### Networking #### ; interfaces = 127.0.0.0/8 eth0 ; bind interfaces only = yes #### Debugging/Accounting #### log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d ####### Authentication ####### server role = standalone server passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user ########## Domains ########### ############ Misc ############ usershare allow guests = yes #======================= Share Definitions ======================= [Web] public = yes path = /var/www delete readonly = yes force group = www-data force user = www-data writeable = yes [Home] delete readonly = yes path = /home/pi/ public = yes writeable = yes force user = pi force group = pi [Logs] delete readonly = yes path = /var/log public = yes writeable = yes force user = root force group = root
Partie 9 ) Installation de eZServerMonitor
$cd /var/www $sudo wget https://www.ezservermonitor.com/esm-web/downloads/version/2.5 $sudo unzip 2.5 $sudo rm 2.5
On edite /var/www/eZServerMonitor-2.5/conf/esm.config.json , enlever la section ping dans services enlever email server , ftp et ajouter apres la section Web Server :
{ "name": "Webmin", "host": "localhost", "port": 10000, "protocol": "tcp" }, { "name": "Node Red", "host": "localhost", "port": 1880, "protocol": "tcp" }, { "name": "Domoticz", "host": "localhost", "port": 8080, "protocol": "tcp" },
Partie 10 ) l’ecran 7″ tactile officiel du Rapsberry PI ( optionnel )
On vas lancer Firefox en plein écran au démarrage du PI
on Édite /boot/config.txt et on ajoute , a adapter en fonction de la position du PI
lcd_rotate=0
on vas forcer le paramétrage de Firefox
$cd $mkdir -p .mozilla/firefox/profile.default $nano .mozilla/firefox/profiles.ini
contenu de profiles.ini
[General] StartWithLastProfile=1 [Profile0] Name=default IsRelative=1 Path=profile.default Default=1
on vas éditer .bashrc pour forcer le lancement de firefox au démarrage du PI , a rajouter a la fin du .bashrc
# ne se lance que depuis le pi , pas en ssh a distance if [ $(tty) == /dev/tty1 ]; then xinit ./kiosk fi
contenu de kiosk
#!/bin/sh # disable DPMS (Energy Star) features. xset -dpms # disable screen saver xset s off # don't blank the video device xset s noblank # disable mouse pointer unclutter & # run window manager matchbox-window-manager -use_cursor no -use_titlebar no & /usr/bin/firefox -fullscreen
puis un chmod +x ./kiosk et on reboot le pi , normalement vas lancer firefox en plein ecran .
toujours en ssh faire : pkill firefox
$nano .mozilla/firefox/profile.default/prefs.js et ajouter : nano .mozilla/firefox/profile.default/prefs.js et ajouter : user_pref("browser.startup.homepage", "http://domo.home"); user_pref("network.protocol-handler.warn-external.dnupdate", false); user_pref("network.protocol-handler.warn-external.dnupdate", false); user_pref("network.protocol-handler.warn-external.dnupdate", false); user_pref("browser.sessionstore.resume_from_crash", false); user_pref("browser.sessionstore.resume_session_once", true);
relancer le PI , maintenant le PI lance firefox au démarrage avec la page www.domo.home
Partie 11 ) Test divers
se connecter sur le wifi du PI depuis une tablette ou un smartphone et tester les sites suivants :
domo.home,www.domo.home, => Serveur Web Domoticz
sql.domo.home,www.sql.domo.home, => Admnistration des bases SQL
webmin.domo.home,www.webmin.domo.home, => Webmin pour configuration serveur
nofuss.domo.home,www.nofuss.domo.home, ** => Pour maj des firmware des modules SonOff en cours de Dev
node.domo.home,www.node.domo.home, => pour faire des Scripts en NodeRed
status.domo.loca,www.status.domo.home, => affichage status du PI , cpu , memoire , espace disque
system.domo.home,www.system.domo.home** => interface générale pour lancer les sites
** devrait sortir un message d’erreur pas pas encore de fichiers/dossiers crées
sur un PC windows en connexion filaire éditer le fichier C:\Windows\System32\drivers\etc et ajouter , en remplaçant 192.168.xxx.xxx par l’IP ‘filaire’ du PI
192.168.xxx.xxx domo.home www.domo.home 192.168.xxx.xxx sql.domo.home www.sql.domo.home 192.168.xxx.xxx webmin.domo.home www.webmin.domo.home 192.168.xxx.xxx nofuss.domo.home www.nofuss.domo.home 192.168.xxx.xxx node.domo.home www.node.domo.home 192.168.xxx.xxx status.domo.homewww.status.domo.home 192.168.xxx.xxx system.domo.home www.system.domo.home
Partie 12 ) Mise à jour de domoticz par tache cron ( Optionel )
mise a jour de domoticz automatique
$nano ~/domo_update et tapez : #!/bin/dash cd /home/pi/domoticz git pull make sudo service domoticz.sh restart
rendre le script exécutable et ajouter tache cron a 0h30 , 6h30 , 12h30 , 18h30,21h30
$chmod +x ~/domo_update $crontab -e
et saisir :
30 0,6,12,18,21 * * * /home/pi/domo_update
Partie 13 ) Sauvegarde des bases de données SQL
script de sauvegarde des bases dans /opt/SAVE/sql ( daily latest monthly weekly )
$sudo mkdir -p /opt/SAVE/sql $sudo nano /etc/default/automysqlbackup et changer : SEPDIR=yes BACKUPDIR="/opt/SAVE/sql" LATEST=yes DOWEEKLY=7
planification taches cron sauvegarde tous les soir a 22h30
$sudo crontab -e et ajouter 30 22 * * * /usr/sbin/automysqlbackup
pour eviter le message « — Warning: Skipping the data of table mysql.event. Specify the –events option explicitly. »
$sudo nano /etc/mysql/conf.d/automysqlbackup.cnf
ensuite insérer le code suivant :
[mysqldump] events ignore-table = mysql.events
Partie 14 ) xxxxx
En cours d’éciture
Partie 15 ) xxxxx
En cours d’éciture
Conclusion ( provisoire )
Reste a faire les dossier /var/www/nofuss.domo.home et /var/www/system et pour ceux qui sont perdu , un fichier .gz avec tous les fichiers conf modifiés pour injection directe dans le PI ( il faudras faire juste les parties 1,2,3 et 4 ) sera disponible très bientôt
Liens divers utilisée pour faire ce Tuto :
http://www.instructables.com/id/Raspberry-Pi-Web-Server-Nginx-PHP-MySql/
https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/
http://linuxfr.org/wiki/raspberrypi-remplacer-son-systeme-de-fichier-par-f2fs-formatage
https://www.howtoforge.com/tutorial/installing-nginx-with-php7-fpm-and-mysql-on-ubuntu-16.04-lts-lemp
https://www.digitalocean.com/community/questions/phpmyadmin-or-alternative-for-php7-nginx-mysql-5-7-ubuntu-16-04
https://www.citizenz.info/mariadb-mysql-connexion-root-avec-phpmyadmin-sous-ubuntu-16-04
https://publications.jbfavre.org/web/nginx-vhosts-automatiques-avec-SSL-et-authentification.fr
https://www1.zonewebmaster.eu/serveur-debian-mysql:automysqlbackup
https://serverfault.com/questions/424452/nginx-enable-site-command
https://anderson69s.com/2017/03/18/domoticz-domotique-diy/6/
http://hallard.me/pitinfov12/
http://hallard.me/pitinfo/