Installation



L'installation du serveur de type PC/Ubuntu est décrite ci-dessous.....

Cette installation couvre le Daemon (MirTOSd) et l'interface web (MirTOSface)



1) Installation de Linux


Pour l'installation de linux, référez vous à la documentation de votre distribution. Dans l'exemple qui suit, la distribution utilisée est :

- ubuntu-22.04.3-desktop-amd64



2) Identification sur le système


La suite des opérations se feront majoritairement en ligne de commande. Il faut donc s'identifier sur le système, puis ouvrir un Shell, par exemple en ouvrant un terminal sur l'interface graphique, ou encore par une connexion SSH.


Remarque : Si le serveur SSH n'est pas installé dans la distribution, il est possible de le faire avec la commande :


sudo apt install openssh-server


Il est aussi interressant de disposer du package net-tools :


sudo apt install net-tools




Ensuite l'accès en ssh peut se faire ainsi  : 

ssh -l user 192.168.0.123


dans le cas ou le login installé au point 1) est user.



3) Mise à jour de la distribution



sudo apt-get update

sudo apt-get dist-upgrade

sudo apt-get clean


4) Installation et configuration du Web Server : Apache


Installation :


sudo apt-get install apache2


Configuration :


4.a) changement de port pour Apache 80 => 8080 (pas obligatoire)


sudo nano /etc/apache2/ports.conf


Changer 

Listen 80

en 

Listen 8080


Sauver et quitter l'éditeur


sudo nano /etc/apache2/sites-enabled/000-default.conf


Changer 

<VirtualHost *:80>

en 

<VirtualHost *:8080>


Sauver et quitter l'éditeur



4b) Recharger et démarrer Apache :


sudo /etc/init.d/apache2 reload

sudo /etc/init.d/apache2 stop

sudo /etc/init.d/apache2 start



4c) Test de Apache :


En ouvrant un navigateur, en tapant l'IP du serveur : 8080 on obtient :


Les applications (MirTOSface et MirTOSd) fonctionnant en cgi-bin, il faut autoriser ce fonctionnement.

Sous Ubuntu, il faut faire :

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/

puis redémarrer apache :

sudo systemctl restart apache2


Source : https://www.ionos.com/digitalguide/server/configuration/enable-cgi-scripts-on-apache/


5) Installation de Mosquitto (MQTT Broker)


5a) Installation...


L'installation de Mosquitto se fait avec la commande :


sudo apt install -y mosquitto mosquitto-clients libmosquitto-dev


5b) Configuration


Par défaut, l'installation de mosquitto (à partir de la version 2.0) accepte les connexions anonymes sur le listener 'localhost' uniquement.

Il faut donc ajouter la possibilité aux devices de se connecter avec un login.


Il existe plusieurs solutions pour le faire, nous allons utiliser la plus simple ici,les autres options sont documentées ici : https://mosquitto.org/documentation/authentication-methods/

La solution proposée est celle du Password File.


Editer le fichier de configuration, le choix fait ici est de rajouter une config dans /etc/mosquitto/conf.d mais la modification de /etc/mosquitto/mosquitto.conf (sudo nano /etc/mosquitto/mosquitto.conf)  fonctionne aussi


sudo nano /etc/mosquitto/conf.d/mirtos.conf


Dans ce fichier, mettre les lignes suivantes :


# Configuration Mosquitto pour Mirtos - version initiale

#

per_listener_settings true


# Premier listener : localhost -> Autorise les acces anonymes

listener 10883 

allow_anonymous true


# second listener, sur l'ip externe : utilise un fichier de mot de passe

#

# il faudra le créer avec :

# sudo mosquitto_passwd -c /etc/mosquitto/conf.d/password_file <user_name>


listener 1883 

allow_anonymous false

password_file /etc/mosquitto/conf.d/password_file


construire le fichier des mots de passe en exécutant la commande suivante  :


sudo mosquitto_passwd -c /etc/mosquitto/conf.d/password_file <USER>


puis


sudo systemctl restart mosquitto


