Installation

Les étapes suivantes décrivent l'installation sur des systèmes Linux (testées sur un système d'exploitation basé sur ArchLinux et sur Ubuntu en intégration continue).
Sur d'autres systèmes d'exploitations, des problèmes peuvent être rencontrés et des adaptations nécessaires.

Note

D'autres guides d'installation sont disponibles grâce aux contributeurs :

Avertissement

Remarque : FitTrackee est en cours de développement, certaines fonctionnalités peuvent être instables.

Note

Selon le système d'exploitation et la version de Python installée, des dépendances supplémentaires peuvent être requises, telles que gcc ou libgdal-dev.

A partir de PyPI

$ pip install fittrackee
  • Créer la base de données fittrackee

Exemple :

CREATE USER fittrackee WITH PASSWORD '<PASSWORD>';
CREATE SCHEMA fittrackee AUTHORIZATION fittrackee;
CREATE DATABASE fittrackee OWNER fittrackee;

Note

cf. documentation PostgreSQL pour les schémas et privilèges.
  • Installer l'extension PostGIS

Exemple pour la base de données fittrackee :

$ psql -U <SUPER_USER> -d fittrackee -c 'CREATE EXTENSION IF NOT EXISTS postgis;'

Note

PostGIS doit être installé sur le système d'exploitation, voir la documentation d'installation.
Plusieurs systèmes d'exploitation proposent des paquets pré-compilés pour PostGIS, voir le wiki.

Par exemple, copier et coller le fichier .env à partir de .env.example et activer le fichier.

$ nano .env
$ source .env
  • Initialiser le schéma de la base de données

$ ftcli db upgrade
  • Démarrer l'application

$ fittrackee
  • Démarrer les workers de la file d'attente des tâches si l'envoi des courriels est activé, avec l'interface de ligne de commandes de Dramatiq (cf. documentation):

$ dramatiq fittrackee.tasks:broker --processes=$WORKERS_PROCESSES --log-file=$DRAMATIQ_LOG

Note

Il est également possible de démarrer les workers de la file d'attente des tâches avec l'interface de ligne de commandes de Flask-dramatiq :
$ flask worker --processes 2
Mais lancer l'interface de ligne de commandes de Flask-Dramatiq génère des erreurs sur Python 3.13+. Les emails et les exports de données de l'utilisateur sont bien envoyés, mais le middleware évitant que les acteurs de fonctionner trop longtemps n'est pas actif. Veuillez utiliser l'interface de ligne de commandes de Dramatiq à la place pour le moment.

Note

Pour démarrer l'application et les workers avec le service systemd, cf. Déploiement
  • Ouvrir l'URL http://localhost:5000 avec un navigateur et s'inscrire

  • Pour attribuer le rôle de propriétaire au compte nouvellement créé, utiliser la ligne de commande suivante :

$ ftcli users update <username> --set-role owner

Note

Si le compte de l'utilisateur est inactif, il sera alors activée.

A partir des sources

Avertissement

Depuis la version 0.2.1 de FitTrackee, l'installation des paquets Python nécessite Poetry.
Pour plus d'information, voir la documentation de Poetry

Note

Pour conserver l'environnement virtuel dans le répertoire du projet, mettre à jour la configuration de Poetry.
$ poetry config virtualenvs.in-project true

Environnements de production

Avertissement

Note : FitTrackee est en cours de développement. Certaines fonctionnalités peuvent être instables.
  • Télécharger la dernière version (à ce jour, la version v1.1.0) :

$ wget https://github.com/SamR1/FitTrackee/archive/1.1.0.tar.gz
$ tar -xzf v1.1.0.tar.gz
$ mv FitTrackee-1.1.0 FitTrackee
$ cd FitTrackee
  • Créer le fichier .env à partir de l'exemple et le mettre à jour (cf. Variables d'environnement).

  • Installer l'environnement virtuel Python et tous les paquets nécessaires :

$ make install-python
  • Initialiser la base de données (après avoir mis à jour db/create.sql pour changer les informations de connexion à la base de données) :

$ make install-db
  • Démarrer le serveur et les workers de Dramatiq :

$ make run

Note

Si l'envoi des courriels est désactivé : $ make run-server

  • Ouvrir l'URL http://localhost:5000 avec un navigateur et s'inscrire

  • Pour attribuer le rôle de propriétaire au compte nouvellement créé, utiliser la ligne de commande suivante :

$ make user-set-role USERNAME=<username> ROLE=owner

Note

Si le compte de l'utilisateur est inactif, il sera alors activée.

Environnements de développement

  • Cloner ce dépôt :

$ git clone https://github.com/SamR1/FitTrackee.git
$ cd FitTrackee
  • Créer le fichier .env à partir de l'exemple et le mettre à jour (cf. Variables d'environnement).

  • Installer l'environnement virtuel Python, Vue et tous les paquets nécessaires et initialiser la base de données :

$ make install-dev
$ make install-db-dev
  • Démarrer le serveur et le client :

$ make serve
  • Démarrer les workers de Dramatiq :

$ make run-workers
  • Ouvrir l'URL http://localhost:3000 avec un navigateur et s'inscrire

  • Pour attribuer le rôle de propriétaire au compte nouvellement créé, utiliser la ligne de commande suivante :

$ make user-set-role USERNAME=<username> ROLE=owner

Note

Si le compte de l'utilisateur est inactif, il sera alors activée.

Docker

Ajouté dans la version 0.4.4.

Modifié dans la version 0.5.0: ajout de l'application cliente pour le développement

Modifié dans la version 0.8.13: ajout de l'image Docker pour la production

Production

Des images sont disponible sur DockerHub ou Github registry.

