Skip to content

Latest commit

 

History

History
273 lines (219 loc) · 14.2 KB

README-FR.md

File metadata and controls

273 lines (219 loc) · 14.2 KB

DOCKER-FILO-SCIENCE

Présentation

Le logiciel Filo-Science permet de saisir les informations issues des pêches électriques de poissons, ainsi que celles de pistage des animaux munis de balises. S'il est conçu pour fonctionner en mode web, son utilisation en mode déconnecté peut parfois être nécessaire, notamment au bord des cours d'eau.

Pour cela, le logiciel doit pouvoir être embarqué à bord d'un ordinateur de terrain (portable ou tablette Windows ou Linux, ou Raspberry Pi). La technologie choisie est celle basée sur les containers Docker, pour pouvoir installer une base de données Postgresql et un serveur Web Apache2 pour héberger le code PHP.

Les scripts fournis permettent d'installer deux containers Docker, l'un pour héberger la base de données, l'autre pour le serveur Web.

Cette solution est également utilisable pour exécuter Filo-Science sur tout OS autre (CentOS, Windows, etc.), tout en garantissant le fonctionnement dans l'environnement Debian.

Installation de Docker

Debian, Ubuntu ou Raspbian

    sudo -s
    apt-get update
    apt-get install curl
    curl -fsSL https://get.docker.com/ | sh
    apt-get install docker-compose
    systemctl enable docker
    service docker start
    groupadd docker
    usermod -aG docker $USER

Windows

Suivez les instructions décrites ici : https://docs.docker.com/docker-for-windows/install/.

Installez également le programme PowerShell de Windows, qui vous permettra d'ouvrir un terminal et de lancer les commandes manuelles.

Installation des containers

Les commandes sont données pour Linux. Pensez à adapter la démarche à Windows (téléchargement manuel depuis un navigateur, décompression avec Windows, etc.).

Téléchargez le code de ce dépôt dans un dossier de votre ordinateur :

sudo apt-get install wget unzip
wget https://github.com/inrae/filo-docker/archive/master.zip
unzip master.zip
cd filo-docker-master

Créez un volume Docker pour héberger la base de données Postgresql :

docker volume create --name filopgdata -d local

Créez les deux images et les containers associés :

docker-compose up --build

Si tout se passe bien, vous retrouverez les images suivantes :

docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
filo-docker_filo-web       latest              834d8fd9f504        18 hours ago        782MB
filo-docker_filo-db        latest              78d95ff5fea4        19 hours ago        888MB

Et les containers :

docker container ls
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                      NAMES
125eafce92ac        filo-docker_filo-web   "/bin/sh -c /start.sh"   56 seconds ago      Up 54 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   filo-docker_filo-web_1
4f6b43a1261a        filo-docker_filo-db    "su - postgres -c 'P…"   17 hours ago        Up 10 minutes       0.0.0.0:5433->5432/tcp                     filo-docker_filo-db_1

Attention : le serveur web expose les ports 80 et 443. Si vous avez déjà un serveur web qui fonctionne dans votre ordinateur, vous devrez arrêter votre serveur web local avant de lancer le démarrage des containers.

Si vous avez installé le client Postgresql dans votre ordinateur, le serveur postgresql sera accessible depuis le port 5433, en localhost :

psql -U filo -h localhost -p 5433
Mot de passe pour l'utilisateur filo : filoPassword
psql (11.5 (Ubuntu 11.5-3.pgdg18.04+1))
Connexion SSL (protocole : TLSv1.3, chiffrement : TLS_AES_256_GCM_SHA384, bits : 256, compression : désactivé)
Saisissez « help » pour l'aide.

filo=#

lancer l'application web

Docker est installé dans l'ordinateur qui sert à accéder à l'application

C'est le cas d'un ordinateur portable Windows ou Linux. Dans un premier temps, récupérez l'adresse IP du serveur Web :

docker exec filo-docker_filo-web_1 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.19.0.3  netmask 255.255.0.0  broadcast 172.19.255.255

Ici, le container s'est vu attribué l'adresse IP 172.19.0.3.

