Outil de réservation pour encadrer la pratique du bivouac dans les réserves naturelles de Haute-Savoie
Suite à la une hausse de la pratique du bivouac en réserves naturelles, Asters, le conservatoire d'espaces naturels de Haute-Savoie, a développé avec ses partenaires un outil de réservation du bivouac.
Cette plateforme en ligne est composé d’un outil cartographique et un quizz de sensibilisation.
L'objectif est de mieux gérer cette pratique et ces effets sur la biodiversité grâce à une meilleure connaissance des pratiquants (suivi quantitatif et sensibilisation ludique).
Développement
Asters-CEN74 : Jules Grillot et Juliette Buret
Oslandia : Sylvain Beorchia et Vincent Bré
L'application s'appuie sur un certain nombre de variables d'environnement.
Vous devez créer un fichier .env
sur la base du fichier .env.sample
.
Dans ce fichier, sont définies les variables suivantes :
GIT_AUTHOR_NAME
: Prénom et nom de l'utilisateur Gitlab.GIT_AUTHOR_EMAIL
: Adresse e-mail de l'utilisateur Gitlab.GITLAB_REPO
: Adresse du répertoire Gitlab.GITLAB_REPO_TOKEN_USER
: Nom de l'access token qui permettra le clône du répertoire.GITLAB_REPO_TOKEN_PASSWORD
: Mot de passe associé à l'access token.POSTGRES_VERSION
: Version PostgreSQLPOSTGRES_USER
: Nom d'utilisateur qui va intéragir avec la base de donnéesPOSTGRES_PASSWORD
: Mot de passé associé à l'utilisateurPOSTGRES_DB
: Nom de la base de donnéesPOSTGRES_HOST
: Adresse de la base de donnéesPOSTGRES_PORT
: Port utilisé par la base de donnéesAPI_FLASK_SERVER_HOST
: Adresse de l'APIAPI_FLASK_SERVER_PORT
: Port de l'API lorsqu'elle est lancée en mode productionAPI_OPENAPI_URL
: Chemin vers le fichier openapi.jsonAPI_DOCS_URL
: Chemin vers la documentation SwaggerFRONT_PORT
: Port utilisé par l'application ReactSMTP_PORT
: Port du serveur SMTPSMTP_SERVER
: Adresse du serveur SMTPSMTP_LOGIN
: Identifiant de l'utilisateurSMTP_PASSWORD
: Mot de passe associé à l'utilisateurSMTP_SENDER_EMAIL
: Adresse e-mail de l'expéditeur
Afin de garantir une qualité entre les différentes contributions, une série de git hooks (à travers l'outil pre-commit) est disponible.
Il est fortement recommandé de travailler dans un environnement virtuel :
python3 -m venv .venv
Activation de l'environnement :
. .venv/bin/activate
Installation des prérequis :
python -m pip install -U -r requirements.txt
Installation des git hooks :
pre-commit install
Seront installés les hooks suivants :
Pour lancer le backend, référez-vous au fichier README.
Pour lancer le frontend, référez-vous au fichier README.
cd ansible
Le groupe bivouac_remote
est présent dans le fichier ansible/hosts
. Il utiliser le fichier de variables bivouac_remote.cen74.com.yml
. Il faut également disposer d'une configuration SSH fonctionnelle nommée bivouac_remote.cen74.com
pour pouvoir se connecter au serveur distant.
Exemple de configuration SSH (~/.ssh/config
):
Host bivouac_remote.cen74.com
HostName 51.75.125.103
Port 22
User ubuntu
IdentityFile /home/vincent/.ssh/bivouac_cen74
Pour tester la connexion au serveur distant, on peut utiliser la commande suivante:
ansible bivouac_remote -m ping -i hosts
Pour pouvoir déployer un rôle en particulier (exemple avec front. le mot de passe vault est dans le pass sous la clé ansible_vault_password):
ansible-playbook --inventory hosts --limit bivouac_remote --tags front -v playbook.yml --ask-vault-pass
L'accès au serveur se fera via un accès SSH. Une fois le nécessaire fait par le client sur le serveur, il faudra créer une nouvelle clé ssh et l'envoyer sur le serveur.
ssh-keygen -t rsa
ssh-copy-id -i /home/vincent/.ssh/id_rsa_bivouac_client.pub -p 7422 -o PubkeyAuthentication=no [email protected]
cd ansible
Le groupe bivouac_client
est présent dans le fichier ansible/hosts
. Il utiliser le fichier de variables bivouac_client.cen74.com.yml
. Il faut également disposer d'une configuration SSH fonctionnelle nommée bivouac_client.cen74.com
pour pouvoir se connecter au serveur distant.
Exemple de configuration SSH (~/.ssh/config
):
Host bivouac_client.cen74.com
HostName 178.33.110.230
Port 7422
User oslandia
IdentityFile /home/vincent/.ssh/id_rsa_bivouac_client
Pour tester la connexion au serveur distant, on peut utiliser la commande suivante:
ansible bivouac_client -m ping -i hosts
Pour pouvoir déployer un rôle en particulier (exemple avec front. le mot de passe vault est dans le pass sous la clé ansible_vault_password):
ansible-playbook --inventory hosts --limit bivouac_client --tags front -v playbook.yml --ask-vault-pass
PGPASSWORD=... psql -U bivouac -d bivouac -h localhost
sudo service apache2 status
sudo systemctl status apache2
sudo systemctl status nginx.service
sudo journalctl -xeu nginx.service
sudo cat /var/log/nginx/error.log
sudo cat /var/log/nginx/access.log
sudo service supervisor status
sudo service supervisor restart
sudo supervisorctl status all
sudo journalctl -u supervisor.service -n 100 -f
sudo supervisorctl restart fastapi-bivouacapi
cat /tmp/logs/supervisor-bivouacapi-stdout.txt
cat /tmp/logs/supervisor-bivouacapi-stderr.txt
cat /tmp/logs/supervisor-bivouacfront-stdout.txt
cat /tmp/logs/supervisor-bivouacfront-stderr.txt
sudo apt-get --purge autoremove supervisor