Note

Les images sont disponibles pour les plateformes linux/amd64 et linux/arm64. Seule l'image linux/amd64 a été testée.

Avertissement

Il n'y a pas encore d'image officielle de PostGIS sur les plateformes ARM, cf. ticket sur GitHub.
La solution est de générer l'image PostGIS localement.
  • créer un fichier docker-compose.yml selon les besoins (voir l'exemple dans le dépôt) :

    • l'installation minimale nécessite la base de données et l'application web

    • pour activer les limitations d'accès à l'API, redis est requis

    • pour envoyer des courriels, redis et les workers sont requis et une variable EMAIL_URL valide doit être initialisée dans le fichier .env

Note

La même image est utilisée pour l'application Web et les workers

Avertissement

Les répertoires suivants doivent être accessibles en écriture à l'utilisateur fittrackee (voir le fichier exemple docker-compose.yml):

  • /usr/src/app/uploads

  • /usr/src/app/logs

  • /usr/src/app/.staticmap_cache

  • Créer le fichier .env à partir de l'exemple (.env.docker.example) et le mettre à jour (cf. Variables d'environnement).

  • pour démarrer l'application :

$ docker compose up -d

Avertissement

Les migrations sont exécutées au lancement du conteneur. Veuillez sauvegarder les données avant de mettre à jour la version de l'image FitTrackee.

  • pour lancer une commande de l'interface de ligne de commandes (CLI), par example pour donner les droits d'administration :

$ docker compose exec fittrackee ftcli users update <username> --set-role admin

Développement

  • Pour installer et lancer FitTrackee :

$ git clone https://github.com/SamR1/FitTrackee.git
$ cd FitTrackee
$ make docker-run

Note

Pour changer le port du conteneur fittrackee lorsque les conteneurs sont lancés avec les commandes Makefile, créer un fichier .env avec la variable HOST_APP_PORT.
Par exemple :
export HOST_APP_PORT=5001

Ouvrir l'URL http://localhost:8025 pour accéder à l'interface de MailHog (outil de test)

  • Pour attribuer le rôle de propriétaire au compte nouvellement créé, utiliser la ligne de commande suivante :

$ make docker-set-role USERNAME=<username> ROLE=owner

Note

Si le compte de l'utilisateur est inactif, il sera alors activée.

  • Pour arrêter Fittrackee :

$ make docker-stop
  • Pour lancer le shell dans le container Fittrackee :

$ make docker-shell
  • une étape additionnelle est nécessaire pour installer fittrackee_client

$ make docker-build-client
  • pour démarrer FitTrackee avec les outils de développement client :

$ make docker-serve-client

Ouvrir http://localhost:3000

Note

Certaines variables d'environnement doivent être mise à jour comme UI_URL

  • pour lancer le lint et les tests :

$ make docker-lint-client  # run type check and lint on javascript files
$ make docker-test-client  # run unit tests on Client
$ make docker-lint-python  # run type check and lint on python files
$ make docker-test-python  # run unit tests on API

VSCode

Ajouté dans la version 1.0.4.

Développement

Vous pouvez utiliser le conteneur de développement (Dev Container) sans la configuration de débogage et inversement. Le conteneur de développement est fortement recommandé sous Windows en raison de problèmes de gestion des chemins d'accès.

Conteneur de Développement

L'utilisation d'un conteneur de développement vous offre un environnement prêt à l'emploi (Python, Poetry, Node, etc.) sans avoir à les installer sur votre machine.

Prérequis

Mode d'emploi

  • Ouvrir le répertoire FitTrackee dans VS Code.

  • Lorsque vous y êtes invité, choisissez Reopen in Container (ou ouvrez la palette de commandes et exécutez Dev Containers: Reopen in Container).

Note

Pour améliorer les performances du système de fichiers sous Windows/macOS, utilisez un volume conteneur anonyme (anonymous container volume) afin que le code et les paquets soient stockés dans le système de fichiers de la machine virtuelle.
Utilisez l'action Dev Containers: Clone Repository in Container Volume de la palette de commandes pour cloner dans un volume.
Si vous reconstruisez fréquemment le conteneur, privilégiez un volume nommé (named volume) afin de préserver les dépendances installées entre les reconstructions.

Note

Le port 5000 (fittrackee-ui) est redirigé automatiquement. Si vous modifiez APP_PORT, vous devez rediriger manuellement le nouveau port à l'aide de la commande Forward a Port dans la palette de commandes.

Déboguer la configuration et les tâches

Ce dépôt comprend une configuration de lancement VS Code qui :

  • démarre la stack de développement Docker Compose complète en arrière-plan,

  • attend que les services soient opérationnels,

  • attache le débogueur au backend afin que les points d'arrêt fonctionnent immédiatement,

  • démonte la stack lorsque vous arrêtez le débogueur.

Comment démarrer le débogage

  • Ouvrez la palette de commandes et exécutez Debug: Start Debugging ou appuyez sur F5.

Note

Si le débogueur ne parvient pas à se connecter, utilisez Debug: Select Debug Session pour mettre fin à la session, vérifiez les logs du conteneur, puis exécutez Tasks: Run Task et ensuite down : devcontainer-compose avant de réessayer.

Avertissement

Sous Linux, host.docker.internal ne se résout pas automatiquement à partir de l'intérieur des conteneurs. Si le débogueur ne parvient pas à se connecter et que les logs indiquent des problèmes de connexion à host.docker.internal:5678, assurez-vous que .devcontainer\docker-compose-devcontainer.yml inclut le mappage de la passerelle hôte :

services:
  fittrackee:
    extra_hosts:
      - "host.docker.internal:host-gateway"