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 32pour 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.