diff --git a/docs/history/summary/PROJECT_CONTEXT.md b/docs/history/summary/PROJECT_CONTEXT.md index 09889a3..1cd9c6a 100644 --- a/docs/history/summary/PROJECT_CONTEXT.md +++ b/docs/history/summary/PROJECT_CONTEXT.md @@ -1,23 +1,24 @@ # PROJECT_CONTEXT – rd13_tile_server -**Letzte Aktualisierung:** 2026-06-12 – Architektur-Entscheidung: Martin + tileserver-gl für Vektor + Raster. ADR-001 dokumentiert. PNG-Rendering für Kartographer nun planbar. +**Letzte Aktualisierung:** 2026-06-13 – Stack vollständig in Betrieb: Martin + tileserver-gl + Caddy. Kartographer-PNG-Tiles öffentlich erreichbar und verifiziert. --- ## Projektziel Selbst gehosteter Tile Server für MediaWiki (Kartographer), Nextcloud, Home Assistant. -**Stack:** Martin (Vektor-API) + tileserver-gl (Raster PNG für Clients). +**Stack:** Martin (Vektor-API) + tileserver-gl (Raster PNG) + Caddy (Reverse Proxy). Tile-Updates manuell 2–4×/Jahr; Styles anpassbar. --- ## Stack (Architektur ADR-001) -- **Vektor-API:** `ghcr.io/maplibre/martin:latest` (Port 9982 extern → 3000 intern) -- **Raster-Renderer:** `ghcr.io/maptiler/tileserver-gl` (NEU – Port 8080 lokal, via NPM zu `/osm-intl`) -- **Proxy:** NPM (Nginx Proxy Manager) extern – SSL-Termination, Rate Limiting -- **Daten:** `/data/` – osm.mbtiles (Vektor), fonts/, styles/ (Rendering-Definitionen) +- **Vektor-API:** `ghcr.io/maplibre/martin:latest` (Port 9982 → `/osm/{z}/{x}/{y}`) +- **Raster-Renderer:** `maptiler/tileserver-gl` (Port 9983 → `/styles/osm-intl/{z}/{x}/{y}.png`) +- **Proxy:** Caddy (`rd13_system_proxy`) – SSL via Let's Encrypt, Routing `/styles/` → 9983, rest → 9982 +- **Konfiguration:** `config/tileserver.json` (tileserver-gl), `config/styles/osm-intl.json` (MapLibre GL Style) +- **Daten:** `/data/` – osm.mbtiles, fonts/, sprites/ - **Git Remote:** `ssh://git@192.168.178.6:2222/cschulz/rd13_tile_server.git` --- @@ -54,39 +55,31 @@ Tile-Updates manuell 2–4×/Jahr; Styles anpassbar. ### Git-Stand - Branch: `main` -- Letzter Commit: `0a5f6cd` - WebUI aktiviert und MediaWiki-Integration vorbereitet -- Noch offen (lokal): `docs/mediawiki-config.php` +- Letzter Commit: `46ac204` – tileserver-gl operational, config in config/ --- -## Nächste Schritte (Sprint 2026-06-19) +## Aktueller Zustand (2026-06-13) – VOLLSTÄNDIG IN BETRIEB ✅ -**Ziel:** Kartographer rendert PNG statt PBF-Vektor +| Endpunkt | Status | Antwort | +|---|---|---| +| `https://tiles.rd13server.de/styles/osm-intl/{z}/{x}/{y}.png` | ✅ 200 | PNG 256×256 | +| `https://tiles.rd13server.de/osm/{z}/{x}/{y}` (PBF) | ✅ 200 | application/x-protobuf | +| `https://tiles.rd13server.de/health` | ✅ 200 | OK | +| `rd13_tileserver` Container | ✅ healthy | Port 9983 | +| `rd13_martin` Container | ✅ healthy | Port 9982 | +| Caddy Proxy (`rd13_system_proxy`) | ✅ aktiv | server: Caddy | -1. **docker-compose.yml erweitern** - - tileserver-gl Service hinzufügen (ghcr.io/maptiler/tileserver-gl) - - Mount `/data/styles/`, `/data/fonts/`, `/data/sprites/` - - Port: 8080 lokal (nur intern, nicht exposed) - -2. **Style osm-intl vorbereiten** - - Baseline MapLibre GL Style (JSON) in `/data/styles/osm-intl.json` - - Quelle: Martin PBF unter `http://martin:3000/osm` - - Fonts: `/fonts/`, Sprites: `/sprites/` - -3. **NPM Proxy-Routing konfigurieren** - - `/osm-intl/{z}/{x}/{y}.png` → http://tileserver-gl:8080/... - - `/osm-intl/{z}/{x}/{y}@2x.png` → http://tileserver-gl:8080/...@2x - - Cache-Headers: `max-age=86400` - -4. **MediaWiki LocalSettings testen** - - mapframe sollte jetzt PNG-Karten zeigen statt Fehler - - Probe: https://tiles.rd13server.de/osm-intl/0/0/0.png - -5. **REQ-002 Rate Limiting** (aus REQUIREMENTS.md) - - NPM Advanced Config: limit_req_zone, limit_conn_zone, 429 status +**MediaWiki Kartographer Config:** +- `$wgKartographerMapServer = 'https://tiles.rd13server.de/styles'` +- `$wgKartographerDfltStyle = 'osm-intl'` +- → Request-URL: `https://tiles.rd13server.de/styles/osm-intl/{z}/{x}/{y}.png` ✅ --- +## Nächste Schritte + + ## Offene Aufgaben ## Bekannte Fallstricke @@ -102,29 +95,22 @@ Tile-Updates manuell 2–4×/Jahr; Styles anpassbar. ## Erledigte Aufgaben - [x] Git-Repo initialisiert und auf Forgejo gepusht -- [x] Migration TileServer-GL → Martin -- [x] nginx-Sidecar entfernt (NPM extern) -- [x] Port auf 9982 geändert -- [x] copilot-instructions auf aktuelles Template aktualisiert -- [x] download-data.sh + download-satellite.py erstellt -- [x] History-System (post-commit Hook + _session.md Konvention) in rd13_copilot_setup implementiert -- [x] Docs für MediaWiki, Nextcloud, Home Assistant erstellt -- [x] Planet-MBTiles Download gestartet (OpenFreeMap, 94 GB) - [x] Martin WebUI aktiviert (`--webui enable-for-all`) - [x] Endpunkte verifiziert (`/health`, `/catalog`, Root 200) -- [x] MediaWiki-Kartographer Doku in `docs/mediawiki-config.php` erweitert -- [x] MediaWiki-Repo auf Martin umgestellt und committed -- [x] Rate-Limiting-Anforderungen in `docs/requirements/REQUIREMENTS.md` aufgenommen +- [x] MediaWiki-Kartographer Doku + LocalSettings konfiguriert +- [x] ADR-001: Martin + tileserver-gl Stack-Entscheidung dokumentiert +- [x] **tileserver-gl** Service in docker-compose.yml (Port 9983, `maptiler/tileserver-gl`) +- [x] `config/tileserver.json` – Service-Konfiguration (MBTiles + Styles + Fonts) +- [x] `config/styles/osm-intl.json` – MapLibre GL Style für Raster-Rendering +- [x] Caddy-Routing: `/styles/osm-intl/*` → Port 9983, rest → Port 9982 +- [x] **End-to-End verifiziert:** PNG-Tiles 200 bei Zoom 0/5/10/14 --- ## Offene Aufgaben -- [ ] **Raster-Rendering für Kartographer** (Sprint 2026-06-19) - - [ ] tileserver-gl in docker-compose.yml - - [ ] Style osm-intl.json vorbereiten - - [ ] NPM Routing /osm-intl/{z}/{x}/{y}.png - - [ ] MediaWiki testen +- [ ] **MediaWiki in Browser testen** – mapframe/maplink auf einer Wiki-Seite +- [ ] **REQ-002 Rate Limiting** – Caddy-seitig absichern (rd13_system_proxy) - [ ] **REQ-002 Rate Limiting** – NPM Advanced Config für `tiles.rd13server.de` - [ ] NPM Proxy-Host für `tiles.rd13server.de` anlegen (manuell im NPM UI) - [ ] fail2ban optional konfigurieren (REQ-002 Schicht 3)