Installation
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