Somaire
1. Wymagania wstępne i zasoby
- Aktualny Ubuntu 24.04 „Noble” (jądro 6.8)
- Docker ≥ 25 lub Node ≥ 18.17 (Node 22 zalecany przez MapTiler)
- Minimum 4 vCPU, 8 GB RAM; SSD NVMe dla optymalnej przepustowości dysku
- Plik *.mbtiles* OpenMapTiles (np. Francja = ~7 GB)
2. Metoda Docker (zalecana)
2.1 Instalacja Dockera i pobranie obrazu
sudo apt update && sudo apt install docker.io -y
sudo docker pull maptiler/tileserver-gl:latest
Oficjalny obraz zawiera MapLibre GL Native i obsługuje rasteryzację PNG/JPEG/WEBP na żądanie
2.2 Pobierz zestaw płytek wektorowych
wget -P ~/data https://download.openmaptiles.com/osm/v3.15/europe/france.mbtiles
OpenMapTiles oferuje zestawy płatne lub darmowe w zależności od obszaru
2.3 Uruchom TileServer GL
cd ~/data
docker run -it -d --name tileserver
-p 8080:8080 -v $(pwd):/data
maptiler/tileserver-gl
--port 8080 --public_url https://example.com
Serwer automatycznie wykrywa pliki *.mbtiles* w /data i udostępnia /styles/, /tiles/ oraz przeglądarkę MapLibre
2.4 Weryfikacja
- Płytki wektorowe:
http://IP:8080/data/v3.json - WMTS:
http://IP:8080/styles/bright/wmts.xml - Podgląd MapLibre:
http://IP:8080/
3. Metoda npm (instalacja natywna)
sudo apt install build-essential nodejs npm -y
sudo npm install -g tileserver-gl
Upewnij się, że masz Node ≥ 18; binaria MapLibre są teraz kompilowane dla parzystych wersji LTS
tileserver-gl france.mbtiles --port 8080
4. Optymalizacje i dobre praktyki
- Cache HTTP: dodaj
Cache-Control: max-age=86400, immutableza Nginx lub Traefik. - Wstępne renderowanie rastrowe: unikaj generowania PNG na bieżąco przy dużym obciążeniu; generuj statyczne kafelki w razie potrzeby
- WMTS dla GIS desktop; dostępne na
/wmts.xml - tileserver-gl-light: lżejszy, jeśli serwujesz tylko wektorowe kafelki bez renderowania PNG
5. Automatyczna aktualizacja plików .mbtiles
Aby śledzić zmiany w OSM, możesz:
- Ponownie pobrać miesięczny wycinek OpenMapTiles i zastąpić plik
- Lub wygenerować własne kafelki za pomocą pipeline OpenMapTiles (Docker Compose)
Proste docker restart tileserver przeładowuje nowe kafelki dzięki automatycznemu skanowaniu TileServer GL
6. Bezpieczeństwo i produkcja
- Proxy Nginx z Let’s Encrypt dla TLS (porty 80 / 443)
- Ogranicz
/datado trybu tylko do odczytu za pomocą-v $(pwd):/data:ro - UFW: wystawiaj tylko 8080 wewnętrznie, 80/443 publicznie
- Monitoruj logi Dockera i włącz
--restart unless-stopped
7. Szybkie rozwiązywanie problemów
Jeśli serwer zatrzymuje się po zapytaniu, sprawdź wersję Node lub sterownik GPU; kilka zgłoszeń na GitHub wskazuje na awarię z Node < 18 i niektórymi wirtualnymi sterownikami