Files
JWE/docs/deploiement.md
T

3.5 KiB

JWE v2 — Guide de déploiement auto-hébergé

Cible : un petit VPS (1 vCPU / 1 Go RAM suffit) sous Debian/Ubuntu, derrière nginx ou Caddy. Aucun service propriétaire, aucune clé API.

1. Application SvelteKit

# Prérequis : Node.js >= 20 (via nodesource ou nvm)
git clone https://codeberg.org/OKI/jwe.git
cd jwe/app
npm ci
npm run build          # produit app/build (adapter-node)

Lancer en production (port 3000 par défaut) :

PORT=3000 node build

Service systemd /etc/systemd/system/jwe.service :

[Unit]
Description=JWE — jeu de géolocalisation OKI
After=network.target

[Service]
Type=simple
User=jwe
WorkingDirectory=/srv/jwe/app
Environment=PORT=3000
Environment=ORIGIN=https://jwe.o-k-i.net
Environment=PUBLIC_TILES_URL=https://tiles.o-k-i.net/styles/oki/style.json
ExecStart=/usr/bin/node build
Restart=on-failure

[Install]
WantedBy=multi-user.target

2. Reverse proxy (exemple nginx)

server {
    server_name jwe.o-k-i.net;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
# + TLS via certbot

3. Tiles cartographiques auto-hébergées (tileserver-gl)

Par défaut l'application utilise OpenFreeMap (libre, sans clé). Pour une souveraineté complète, hébergez vos propres tiles OSM des 4 régions.

3.1 Récupérer les extraits OpenStreetMap

mkdir -p /srv/tiles && cd /srv/tiles
# Guadeloupe, Martinique, Guyane : extraits Geofabrik
wget https://download.geofabrik.de/north-america/guadeloupe-latest.osm.pbf
wget https://download.geofabrik.de/north-america/martinique-latest.osm.pbf
wget https://download.geofabrik.de/south-america/french-guiana-latest.osm.pbf
# La Réunion
wget https://download.geofabrik.de/africa/reunion-latest.osm.pbf

3.2 Générer les .mbtiles

Avec openmaptiles (Docker requis) : générez un .mbtiles par région puis fusionnez-les avec tile-join (paquet tippecanoe) :

tile-join -o dom-tom.mbtiles guadeloupe.mbtiles martinique.mbtiles guyane.mbtiles reunion.mbtiles

(Alternative plus légère : extraire les 4 régions d'un .mbtiles Monde basse-résolution tile-join --bbox=… par région, puisque la carte de devinette n'a pas besoin d'un zoom très fin partout.)

3.3 Servir avec tileserver-gl

docker run --rm -d --name tiles -v /srv/tiles:/data -p 8080:8080 \
  maptiler/tileserver-gl dom-tom.mbtiles

Copiez le style OKI de l'application (app/src/lib/map/style-oki.json) dans /srv/tiles/styles/oki/, adaptez son URL de source vers votre dom-tom.mbtiles, puis :

Environment=PUBLIC_TILES_URL=https://tiles.o-k-i.net/styles/oki/style.json

3.4 Fontes et sprites

tileserver-gl sert aussi les fontes (glyphs) et sprites référencés par le style. Les fontes open-source utilisées par le style OKI (ex. Noto Sans) se récupèrent via openmaptiles/fonts ou klokantech/tileserver-gl-fonts.

4. Cache Wikipedia

Le endpoint /api/wiki/[qid] met en cache les extraits 24 h en mémoire. Aucune configuration requise ; pour un cache partagé entre instances, placez nginx en cache proxy devant /api/wiki/ (respecte déjà Cache-Control).

5. Mise à jour

cd jwe && git pull && cd app && npm ci && npm run build
systemctl restart jwe

L'ajout de lieux (voir docs/contribution.md) ne demande qu'un rebuild + restart : le corpus est embarqué dans le build.