Ajoutez une ligne dans votre fichiers /etc/hosts (Linux) ou c:\Windows\System32\drivers\etc\hosts (Windows) :

172.19.0.3 filo-docker filo-docker.local

Dans votre navigateur, allez sur le site : https://filo-docker.local. Acceptez l'exception de sécurité : vous devriez accéder à l'application.

Vous pouvez vous connecter avec le login admin, mot de passe password : il s'agit d'une installation par défaut. Pensez ensuite à supprimer le compte admin ou à en changer le mot de passe, quand vous travaillerez en production (sauf accès uniquement local).

Docker est installé dans un Raspberry

Consultez la documentation correspondante dans le chapitre Utilisation d'un Raspberry Pi.

Quelques commandes utiles de docker

Les commandes docker-compose doivent être exécutées depuis le dossier filo-docker-master.

  • docker images : affiche la liste des images disponibles
  • docker container ls : affiche la liste des containers
  • docker stop filo-docker-master_filo-web_1 : arrête le container contenant l'image filo-web
  • docker start filo-docker-master_filo-web_1 &! : démarre le container précédemment arrêté
  • docker-compose up -d : démarre les filo-web et filo-db dans leurs containers respectifs, en les recréant
  • docker exec -ti filo-docker_filo-web_1 /bin/bash : se connecte au container et permet d'exécuter des commandes
  • docker rmi filo-docker_filo-web --force : supprime brutalement l'image filo-web
  • docker-compose up --build : recrée les deux images. Attention : la base de données va être recréée !
  • docker update --restart=no filo-docker_filo-web_1 : désactive le démarrage automatique du container
  • docker inspect filo-docker_filo-web_1 : affiche le paramétrage courant du container
  • docker system prune -a : supprime toutes les images, pour réinitialiser docker

Sauvegarde de la base de données

L'image filo-db intègre une sauvegarde automatique de la base de données, qui se déclenche tous les jours à 13:00. Vous la retrouverez dans votre ordinateur, dans le dossier Dossier personnel/filopgbackup. Pensez à la déplacer vers un autre emplacement sur le réseau, pour éviter de tout perdre en cas de crash ou de vol de l'ordinateur.

Mettre à jour l'application

La mise à jour de l'application va être réalisée en deux étapes :

  • d'une part, en mettant à jour la base de données, si c'est nécessaire ;
  • d'autre part, en recréant l'image filo-web.

Pour pouvoir télécharger le code de l'application, votre ordinateur doit être connecté à Internet. Utilisez un câble Ethernet si vous travaillez avec un Raspberry-pi.

Réaliser une sauvegarde de la base de données

docker exec -ti filo-docker-master_filo-db_1 bash
su - postgres -c /var/lib/postgresql/backup.sh

Vous devriez retrouver vos fichiers de sauvegarde dans le dossier /filopgbackup de votre ordinateur ( correspond à votre dossier par défaut).

Mettre à jour la base de données

Récupérez le numéro de la version de la base de données actuelle :

docker exec -ti filo-docker-master_filo-db_1 bash
su postgres -c 'psql filo -c "select dbversion_number from filo.dbversion order by dbversion_date desc limit 1"'

Recherchez dans le dépôt Github s'il existe un script de modification de la base de données (dans https://github.com/inrae/filo-science/tree/master/install/pgsql). Le script est sous la forme :

alter-1.1-1.2.sql

où 1.1 correspond à la version courante de votre base de données, et 1.2 à la version à atteindre.

Dans votre container Docker, téléchargez le script :

su - postgres
wget https://github.com/inrae/filo-science/raw/master/install/pgsql/alter-1.1-1.2.sql

et exécutez ce script :

psql -U filo filo -h localhost -f alter-1.2-1.3.sql

Le mot de passe par défaut est : filoPassword

Si vous avez quelques versions de retard, vous devrez exécuter les scripts successivement pour arriver au niveau de la version courante.

Quittez le container par appui sur ctrl-D (au besoin, plusieurs fois).

Mettre à jour l'application

Sauvegardez les fichiers de paramétrage :

