#!/usr/bin/env bash # ============================================================================= # build-host.sh -- OSM Vektor-Tiles auf Host-Rechner bauen + auf Server deployen # # Dieses Script läuft auf dem HOST-RECHNER (nicht auf dem Server). # Voraussetzung: Docker Desktop (macOS/Windows) oder Docker (Linux) # # Verwendung: # ./scripts/build-host.sh [germany|europe|planet] [SERVER_USER@SERVER_HOST] # # Beispiele: # ./scripts/build-host.sh germany rd13server@192.168.178.6 # ./scripts/build-host.sh europe rd13server@192.168.178.6 # # Das fertige MBTiles wird per rsync auf den Server übertragen und Martin # automatisch neu gestartet. # # Hardware-Anforderungen: # germany: ≥ 8 GB RAM, ≥ 30 GB freier Disk, ~2h # europe: ≥ 16 GB RAM, ≥ 200 GB freier Disk, ~8-12h # planet: ≥ 32 GB RAM, ≥ 500 GB freier Disk, ~24h # ============================================================================= set -euo pipefail AREA="${1:-germany}" REMOTE="${2:-}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BUILD_DIR="${SCRIPT_DIR}/../data/build" OUTPUT_FILE="${BUILD_DIR}/${AREA}.mbtiles" # ── RAM-Profil ─────────────────────────────────────────────────────────────── case "$AREA" in germany) RAM="8g" ;; austria) RAM="4g" ;; europe) RAM="16g" ;; planet) RAM="32g" ;; *) echo "Unbekannte Region: $AREA" echo "Verfügbar: germany | austria | europe | planet" exit 1 ;; esac mkdir -p "$BUILD_DIR" echo "================================================================" echo " rd13 Tile-Build | Region: $AREA | RAM: $RAM | $(date)" echo " Output: $OUTPUT_FILE" echo "================================================================" # ── 1. Planetiler bauen ────────────────────────────────────────────────────── echo "" echo "[1/3] Starte Planetiler via Docker..." echo " (OSM-Daten werden automatisch von Geofabrik heruntergeladen)" echo "" docker run --rm \ -v "${BUILD_DIR}:/data" \ -e JAVA_TOOL_OPTIONS="-Xmx${RAM}" \ ghcr.io/onthegomap/planetiler:latest \ --download \ --area="${AREA}" \ --output="/data/${AREA}.mbtiles" \ --maxzoom=16 \ --force echo "" echo "[1/3] Build fertig: $(ls -lh "$OUTPUT_FILE" | awk '{print $5}')" # ── 2. Validieren ──────────────────────────────────────────────────────────── echo "[2/3] Validiere MBTiles..." python3 - <