Passage du protocole ftp à rsync pour l’upload des datas de Weewx

décembre 24, 2020

Avec l’arrivée de la nouvelle station FROGGIT, j’ai fait le choix de générer manuellement les rapports des données de la base.

L’utilisation de Wee_report

J’utilise pour l’instant l’outil intégré de Weewx « wee_report » qui me permet de générer « à la volée » mes rapports et les courbes en fonction des templates installés.

Tout est expliqué ici  : http://weewx.com/docs/utilities.htm#wee_reports_utility

 

wee_reports
In normal operation, WeeWX generates reports on each archive interval, when new data arrive. The reports utility is used to generate reports on demand. It uses the same configuration file that WeeWX uses.

Run the utility with the --help option to see how it is used:

wee_reports --help
This results in something like this:

Usage: wee_reports: [config_file] [timestamp] [--config=CONFIG_FILE] [--help]

Run all reports defined in the specified configuration file. Use this utility
to run reports immediately instead of waiting for the end of an archive
interval.

Options:
  -h, --help            show this help message and exit
  --config=CONFIG_FILE  Use the configuration file CONFIG_FILE

j’utilise donc un petit script « gen_wu.sh » qui va utiliser le fichier de configuration propre à la station Froggit.

/home/pi/weewx-4.2.0/bin/wee_reports --config=/home/weewx/FROGGIT.conf

A chaque mise a jour de la base Weewx de la Froggit ( cf mon article ici  : Utilisation des données de Weather Underground (toutes stations confondues…) ), j’exécute ce script qui me permet :
1- de génèrer mes templates avec les dernieres données de weex_database
2- d’uploader mes fichiers ici (sur ce site)

Jusqu’à maintenant, j’utilise le protocole ftp qui me permet d’uploader de façon simple les fichiers de mes template ( j’ai créé un compte user/mot_de_passe depuis mon hébergeur) qui pointe simplement sur  le bon dossier.

 

L’utilisation du skin ftp :

Il faut juste rajouter une section :

    
[[FTP]]
        skin = Ftp
        enable = true
        secure_ftp = false
        HTML_ROOT = chemin_source
        port = 21
        passive = 1
        user = votre compte ftp (user@adresse_ftp)
        password = le mot_de_passe
        server = adresse_ftp
        path = chemin_destination

Mais voila l’utilisation de ce « skin » peut poser des soucis  , le temps d’upload peut atteindre jusqu’à  400 secondes et peut également tomber en timeout.

L’utilisation du skin Rsync :

[[RSYNC]]
   
        skin = Rsync
        enable = true
        server = adresse_serveur
        path = dossier_a_synchroniser
        user = utilisateur
        delete = 0

Mais c’est ici  que ca se corse, l’utilisation de ce protocole nécessite des paramétrages précis pour son activation et son utilisation en toute sécurité.

If you wish to use rsync, you must configure passwordless ssh using  public/private key authentication from the user account that weewx
runs as to the user account on the remote machine where the files will be copied.

Il va falloir autoriser le protocole ssh / (rsync) entre l’hébergement web (serveur distant) et le raspberry (serveur local).

Mise en place du protocole ssh

je suis chez o2switch , hébergeur web français et de très bonne qualité. ( c’est un lien NON affilié, je le précise, c’est à dire que je ne touche pas de commission si vous prenez un compte chez eux !).
Depuis peu, on peut mettre en liste blanche les adresses ip que vous voulez (avant, il fallait passer par le support et en faire la demande) :
Ici le tuto hyper détaillé pour la mise en place.
https://faq.o2switch.fr/hebergement-mutualise/tutoriels-cpanel/whitelist-firewall

  • Coté serveur distant :  whitelister votre ip WAN (si vous avez une ip WAN fixe ou votre adresse style noip ou dyndns)
  • Coté serveur local : whitelister votre ip hebergeur a pouvoir fowarder sur votre raspberry PI ( un pur nattage en le sécurisant , en ne mettant que la seule adresse de votre serveur distant ca sécurise un peu)

Une fois les 2 cotés mis en place :

  • Depuis le serveur local : ssh identifiantcPanel@mondomaine.tld : ca fonctionne mais ca me demande mon mot de passe
  • Depuis le serveur distant : ssh identifiantrpi@mon_adresse_ipWAN : ca fonctionne mais ca me demande mon mot de passe

Il faut donc mettre en place un echange de clefs ssh afin de ne pas etre obligé de saisir a chaque fois le mot passe.

  • Coté serveur local : on génère une clef ssh puis on prends la clef publique et on l’envoie sur le serveur distant
  • Coté serveur distant : même chose mais dans l’autre sens.

le tuto de O2Switch est clair et très détaillé :
https://faq.o2switch.fr/hebergement-mutualise/acces-ssh-shell-cli-cmdline

une chose importante : les droits des fichiers (sinon ca ne fonctionne pas):

Dossier .ssh : chmod 700
Fichier .pub (clé publique) : chmod 644
Fichier .key ou id_rsa (clé privée, sur votre ordinateur) : chmod 400
Authorized_keys (sur le serveur) : chmod 644

Conclusion

En passant du protocole FTP au protocole RSYNC , je suis passé de 400 sec de transfert à 3 secondes .

A bientôt