Cette installation repose sur le travail de l'utilisateur drtyhlpr consultable ici : rpi23-gen-image. Les modifications effectuées pour les besoins du projet se trouvent sur le site g-vidal.
Motivations
Le projet "Météo et Climat, tremplin pour l'enseignement des sciences" se développe selon trois axes principaux pour atteindre les objectifs fixés :
- Un volet d'accompagnement de l'utilisation de microcapteurs météorologiques pour enseigner le codage et le traitement de mesures météorologiques
- Un volet d'accompagnement de la mise en oeuvre d'une station météorologique du commerce dans un établissement scolaire puis du partage des données sur un territoire local, régional, national ou international
- Un volet de formation / autoformation des formateurs et des enseignants sur la météorologie et les sciences du climat.
Ces trois axes concourrent d'une part à la stimulation de l'appétence pour les sciences des jeunes et d'autre part à la généralisation de l'utilisation de la météorologie et des sciences du climat dans l'enseignement secondaire. Ce second objectif étant en ligne avec l'article 12 de l'accord de Paris sur le changement climatique.
Ce document s'intéresse à la mise en place de l'infrastructure numérique pour le pilotage d'une station météorologique à l'aide du logiciel libre weewx et pour le partage des données via la base de données mariadb recommandée par weewx afin de simplifier au maximum la mise en oeuvre.
Le premier points crucial pour atteindre cet objectif a été la mise en place d'un protocole entre le projet Tremplin, la Directon des Systèmes d'Information du Rectorat de Lyon reponsable de la sécurité numérique des établissements et la Direction ses Systèmes d'Information du Grand Lyon responsable du dépliement et du maintien en conditions opérationnelles.
Le second point crucial a été la mobilisation de la Direction Innovation Numérique et Systèmes d'Information du Grand Lyon qui a adhéré immédiatement à la proposition de partage de données issues des établissements avec la métropole Grand Lyon. Cette participation d'une collectivité territoriale fournit une ouverture sur le monde des établissements et place les élèves en position de citoyens contributeurs aux données ouvertes.
Remerciements
- Rectorat de Lyon en particulier Mme Corinne benucci Déléguée académique du numérique
- Grand Lyon Métropole Mme Nathalie Vernus-Prost Administrateur général des données
- DSI du Rectorat de Lyon en particulier M. Stéphane Vigo
- DSI du Grand Lyon
- Carole Larose, Éric le Jan et Charles-Henri Eyraud
Sommaire
-
Construction d'une image GNU/linux debian générique avec rpi23-gen-image
-
Configuration avancée pour les besoins du projet Tremplin
a. Copie de l'image sur une microSD
d. Installation et configuration du pare-feu
-
Modifications pour les images pré-configurées du projet Tremplin
Téléchargements
1. Construction d'une image GNU/linux debian générique avec rpi23-gen-image
Depuis que les Raspberries sont équipées de processeurs pour lesquels il existe une version du système d'exploitation debian il n'est plus nécessaire d'utiliser une distribution dédiée comme raspbian. Il est d'ailleurs dommage que les ajouts et modifications effectués ne soient pas partagés avec le retse de la communauté sous la forme de paquets proposés dans les dépôts officiels. Bien que construire une image soit à la portée d'un grand nombre d'usagers avertis, ce travail n'est pas souvent réalisé c'est pourquoi des images pré-configurées sont mises à disposition sur sur le site de diffusion de ressourcesdu projet.
1.a Outils rpi23-gen-image
Les images sont réalisées en utilisant le travail de l'utilisateur drtyhlpr proposé sur la forge github
sous le nom de rpi23-gen-image. Il suffit de télécharger la hiérarchie de fichiers proposés et d'exécuter la commande se trouvant à la racine de la hiérarchie en suivant les instruction du fichier README.md et en se plaçant dans le répertoire racine de cette hiérarchie.
sudo CONFIG_TEMPLATE=rpi3stretch ./rpi23-gen-image.sh
La totalité de la création de l'image se fait dès lors automatiquement et sans intervention de l'usager. La liste des répertoires et fichiers est reproduite ci-dessous.
bootstrap.d/ functions.sh packages/ rpi23-gen-image.sh*
files/ LICENSE README.md templates/
./bootstrap.d:
10-bootstrap.sh 13-kernel.sh 20-networking.sh~ 41-uboot.sh
10-bootstrap.sh~ 14-fstab.sh 21-firewall.sh 42-fbturbo.sh
11-apt.sh 15-rpi-config.sh 30-security.sh 42-fbturbo.sh~
11-apt.sh~ 15-rpi-config.sh~ 31-logging.sh 50-firstboot.sh
12-locale.sh 20-networking.sh 32-sshd.sh 99-reduce.sh
./files:
apt/ dpkg/ firstboot/ iptables/ modules/ network/ xorg/
boot/ etc/ initramfs/ locales/ mount/ sysctl.d/
./files/apt:
02nocache 03compress 04norecommends 10proxy flash-kernel sources.list
./files/boot:
config.txt uboot.mkimage
./files/dpkg:
01nodoc
./files/etc:
rc.local*
./files/firstboot:
10-begin.sh 23-regenerate-initramfs.sh 26-config-ifnames.sh
21-generate-ssh-keys.sh 24-generate-machineid.sh 99-finish.sh
22-expandroot.sh 25-create-resolv-symlink.sh
./files/initramfs:
expand_encrypted_rootfs expand-premount* expand-tools*
./files/iptables:
flush-ip6tables.sh ip6tables.rules iptables.rules
flush-iptables.sh ip6tables.service iptables.service
./files/locales:
locale
./files/modules:
raspi-blacklist.conf rpi2.conf
./files/mount:
crypttab fstab
./files/network:
eth.network host.conf hostname hosts interfaces
./files/sysctl.d:
81-rpi-vm.conf 82-rpi-net-hardening.conf
./files/xorg:
99-fbturbo.conf
./templates:
rpi2jessie rpi3jessie rpi2stretch rpi3stretch
shell
De la description précédente il découle deux conséquences :
- la première est que les versions disponibles de debian sont stretch et jessie (fichiers de configuration dans le dossier des templates)
- la seconde est que la composition de l'image est fixée par l'ensemble de fichiers de configuration de
rpi23-gen-image
.
Fort heureusement cet outil de création a été conçu pour être configuré en fonction des besoins de l'usager. Deux familles d'actions peuvent être effectuées :
- d'une part la modification d'un grand nombre de variables d'environnement (voir le README à la racine), cela permet de "profiler" assez finement le système que l'on souhaite créer. Il est possible ne modifier aucune de ces variables et dans ce cas on obtient une image "tous terrains";
- d'autre par l'ajout de "paquets officiels" des dépôts debian qui permettent de proposer d'origine des services particuliers (par exemple un serveur de terminaux pour contourner le besoin d'écran et afficher sur un écrandistant); mais aussi l'ajout de paquets ne faisant pas partie des dépôts officiels mais proposant des services intéressants (par exemple weewx pour ce qui concerne les stations météorologiques).
Les deux paragrahes suivants décrivent les modifications effectueées sur rpi23-gen-image pour satisfaire les exigences du projet Tremplin.
1.b Version modifiée utilisée
Dans les discussion autour de rpi23-gen-image il est apparu que la suppression de la vérification de l'origine des paquets qui avait été mise en place pour contourner un changement de la fonction de mise à jour de debian étant dangereuse et qu'il fallait revenir en arrière. Le modifications nécessaires ont été effectuées.
Dans certains cas il est nécessaire au moins pour faire des tests d'avoir accès à une distribution "testing" et à ce jour (2017/07/27) rpi23-gen-image ne propose pas la version buster
de debian. Même si la distribution buster
n'est pas utilisée ici les modifications permettant de créer une distribution buster
ont été jointes à la méme version.
La version ainsi modifiée respecte les recommandations des discussions et permet si besoin de produire une image buster. Il est possible de la télécharger comme la version originale et le fonctionnement est identique. Pour les personnes intéressées par les modifications effectuées utiliser les outils dédiés proposés par la forge github.
1.c Configuration utilisée
Le fichier de configuration est disponible en ligne et sera examiné ici partie par partie afin d'expliquer les modifications effectuées.
fichier raspife3W-stretch
Ce fichier issu du répertoiretemplates
fournit toutes les variables qui ont été modifiées et tous les paquets officiels qui ont été ajoutés à la distribution "par défaut".
Liste des paquets ajoutés
APT_SERVER=ftp.fr.debian.org
APT_INCLUDES="debian-archive-keyring,debian-keyring,automake,autoconf,autogen,gawk,gnupg,gnupg2,\
build-essential,git,cmake,libjson-c-dev,unzip,\
bison,libboost-all-dev,libtool,libtool-bin,pkg-config,checkinstall,libnotify-bin,pandoc,\
python3,python3-dev,python,python-dev,python-configobj,python-cheetah,python-mysqldb\
python-imaging,python-serial,python-usb,python-tk,python3-tk,python3-scipy,\
python-pypandoc,python3-pypandoc,python-pandocfilters,python3-pandocfilters,\
python-geopy,python3-geopy,python-pip,python3-pip,python-smbus,\
libudev-dev,libzzip-dev,zlib1g-dev,libnss-myhostname,libpng16-16,nmap,\
libltdl-dev,usbutils,pmount,ntpdate,texlive,texlive-xetex,nginx-extras,policykit-1,\
openjdk-8-jdk-headless,openjdk-8-jre-headless,\
pcre2-utils,libpcre++-dev,libpcre2-dev,libjpeg-dev,i2c-tools"
Cette partie définit le dépôt utilisé, les paquets ont été ajoutés en fonction des installations requises pendant la mise en place d'une version de l'image tremplin à partir d'une image standard. Pour des raisons de dépendancs croisées lors de la construction de l'image les paquest mariadb
et firehol
n'ont pas pu être installés. Java est installé seulement avec les distributions "headless".
Modèle et régionalisation
Cette partie définit le modèle de Raspberry Pi, la distribution, le nom attribué à la machine, la langue utilisée, la zone de travail, et le modèle du clavier.
RPI_MODEL=3
RELEASE="stretch"
HOSTNAME="raspwife3"
PASSWORD="************"
USER_PASSWORD="************"
DEFLOCAL="fr_FR.UTF-8"
TIMEZONE="Europe/Paris"
EXPANDROOT=false
#-----------------------
XKB_MODEL="pc105"
XKB_LAYOUT="fr"
XKB_VARIANT="latin9"
XKB_OPTIONS=""
Réseau
Pour les besoins du projet la Raspberry doit avoir une IP fixe, le DHCP est donc supprimé et une adresse fixe fournie
ENABLE_DHCP=false
NET_ADDRESS="192.168.***.***/24"
NET_GATEWAY="192.168.***.1"
NET_DNS_1="192.168.***.1"
NET_DNS_2="8.8.8.8"
Quelques autres variables remarquables
Le reste du fichier contient de nombreuses variables positionnées en fonction de choix personnels ou imposés par l'usage, il peut être nécessaire de les modifier. Attirons l'attention sur quelques variables liées au fonctionnement attendu pour cette Raspberry Pi: activation du WIFI intégré, suppression du serveur X et du gestionnaire de fenêtres, ajout de clefs publiques pour permettre l'authentification par clés ssh.
ENABLE_WIRELESS=true
ENABLE_XORG=false
ENABLE_WM=""
SSH_ROOT_PUB_KEY="/home/*******/.ssh/authorized_keys"
SSH_USER_PUB_KEY="/home/*******/.ssh/authorized_keys"
répertoire packages
Ce répertoire contient les paquets non officels mais formattés selon les règles debian qui peuvent être directement intégrés à l'image dès la création. Dans notre cas nous utiliserons seulement weewx. ce répertoire peut-être utilisé pour ajouter par exemple une version de logiciel plus récente que celle disponible dans la version par défaut de debian.
ls packages/
weewx_3.7.1-1_all.deb
2. Configuration avancée pour les besoins du projet Tremplin
La suite de cet article décrit les optimisations et modifications effectuées pour proposer une image de Raspberry Pi aussi proche d'un état opérationnel que possible (seules les configurations liées au réseau local sont requises).
2.a Copie de l'image sur une microSD
Cette manipulation est expliquée en détail ici, les comandes nécessaires dans le monde GNU/linux sont reportées pour faciliter dle travail des usagers avertis.
sudo bmaptool copy --bmap 2017-07-26-rpiw3-stretch.bmap 2017-07-26-rpiw3-stretch.img.xz /dev/mmcblk0
Augmentation de la taille avec gparted.
Si besoin de modifier l'adresse IP (si par exemple la préparation se fait sur un réseau différent du réseau final prévu), modifier les fichiers
etc/hosts
lib/systemd/network/10-eth.network
Insérer la microSD dans la rRspberry Pi et démarrer avec une connexion filaire (le WIFI requérant une configuration supplémentaire)
2.b Modifications globales
Mises à jour et utilitaires
En fonction du délai entre la création de l'image et son installation il peut être nécessaire d'effectuer des mises à jour, nous utilisons l'éditeur jed qui n'a pas encore été installé, ce qui est fait maintenant. La connection se fait avec les clefs insérées et l'utilisateur choisi par défaut (pour nous ens_ife)
ssh ens-ife@192.168.10.141
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install jed dirmngr wpasupplicant php-fpm fcgiwrap libfcgi-dev php-mysqli
Ajout d'utilisateurs
Il est souvent utile de rajouter des utilisateurs qui pourront avoir accès à la station pour des raisons de sécurité ou d'administration.
sudo adduser newuser
Ajout d'un administration local l'utilisateur par défaut ens-ife
étant conservé par le projet tremplin (il est toujours possible à localadm de supprimer cet utilisateur.
sudo adduser localadm
sudo adduser localadm sudo
L'utilisateur weewx est créé pour lancer weewx plutôt que de le faire lancer par root.
sudo adduser weewx
Pour mémoire dans l'image du projet un compte est systématiquement ouvert pour la DSI du rectorat concerné avec ajout d'une clef ssh (exemple ici pour l'académie de Lyon):
sudo adduser aclyondsi
sudo adduser aclyondsi sudo
sudo su aclyondsi
cd
mkdir .ssh
cd .ssh
jed authorized_keys
exit
2.c Configuration de weewx
Le logiciel weewx a été installé lors de la création de l'image mais il n'a pas été configuré; pour y remédier arrêter le service puis éditer le fichier de configuration et remplacer les paramètres par défaut par les valeurs correctes. Attention changer le systeme de mesure (métrique ou autre) altère profondément la base et interrompt le fonctionnement, veiller à faire ces modifications avant le premier démarrage.
Dans le fichier remplacer les *************
par les valeurs vous concernant.
sudo systemctl stop weewx
sudo jed /etc/weewx/weewx.conf
#
#modify the following items data are examples use your own data
#
[Station]
location = "Collège / Lycée************** Tremplin des sciences"
latitude = 45.73 |
longitude = 4.83
altitude = 169, meter
station_type = TE923 # for TFA Meteotime DUO see http://weewx.com/docs/hardware.htm for hardware driver selection
[TE923]
# This section is for the Hideki TE923 series of weather stations.
# The station model, e.g., 'Meade TE923W' or 'TFA Nexus'
model = 'TFA Meteotime Duo'
# The driver to use:
driver = weewx.drivers.te923
#Changes to metric system
[[StandardReport]]
target_unit = METRICWX # Options are 'US', 'METRICWX', or 'METRIC'
skin = Standard
[[[Units]]]
[[[[Groups]]]]
group_altitude = meter
group_speed2 = meter_per_second2
group_pressure = mbar
group_rain = mm
group_rainrate = mm_per_hour
group_temperature = degree_C
group_degree_day = degree_C_day
group_speed = meter_per_second
group_direction = degree_compass
group_moisture = centibar
group_percent = percent
[StdQC]
[[MinMax]]
barometer = 880, 1100, hPa
outTemp = -40, 50, degree_C
inTemp = 10, 40, degree_C
outHumidity = 0, 100
inHumidity = 0, 100
windSpeed = 0, 35, meter_per_second
pressure = 812, 1170, hPa
[StdArchive]
data_binding = wx_binding #other possible new values wx_mariadbextern_binding wx_mariadblocal_binding
[DataBindings]
# new bindings are added to enable local and distant mariadb
[[wx_binding]]
database = archive_sqlite
table_name = archive
manager = weewx.wxmanager.WXDaySummaryManager
schema = schemas.wview.schema
[[wx_mariadbextern_binding]]
database = archive_mysql
table_name = archive
manager = weewx.wxmanager.WXDaySummaryManager
schema = schemas.wview.schema
[[wx_mariadblocal_binding]]
database = archive_mysql_local
table_name = archive
manager = weewx.wxmanager.WXDaySummaryManager
schema = schemas.wview.schema
[Databases]
# A SQLite database is simply a single file
[[archive_sqlite]]
database_type = SQLite
database_name = weewx.sdb
#replace the ***** by the name of the institution in the OpenMetEdu network
# MySQL
[[archive_mysql]]
database_type = MySQL
database_name = OpenMetEdu_*******
# MySQL
[[archive_mysql_local]]
database_type = LocMySQL
database_name = OpenMetEdu_*******
[DatabaseTypes]
[[SQLite]]
driver = weedb.sqlite
SQLITE_ROOT = /var/lib/weewx
[[MySQL]]
driver = weedb.mysql
host = stationsdata.climatetmeteo.fr
user = ***********
password = ************
port = ****
[[LocMySQL]]
driver = weedb.mysql
host = localhost
user = ***********
password = ***********
port = ****
Ajout des cadrans interactifs
Pour obtenir cette "skin" il est d'avbord nécessaire de cloner la ressource depuis github
mkdir Logiciels
cd Logiciels/
git clone https://github.com/mcrossley/SteelSeries-Weather-Gauges.git
cd SteelSeries-Weather-Gauges
Créer ensuite le répertoire qui contiendra le graphisme de l'interface et recopier les fichiers téléchargés
sudo mkdir /etc/weewx/skins/ss
sudo cp weather_server/WeeWX/skin.conf /etc/weewx/skins/ss
sudo cp weather_server/WeeWX/index.html.tmpl /etc/weewx/skins/ss
sudo cp weather_server/WeeWX/gauge-data.txt.tmpl /etc/weewx/skins/ss
sudo mkdir /etc/weewx/skins/ss/css
sudo cp web_server/css/*.css /etc/weewx/skins/ss/css
sudo mkdir /etc/weewx/skins/ss/scripts
sudo cp web_server/scripts/*.js /etc/weewx/skins/ss/scripts
Éditer ensuite le fichier /etc/weewx/skins/ss/scripts/gauges.js
en fonction des paramètres locaux
weatherProgram : 6,
imgPathURL : '',
stationTimeout : 10, // set to twice archive interval, in minutes
showUvGauge : true, // false if there is no UV sensor
showSolarGauge : true, // false if there is no solar radiation sensor
showRoseGauge : false, // true if field WindRoseData is populated
Modifier enfin weewx.conf
[StdReport]
...
[[SteelSeries]]
skin = ss
HTML_ROOT = /var/www/html/ss
Pour afficher les mesures en temps réel il est nécessaire de synchroniser la Raspberry Pi avec le serveur web des opendata, cela se fait en modifiant les paramètres [[RSYNC]]
de weewx.conf
:
[[RSYNC]]
#HTML_ROOT = /var/www/html/ss
#server = stationsdata.climatetmeteo.fr
#path = folder_name_path_on_server
#user = opendata
La clef ssh de connexion au serveur doit ensuite être ajoutée.
2.d installation et configuration du pare-feu
La Raspberry va être exposée sur le net il est important d'^etre attentifs à la sécurité de cette machine. Une première méthode est de mettre en place un pare-feu mais cette opération est délicate et nous utiliserons donc un logiciel d'asssitance à la création de pare-feu firehol. Ce logiciel permet d'établir des règles de filtrage avec une syntaxe (relativement) intelligible dans un fichier de configuration, il se charge ensuite de charger les règles des iptables correspondant aux souhaits de l'usager. L'installation du fichier se fait comme d'habitude
sudo apt-get install firehol
Activer firehol :
sudo jed /etc/default/firehol
#modify as follows
# To enable firehol at startup set START_FIREHOL=YES (init script variable)
START_FIREHOL=YES
Le fichier de configuration se trouve dans la hiérarchie /etc/firehol/firehol.conf
. Les modifications à effectuer dans le cadre du projet tremplin sont proposées ci-dessous. Elles sont toutes commentées afin de permettre le fonctionnement par défaut de l'image. Le pare-feu doit être configuré avec les paramètres locaux de l'usager, si la configuration ne correspond pas à l'environnement réseau de la Raspberry elle peut devenir inaccessible ! Soyez prudents. En cas de problème il est toujours possible d'accéder au contenu de la microSD depuis une machine GNU/linux et de modifier le fichier de configuration; si vous êtes sous un autre système d'exploitation il est possible de démarrer votre ordinateur en utilisant une clef USB GNU/linux live qui fournit un ordinateur opérationnel sans rien toucher de ce qui est installé par exemple debian live.
Pour les participants au projet Tremplin des sciences des fichiers pré-configurés sont disponibles sur les sites d'accompagnement, au besoin contacter l'un des responsables ou accompagnateurs.
Propositions de modifications du fichier de configuration firehol.conf
.
# FireHOL configuration file
#
# See firehol.conf(5) manual page and FireHOL Manual for details.
#
# This configuration file will allow all requests originating from the
# local machine to be send through all network interfaces.
#
# No requests are allowed to come from the network. The host will be
# completely stealthed! It will not respond to anything, and it will
# not be pingable, although it will be able to originate anything
# (even pings to other hosts).
#
version 6
# Accept all client traffic on any interface
interface any world
client all accept
## Configure log
#FIREHOL_LOG_PREFIX="firehol: "
##ENABLE_IPV6=0
## Configure AUthorized IPs
#ENS_IFE="***.***.***.***/** ***.***.***.***/**"
#ETAB="***.***.***.*** ***.***.***/**"
#INTERNE=192.168.***.0/24
# Rescue
#RESCUE=***.***.***.***
#known_ips="${ENS_IFE} ${INTERNE} ${ETAB} ${RESCUE}"
#public_ip=192.168.***.***
## Configure client and server
#server_http_ports="tcp/**** tcp/****:****"
#server_https_ports="tcp/****"
#server_ssh_ports="tcp/****"
##server_ftp_ports="tcp/****"
##client_http_ports="default"
## Open mysql port ****
#server_mysql_ports="tcp/****"
##
#ipv4 interface enx********** KnownMachines src "${known_ips}" dst ${public_ip}
# policy reject
# protection strong
# server "icmp ssh http https mysql" accept
# client all accept
#ipv4 interface enxb827eba986b8 restOfTheNet src not "${UNROUTABLE_IPS} ${known_ips}" dst ${public_ip}
# policy reject
# protection strong
# server "icmp http" accept
# client all accept
2.e Installation et configuration de mariadb
Par défaut weewx utilise une base sqlite, pour des raisons d'interopérabilité et de facilitation du partage des données nous installons les composants serveur et client de la base mariadb. Nous effectuons un installation par défaut, au moment de la rédaction (27/07/2017) la dernière version disponible est 10.1.
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo apt-get install mariadb-client mariadb-server mariadb-common
La base de données est maintenant installée, il est nécessaire de la configurer. On ajoute un mot de passe à l'utilisateur root, on ajoute ensuite un utilisateur admin avec privilèges qui évite d'utiliser root pour la configuration.
sudo mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.23-MariaDB-9+deb9u1 Debian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select password ('AChanger1$');
+-------------------------------------------+
| password ('AChanger1$') |
+-------------------------------------------+
| *695008F6BF1536D1C456BC7B1226080345359BB9 |
+-------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> UPDATE user SET password=PASSWORD("*695008F6BF1536D1C456BC7B1226080345359BB9") WHERE User='root';
MariaDB [(none)]> select password ('***************');
+-------------------------------------------+
| password ('*************') |
+-------------------------------------------+
| *######################################## |
+-------------------------------------------+
1 row in set (0.00 sec)
# creation d'un user privilégié pouvant accéder localement et à distance
MariaDB [mysql]> CREATE USER 'admin'@'localhost' IDENTIFIED BY PASSWORD '*#################################';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
MariaDB [mysql]> CREATE USER 'admin'@'%' IDENTIFIED BY '*######################################';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
#Si besoin pour modifier le mot de passe
MariaDB [mysql]> UPDATE user SET password=PASSWORD("********************") WHERE User='user_a_modifier';
MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [(none)]> select host, user, default_role, is_role, password from mysql.user;
+-----------+-------+--------------+---------+-------------------------------------------+
| host | user | default_role | is_role | password |
+-----------+-------+--------------+---------+-------------------------------------------+
| localhost | root | | N | *######################################## |
| localhost | admin | | N | *######################################## |
| % | admin | | N | *######################################## |
+-----------+-------+--------------+---------+-------------------------------------------+
\q
Nous souhaitons pouvoir accéder à la base depuis des machines extérieures (pour partager les données dans le cadre du projet par exemple), pour cela il est nécessaire de modifier quelques paramètres du fichier de configuration /etc/mysql/mariadb.conf.d/50-server.cnf
.
sudo jed /etc/mysql/mariadb.conf.d/50-server.cnf
# pour avoir un accès distant
# Modifier
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
# pour changer le port
port = ****
Relancer le serveur pour vérifier que les paramètres sont priss en compte.
sudo systemctl restart mysqld
sudo systemctl status mysqld
Passer le système de sécurisation par défaut :
sudo mysql_secure_installation
La suite des interventions sur la base de données peut alors se faire depuis un outil à ditance comme DBeaver, pour éviter des risques PHPmyadmin n'est pas installé.
Following tasks might help future users :
- créer un nouvel utilisateurr (user_college1)
- créer une nouvelle base de données (OpenMetEdu_College1)
- donner tous les privilèges au nouvel utilisateur sur la nouvelle base
- configurer weewx avec ces paramètres
2.f Configuration du réseau
Deux modifications sont nécessaires pour améliorer la sécurité et consolider les connexions réseau. La première consiste à utiliser un port non standard pour les connections via ssh
, pour ce faire éditer le fichier /etc/ssh/sshd_config
et modifier la valeur de la variable port
.
sudo jed /etc/ssh/sshd_config
# décommenter et modifier la ligne suivante
#Port 22
La seconde impose la mise en place d'iun fichier de configuration /etc/systemd/network/50-wired.network
.
sudo mkdir /etc/systemd/network
sudo jed /etc/systemd/network/50-wired.network
#ajouter la configuration suivante
[Match]
Name=enx*
Host=raspwife3
Virtualization=no
[Network]
DHCP=no
DNS=***.***.***.***
[Address]
Address=***.***.***.***/24
[Route]
Gateway=***.***.***.1
Pour permettre la première connexion le paramètre Name
est positionné à la valeur enx*
afin de prendre en compte toute interface réseau construite à partir d'une adresse mac, c'est une commodité qui devra être traitée dès la première connexion en remplaçant la valeur enx*
par le nom de l'interface fourni par la commande :
ip token
Il est aussi possible de configurer une connexion en suivant les indications de ce blog toutefois il semble souhaitable pour simplifier les choses de s'en tenir à une connexion filaire d'autant que la station météo est aussi connectée via un câble.
2.g Mise en place d'un serveur web
Nous allons utiliser la base de données locale maraidb installée plus haut et les outils proposés par le site météo Villarzel, nous proposons la version antérieure (sans afficheurs dynamiques) et nous faisons appel à toute contribution pour proposer dans l'image générique la version dynamique. Le site web est installé dans le répertoire /opt/WeatherWeb
. Le fichier à configurer est /opt/WeatherWeb/mysql_connect.php
sudo jed /opt/WeatherWeb/mysqli_connect.php
Le fichier est de la forme suivante en remplaçant les *****
par les valeurs correspondant à votre situation :
<?php
$server ="localhost:********";
$user="**********";
$pass="***********";
$db="******************";
mysql_connect($server,$user,$pass) or die ("Erreur SQL : ".mysql_error() );
mysql_select_db($db) or die ("Erreur SQL : ".mysql_error() );
?>
Configuration de nginx
sudo jed /etc/nginx/sites-available/meteoRaspWife3
#avec un contenu du type :
server {
listen 80 default_server;
listen [::]:80 default_server;
root /opt/WeatherWeb/;
index index.html index.htm index.php;
server_name _;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# With php5-fpm:
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
#puis
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/meteoRaspWife3 /etc/nginx/sites-enabled/
2. Modifications pour les images pré-configurées du projet Tremplin
Liste des fichiers de configuration susceptibles d'empêcher la connexion automatique de la raspberry pi au réseau à vérifier avant toute tentative de connexion :
/etc/firehol/firehol.conf
/etc/systemd/network/50-wired.network
/etc/hosts
Ces fichiers sont "anonymisés" pour produire l'image mise à disposition du public en montant la microSD comme disque dur externe.
sudo systemctl halt
#mounting on another computer
cd /media/user/uuid/
sudo jed /etc/firehol/firehol.conf
sudo jed /etc/systemd/network/50-wired.network
sudo jed /etc/hosts
sudo jed /lib/systemd/network/10-eth.network
#Sauvegarde de l'image
sudo dd if=/dev/mmcblk0 of=2017-07-29-debianStretchRpiW3Public.img bs=16M conv=sparse count=450
#create bmap
bmaptool create -o 2017-07-29-debianStretchRpiW3Public.bmap 2017-07-29-debianStretchRpiW3Public.img
#compression de l'image
7z a -txz 2017-07-29-debianStretchRpiW3Public.img.xz 2017-07-29-debianStretchRpiW3Public.img
Une image pré-configurée est disponible pour les participants au projet Tremplin, les configurations suivantes sont effectuées :
- configuration des ports
- ajout de l'utilisateur rectorat de Lyon
- configuration des adresses réseau
Il reste à chaque responssable de site d'ajouter les paramètres spécifiques avant de connecter la Raspberry au réseau
Commentaires