112 lines
3.5 KiB
Markdown
112 lines
3.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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) :
|
|
|
|
```bash
|
|
PORT=3000 node build
|
|
```
|
|
|
|
Service systemd `/etc/systemd/system/jwe.service` :
|
|
|
|
```ini
|
|
[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)
|
|
|
|
```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
|
|
|
|
```bash
|
|
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](https://github.com/openmaptiles/openmaptiles) (Docker requis) : générez un `.mbtiles` par région puis fusionnez-les avec `tile-join` (paquet `tippecanoe`) :
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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.
|