docs: project context updated – stack fully operational 2026-06-13

This commit is contained in:
Conrad Schulz 2026-06-13 06:19:38 +00:00
parent 46ac204e03
commit 2765bb93f3

View file

@ -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 24×/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 24×/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 24×/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)