pour relancer mosquitto


Il est alors possible de tester la configuration en se connectant à mosquitto sur les deux listener :


mosquitto_sub -h localhost -p 10883 -t MirTOS


et avec le couple user/pass d'exemple mirtos/motdepasse et sur lîp d'exemple 192.168.90.174 (à remplacer avec votre configuration):


mosquitto_sub -h 192.168.90.174 -p 1883 -u mirtos -P motdepasse -t MirTOS


Dans les devices, il faudra mettre (dans le config) :


[General]

MQTT_Server=192.168.90.174

MQTT_Port=1883

MQTT_User=mirtos

MQTT_Pass=motdepasse


et dans l'application Linux (config.ini)


[General]

mqtt_host=localhost

mqtt_port=10883



6) Création de quelques répertoires utiles :


mkdir MirTOS

cd MirTOS

mkdir log

mkdir db

mkdir app

mkdir backup

mkdir xml

mkdir xsl

mkdir dvpt

mkdir dvpt/srv


Dans le cas où vous voulez avoir un dépot des firmware (pas nécessaire en standard):

mkdir firmware


retour au répertoire de base :

cd


7) Installation de SQLite


7a) Installation


sudo apt-get -y install sqlite3 libsqlite3-dev



7b) Création de la DB


Aller dans le répertoire des DB et lancer le script de création


sqlite3 ~/MirTOS/db/MirTOS.db



Appliquer le script de création en recopiant les commandes données sur http://mirtos.org/quickstart/db-script.sql


ensuite taper 

.quit


pour sortir se sqlite3


Il faut de plus donner l'accès à cette DB aux users qui en ont besoin. Dans notre cas :


cd ~/MirTOS/db

chmod a+rw MirTOS.db


8) Installation de quelques librairies nécessaires....


8a) TAR (nécessaire pour les backup des scripts des devices)


sudo apt-get -y install libtar libtar-dev


8b) Installation de xml et xslt :


sudo apt-get -y install libxml2-dev

sudo apt-get -y install libxslt-dev


ou 


cd ~/MirTOS/dvpt/srv


* Download at https://download.gnome.org/sources/libxml2/2.9/

* et https://download.gnome.org/sources/libxslt/1.1/


tar -xf libxml2-2.9.14.tar.xz

cd libxml2-2.9.14

./configure

./make

sudo make install


cd ..

tar -xf libxslt-1.1.37.tar.xz

cd libxslt-1.1.37

./configure

./make

sudo make install




9) Installation des applications MirTOSd et MirTOSface


9a) Première solution : télécharger les sources et compiler


Il faut en premier lieu installer les outils de compilation :


sudo apt install build-essential


tester le compilateur :


g++ --version


doit retourner quelque chose comme  :


g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

Copyright (C) 2021 Free Software Foundation, Inc.



Télécharger les sources sur  http://mirtos.org/quickstart/server-src.zip

Mettre le contenu du zip dans ~/MirTOS/dvpt/srv


Lancer le script de compilation :

./compile_script.sh

ou

bash compile_script.sh



9b) Seconde solution : télécharger les exécutables binaires


Pour RasPI : http://mirtos.org/quickstart/raspi/

Pour Ubuntu : http://mirtos.org/quickstart/ubuntu64/app_Ubuntu_22_04_3_LTS.zip


et mettre les exécutables dans le répertoire ~/MirTOS/app

recopier (ou déplacer) MirTOSface dans le répertoire CGI-BIN () et changer les droits d'accès :


cd ~/MirTOS/app

sudo cp   MirTOSface /usr/lib/cgi-bin/MirTOSface

sudo chmod u+s /usr/lib/cgi-bin/MirTOSface



9c) Configurer : 


cd ~/MirTOS/app


Créer un fichier de config :


nano config.ini



et recopier la config par défaut (remplacer <user> par le user utilisé) :


[General]

log_path=/home/<user>/MirTOS/log

mqtt_host=localhost

mqtt_port=1883

db_filename=/home/<user>/MirTOS/db/MirTOS.db

