dimanche 4 mars 2018

Créer un serveur domotique avec Domoticz

Installation de Domoticz sur un serveur sous Debian 9

L'arrivée de Debian 9 a quelque peu changé l'installation de Domoticz.
En outre, j'ai recherché une procédure plus fiable que sur mon précédent article.

Par contre, la procédure d'installation de Debian n'a pas changé (à part quelques modifications esthétiques).

Toutes les commandes sont à lancer sous la console de Debian ou à distance via le logiciel Putty. Connectez-vous avec un utilisateur standard membre du groupe Sudo.


ATTENTION
Il s'avère que Domoticz rencontre certains problèmes de droits sur Debian 9 ce qui s'avère gênant dans la mise en place de la connexion protégée par SSL (port 443).
En outre, cette procédure d'installation fonctionne parfaitement avec Debian 8 (Jessie).

Préparation

Installation de Open-SSL1.1.0 et libssl1.0-dev

sudo apt-get install cmake make gcc g++ libssl-dev git libcurl4-openssl-dev libusb-dev python3-dev

Construction et installation de la librairie Boost

On commence par supprimer les dépendances inutiles.

sudo apt-get remove libboost-dev libboost-thread-dev libboost-system-dev libboost-atomic-dev libboost-regex-dev
sudo apt-get remove libboost-date-time1.55-dev libboost-date-time1.55.0 libboost-atomic1.55.0 libboost-regex1.55.0 libboost-iostreams1.55.1
sudo apt-get remove libboost-iostreams1.55.0
sudo apt-get remove libboost-serialization1.55-dev libboost-serialization1.55.0 libboost-system1.55-dev
sudo apt-get remove libboost-system1.55.0 libboost-thread1.55-dev libboost-thread1.55.0 libboost1.55-dev
sudo apt-get autoremove


Et on construit et installe Boost.

mkdir boost
cd boost
wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz
tar xfz boost_1_66_0.tar.gz
rm boost_1_66_0.tar.gz
cd boost_1_66_0/
./bootstrap.sh
./b2 stage threading=multi link=static --with-thread --with-date_time --with-system --with-atomic --with-regex
sudo ./b2 install threading=multi link=static --with-thread --with-date_time --with-system --with-atomic --with-regex
cd ../../
rm -Rf boost/


Ajout du support de OpenZWave

sudo apt-get install libudev-dev
git clone https://github.com/OpenZWave/open-zwave open-zwave-read-only
cd open-zwave-read-only
git pull
make
cd ../


Installation de Domoticz


sudo apt-get install zlib1g-dev
 
git clone https://github.com/domoticz/domoticz.git dev-domoticz
cd dev-domoticz
git pull
cmake -DCMAKE_BUILD_TYPE=Release CMakeLists.txt
make -j 3

A ce niveau, l'installation peut être très, très longue. Alors patience.

sudo cp domoticz.sh /etc/init.d
sudo chmod +x /etc/init.d/domoticz.sh
sudo update-rc.d domoticz.sh defaults
 
sudo nano /etc/init.d/domoticz.sh

A la ligne USERNAME remplacez $USERNAME par votre utilisateur :
USERNAME=$USERNAME
DAEMON=/home/$USERNAME/domoticz/$NAME
DAEMON_ARGS="-daemon -www 8080"

Installation de letsencrypt pour le SSL (HTTPS)


cd /etc
sudo git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
sudo ./letsencrypt-auto


Création du certificat

sudo /etc/letsencrypt/letsencrypt-auto certonly --webroot --email <your email> -d <your complete sub.domain name> -w /home/<user name>/domoticz/www/


Vous devez remplacer les annotations entre "<>" avec vos paramètres.

Lors de la procédure, je me suis rendu compte que le nom de domaine devait impérativement permettre l’accès à Domoticz depuis le port 80. J'ai donc temporairement renvoyé le port 80 de ma box vers le 8080 de Domoticz.

Ajouter les certificats à Domoticz

sudo rm /home/<user name>/domoticz/server_cert.pem
sudo cat /etc/letsencrypt/live/<your domain>/privkey.pem >> ~/domoticz/server_cert.pem
sudo cat /etc/letsencrypt/live/<your domain>/fullchain.pem >> ~/domoticz/server_cert.pem
sudo cp /home/<user name>/domoticz/server_cert.pem ~/domoticz/letsencrypt_server_cert.pem
sudo /etc/init.d/domoticz.sh restart

 
Lors d'une mise à jour, il est possible que Domoticz écrase le certificat. Il suffit alors de faire :
sudo cat /etc/ssl/certs/dhparam.pem >> ~/domoticz/server_cert.pem

Enfin, si Domoticz affiche une erreur du genre :
/etc/ssl/certs/dhparam.pem: No such file or directory
Corrigez avec :
cd /etc/ssl/certs
sudo openssl dhparam -dsaparam -out dhparam.pem 4096
sudo cat /etc/ssl/certs/dhparam.pem >> ~/domoticz/server_cert.pem
sudo /etc/init.d/domoticz.sh restart


Permettre à Domoticz d'accéder aux USB


sudo usermod -a -G dialout VOTRE_NOM_D_UTILISATEUR


Lancer Domoticz au démarrage


nano /etc/systemd/system/domoticz.service

Et coller le contenu suivant :

[Unit]
Description=domoticz_service
[Service]
User=VOTRE_NOM_D_UTILISATEUR
Group=VOTRE_GROUPE_D_UTILISATEUR(souvent identique au nom d'utilisateur)
ExecStart=/home/domoticz/domoticz/domoticz -www 8080 -sslwww 443
WorkingDirectory=/home/domoticz
# Give the right to open priviliged ports. This allows you to run on a port <1024 16="" above="" below="" cap_net_bind_service="+ep" capabilityboundingset="CAP_NET_BIND_SERVICE" code="" domoticz="" execstartpre="setcap" group="" home="" line="" lts.="" next="" nstall="" older="" on="" permissions="" previously="" restart="on-failure" restartsec="1m" root="" setting="" so="" systems.="" tandardoutput="null" the="" this="" try="" ubuntu="" user="" wantedby="multi-user.target" was="" without="" working="" works="">


Activer et démarrer Domoticz

sudo systemctl daemon-reload
sudo systemctl enable domoticz.service
sudo systemctl start domoticz.service

Mise à jour de Domoticz


cd domoticz
sudo
./updaterelease

sources :

https://www.domoticz.com/wiki/Linux
https://www.domoticz.com/wiki/Linux#Allow_non-root_user_to_access_ttyUSB.2A_ports
https://www.domoticz.com/wiki/Raspberry_Pi_-_Build_Domoticz_from_source#Raspberry_Pi_-_Build_Domoticz_from_source

Aucun commentaire:

Enregistrer un commentaire