mkdir param
docker cp filo-docker-master_filo-web_1:/var/www/filo-science/filo-science/param/param.inc.php param/
docker cp filo-docker-master_filo-web_1:/var/www/filo-science/filo-science/param/id_filo-science param/
docker cp filo-docker-master_filo-web_1:/var/www/filo-science/filo-science/param/id_filo-science.pub param/

Arrêtez le container, puis recréez l'image :

docker stop filo-docker-master_filo-web_1
cd filo-docker-master
docker compose up --build filo-web &!

Docker va recréer l'image en chargeant la nouvelle version de l'application. Une fois le container démarré, réintégrez les fichiers de paramétrage sauvegardés précédemment :

cd ..
docker cp param/param.inc.php filo-docker-master_filo-web_1:/var/www/filo-science/filo-science/param/
docker cp param/id_filo-science filo-docker-master_filo-web_1:/var/www/filo-science/filo-science/param/
docker cp param/id_filo-science.pub filo-docker-master_filo-web_1:/var/www/filo-science/filo-science/param/

Attention : si vous recréez le container, vous devrez relancer la copie des fichiers de paramétrage.

Utilisation d'un Raspberry Pi

Installation de Raspbian

Pour l'installation de Raspbian, consultez la documentation d'installation de Raspberry.

Pensez à activer l'accès via ssh, et désactivez l'interface graphique au démarrage, qui consomme des ressources et est sans intérêt dans le contexte de Filo-Science.

Connexion en ssh

Pour vous connecter à votre Raspberry, utilisez la commande :

ssh pi@adresse_ip

Une fois connecté, tapez la commande :

sudo -s

si vous avez besoin de travailler en mode root.

Installation de Docker et de l'application

Reprenez les instructions détaillées en début de document.

Modifier les droits pour la sauvegarde de la base de données

En étant connecté avec le compte pi :

cd /home/pi
sudo chown pi:pi filopgbackup
chmod 777 filopgbackup

Créer un réseau wifi pour connecter directement les terminaux

Suivez les instructions définies dans le premier chapitre de ce document : https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md (Setting up a Raspberry Pi as an access point in a standalone network (NAT)).

Adpatez le contenu du fichier /etc/hostapd/hostapd.conf, et notamment :

  • ssid=filo-docker
  • wpa_passphrase=votre_mot_de_passe

Editez ensuite le fichier /etc/dnsmasq.conf, et rajoutez ces lignes :

server=8.8.8.8
address=/filo-docker.local/192.168.4.1

La ligne server correspond au serveur d'adresses web (DNS) de Google. Si vous souhaitez utiliser un autre DNS, par exemple celui de votre organisme, modifiez cette ligne.

Redémarrez le Raspberry, et connectez-vous au réseau wifi filo-docker. Testez la communication avec l'application, en entrant l'adresse suivante dans un navigateur : https://filo-docker.local. Vous devez accéder à la page d'accueil. En cas de problème d'accès (adresse non reconnue), vous pouvez également vous connecter directement à l'adresse IP : https://192.168.4.1.

Cette configuration vous permet de charger les dalles Openstreetmap avant de partir sur le terrain :

  • au bureau, connectez le Raspberry au réseau local avec un câble Ethernet
  • connectez votre tablette au Raspberry en wifi
  • lancez l'application, à l'adresse https://192.168.4.1.
  • ouvrez le module Paramètres>Mise en cache de la cartographie, et téléchargez les dalles dont vous aurez besoin sur le terrain
  • arrêtez le Raspberry, déconnectez le câble Ethernet, fermez le navigateur de votre tablette
  • redémarrez le Raspberry, reconnectez la tablette au wifi, et rouvrez l'application : les dalles sont accessibles sans que vous soyez connectés à Internet.

Remerciements

Les scripts sont issus de ceux élaborés par Julien Ancelin et Christine Plumejeaud-Perreau pour la diffusion via Docker de l'application Collec-Science, et diffusés dans Github. Qu'ils en soient remerciés pour le travail réalisé.

Licence

Les scripts sont diffusés sous licence MIT.