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.