backup_path=/home/<user>/MirTOS/backup


[Face]

app_name=MirTOSface

call_me=/cgi-bin/MirTOSface

xsl_path=/home/<user>/MirTOS/xsl

xsl_default=default.xsl


default.xsl=D+V+P


[Domains]

xml_path=/home/<user>/MirTOS/xml


Il faut copier le config dans le répertoire app ET dans le repertoire CGI-BIN


sudo cp config.ini /usr/lib/cgi-bin/


Récupérer depuis http://mirtos.org/quickstart/xml-xsl.zip

un xsl de base et le mettre dans le répertoire ~/MirTOS/xsl

un xsl de base et le mettre dans le répertoire ~/MirTOS/xml


Il est possible de tester avec :


/usr/lib/cgi-bin/MirTOSface


qui doit retourner :


Content-type: text/html


<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta http-equiv="refresh" content="10; URL=/cgi-bin/MirTOSface?token=322D31">

<title>MirTOS Panel</title>

<style></style>

<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

</head>

<body bgcolor="#CE6211" text="white"><font color="white" face="arial"><h2>MirTOS Panel Default.xsl </h2>

<I style="font-size:10px;">322D31 - 20231110a</I><BR><I style="font-size:10px;"></I><BR><HR>

<table style="width:300px;"><tbody></tbody></table>

<HR>

<table style="width:300px;"><tbody></tbody></table></font></body>

</html>



9d) Lancer le daemon :


cd ~/MirTOS/app

./MirTOSd &


ou encore :


sudo /home/mirtos/MirTOS/app/MirTOSd -c /home/mirtos/MirTOS/app/config.ini &



----------------------------------------------------------------------------------------------------------------------




Quelques éléments en plus....


A) Auto-démarrage du daemon au démarrage du serveur.


Il existe une multitude se solution pour démarrer automatiquement une application, en voici une...


sudo nano /etc/rc.local

puis ajouter :


sudo /home/mirtos/MirTOS/app/MirTOSd  &


ce qui donne (exemple) :


#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.


# Print the IP address

_IP=$(hostname -I) || true

if [ "$_IP" ]; then

  printf "My IP address is %s\n" "$_IP"

fi


sudo /home/mirtos/MirTOS/app/MirTOSd -c /home/mirtos/MirTOS/app/config.ini &


exit 0


A2) Autre solution cron...


sudo crontab -e

et dans le fichier, ajouter :


@reboot sudo /home/mirtos/MirTOS/app/MirTOSd -c /home/mirtos/MirTOS/app/config.ini &


Seul problème de cette solution : selon la distribution, elle s'exécutera plus ou moins tôt dans le démarrage, ce qui peut poser problème car on a besoin que le réseau et mosquitto aient démarré.


La solution est de demander à MirTOSd d'attendre avant de démarrer la connexion à mosquitto, pour le faire, il faut ajouter dans le config.ini :


startup_wait=5


pour attendre 5 secondes pour démarrer...




B) Si mosquitto ne redémarre pas au reboot, il faut l'ajouter aux tâches à lancer :


sudo systemctl enable mosquitto



C) Mosquitto : Dans le cas ou le même port est utilisé sur plusieurs listener avec une configuration du type :


# Configuration Mosquitto pour Mirtos - version initiale

#

per_listener_settings true


# Premier listener : localhost -> Autorise les acces anonymes

listener 1883 127.0.0.1

allow_anonymous true


# second listener, sur l'ip externe : utilise un fichier de mot de passe

#

# il faudra le créer avec :

# sudo mosquitto_passwd -c /etc/mosquitto/conf.d/password_file <user_name>

# remplacer l'ip donnee ici a titre d'exemple par l'ip du serveur

listener 1883 192.168.90.174

allow_anonymous false

password_file /etc/mosquitto/conf.d/password_file



Cela semble fonctionner MAIS au reboot, mosquitto sera en erreur au redémarrage automatique !








Créé avec HelpNDoc Personal Edition: Produire facilement des livres électroniques Kindle