Aller au contenu principal

Installation depuis les sources

Cette page décrit l'installation de l'application depuis ses sources GIT, sous Debian.

Prérequis

  • Debian 12 ou 13 (OS)
  • PostgreSQL + PostGIS 3 + hstore + pgrouting
  • Python 3
  • Node.js (build front) + npm
  • Un reverse proxy (Nginx) en production

Mise à jour du système et installation des utilitaires nécessaires

$ sudo apt update && sudo apt upgrade
$ sudo apt install -y curl dos2unix git openssl

Clonage du dépôt git LeBonTag v2

$ sudo git config --global user.email "XXXX"
$ cd /opt && sudo git clone --branch main https://gitlab.com/Geonov/lebontag-v2.git

Où XXXX est à remplacer par l'email de l'administrateur du serveur.

Proxy (optionnel)

Si votre organisme utilise un proxy, vous devez spécifier les variables d'environnement "http_proxy" et "https_proxy" afin que Python accède à Internet.

Fichier /etc/environment :

http_proxy=http://***:***
https_proxy=http://***:***

Fichier contab via "sudo crontab -e" :

http_proxy=http://***:***
https_proxy=http://***:***

Base de données

Schémas

Chargement du modèle de données

  • Créez un rôle "osm" dans PostgreSQL.
  • Créez une base de données PostgreSQL dont le propriétaire est "osm" avec les extensions Postgis (v3), hstore et pgrouting.
  • Exécutez le script /opt/lebontag-v2/sql/lebontag_v2.sql à l'intérieur de la nouvelle base "osm" avec l'utilisateur "osm" : des tables dans les schémas "public" et "lebontag" seront créées, avec "OWNER TO osm" sur les différents objets.

Schémas créés

  • lebontag : schéma de l'application
  • osm2pgrouting : données OSM découpées par pgRouting
  • osm2pgsql : données OSM chargées par osm2pgsql

Dépendances

OSM

$ sudo apt install -y --no-install-recommends osmctools gdal-bin osmium-tool

La version 2.2.0 d'osm2pgsql doit être installée. Elle est compilée depuis les sources pour s'assurer de la bonne version utilisée :

$ sudo apt remove -y osm2pgsql
$ sudo apt install -y make cmake g++ libboost-dev libexpat1-dev zlib1g-dev libpotrace-dev libopencv-dev libbz2-dev libpq-dev libproj-dev lua5.3 liblua5.3-dev pandoc nlohmann-json3-dev pyosmium libluajit-5.1-dev
$ cd /usr/local/src/
$ sudo wget https://github.com/osm2pgsql-dev/osm2pgsql/archive/refs/tags/2.2.0.tar.gz
$ sudo tar -xvzf 2.2.0.tar.gz
$ cd /usr/local/src/osm2pgsql-2.2.0
$ sudo mkdir build && cd build
$ sudo cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -D WITH_LUAJIT=O -Wno-dev
$ sudo make
$ sudo make install

Test :

$ /usr/local/bin/osm2pgsql -V

Python (environnement virtuel)

$ sudo apt install -y python3 python3-pip libpq-dev python3-venv python3-dev
$ cd /opt/lebontag-v2 && python3 -m venv .venv
$ source .venv/bin/activate
$ pip install --upgrade pip
$ python3 -m pip install -r /opt/lebontag-v2/python/requirements.txt
$ deactivate

Infos : https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/

NodeJS

  • v22 (Debian 12)
$ sudo bash
$ curl -o- https://fnm.vercel.app/install | bash
$ source /root/.bashrc
$ fnm install 22
  • v25 (Debian 13)
$ sudo bash
$ curl -o- https://fnm.vercel.app/install | bash
$ source /root/.bashrc
$ fnm install 25
  • Vérifications
$ node -v
$ npm -v

Modules NodeJS

$ cd /opt/lebontag-v2 && npm --loglevel verbose install && npm update --loglevel verbose

LeBonTag v2

Configuration

$ cp .env.production.local.example .env.production.local

Modifiez le fichier .env.production.local :

Connexion à la base de données

  • DB_HOST : hôte
  • DB_PORT : port
  • DB_NAME : nom de la base
  • DB_USER : rôle
  • DB_PASS : mode de passe
  • DB_SCHEMA=lebontag : schéma (ne pas modifier)
  • DB_SRID=4326 : Système de coordonnées (ne pas modifier)

Authentification

  • AUTH_URL : URL de l'application
  • AUTH_TRUST_HOST=true : ne pas modifier
  • AUTH_DEBUG : mode de débogage
  • AUTH_SECRET : hash unique de l'installation. Utilisez openssl rand -hex 32 pour en générer un.

Enfin vous devez configurer au moins 1 fournisseur d'authentification externe. Consultez les URL de chacun indiquées dans le fichier.

  • AUTH_XXX_ID : ID du fournisseur d'authentification XXX
  • AUTH_XXX_SECRET : Secret du fournisseur d'authentification XXX

Des fournisseurs supplémentaires peuvent être ajoutés dans le fichier /src/auth.ts (avancé).

Compilation

  • Via sudo :
$ cd /opt/lebontag-v2/ && sudo npx next telemetry disable
$ sudo npm run lint && sudo npm run build --omit=dev
$ sudo dos2unix /opt/lebontag-v2/scripts/*.sh && sudo chmod +x /opt/lebontag-v2/scripts/*.sh
* sudo dos2unix /opt/lebontag-v2/cron/*.sh && sudo chmod +x /opt/lebontag-v2/cron/*.sh

Service LeBonTag

$ cd /opt/lebontag-v2/ && sudo npm install -g pm2@latest
$ sudo pm2 start npm -n LeBonTagv2 -- start && sudo pm2 startup systemd && sudo pm2 save

Nginx

$ apt install -y nginx

Copiez le fichier nginx-80.conf ou le fichier nginx-443.conf pour écouter respectivement sur le port 80 (http) ou 443 (https, certificat nécessaire dans ce cas).

$ cp /opt/lebontag-v2/nginx/nginx-80.conf /etc/nginx/sites-available/lebontag.conf

ou

$ cp /opt/lebontag-v2/nginx/nginx-433.conf /etc/nginx/sites-available/lebontag.conf

Modifiez le fichier /etc/nginx/sites-available/lebontag.conf :

  • Remplacez toutes les occurrences de [WEB_SITE_URL] par le nom de domaine du serveur, par exemple : www.lebontag.fr
  • Remplacez [CERTIFICATE.crt] et [KEY.key] par le nom des fichiers de certificat.

Activez la configuration :

$ sudo rm /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/lebontag.conf /etc/nginx/sites-enabled/

Rechargez la configuration de Nginx :

$ systemctl reload nginx

L'interface Web de l'application est maintenant opérationnelle.