Dies ist eine alte Version des Dokuments!
Siehe OpenStreetMap
Demo https://nominatim.openstreetmap.org/search?format=jsonv2&q=Stephansplatz
Persistent
docker run -it \ -e PBF_URL=https://download.geofabrik.de/europe/austria-latest.osm.pbf \ -e REPLICATION_URL=https://download.geofabrik.de/europe/austria-updates \ -e IMPORT_STYLE=full \ -p 8080:8080 \ --name nominatim-at \ -v nominatim-data:/var/lib/postgresql/16/main \ mediagis/nominatim:5.2
Non persistent
#!/usr/bin/env bash set -euo pipefail NOM_USER="nominatim" WEB_DB_USER="www-data" NOM_HOME="/srv/nominatim" NOM_VENV="/srv/nominatim-venv" NOM_PROJECT_DIR="/srv/nominatim/project" NOM_PBF_DOWNLOAD="https://download.geofabrik.de/europe/austria-latest.osm.pbf" NOM_PBF_FILE="/home/austria.osm.pbf" IMPORT_THREADS="4" IMPORT_OSM2PGSQL_CACHE="1024" PG_VERSION="16" if [[ "$(id -u)" -ne 0 ]]; then echo "Run this script as root." exit 1 fi if [[ -n "${NOM_PBF_DOWNLOAD}" ]]; then echo "Downloading ${NOM_PBF_DOWNLOAD} to ${NOM_PBF_FILE}" curl -L "$NOM_PBF_DOWNLOAD" -o "$NOM_PBF_FILE" fi if [[ ! -f "${NOM_PBF_FILE}" ]]; then echo "PBF not found: ${NOM_PBF_FILE}" exit 1 fi export DEBIAN_FRONTEND=noninteractive echo "[1/7] Installing packages..." apt-get update apt-get install -y \ postgresql postgresql-contrib postgresql-server-dev-all \ postgis postgresql-${PG_VERSION}-postgis-3 \ osm2pgsql osmium-tool \ build-essential cmake pkg-config git curl wget unzip sudo \ libboost-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libicu-dev \ python3 python3-pip python3-venv python3-dev echo "[2/7] Starting PostgreSQL..." service postgresql start echo "[3/7] Resetting DB roles..." sudo -u postgres dropdb --if-exists nominatim sudo -u postgres dropuser --if-exists "${NOM_USER}" || true sudo -u postgres dropuser --if-exists "${WEB_DB_USER}" || true sudo -u postgres createuser -s "${NOM_USER}" sudo -u postgres createuser "${WEB_DB_USER}" echo "[4/7] Creating Linux user and directories..." id -u "${NOM_USER}" >/dev/null 2>&1 || useradd --system --create-home --home-dir "${NOM_HOME}" --shell /bin/bash "${NOM_USER}" mkdir -p "${NOM_HOME}" "${NOM_PROJECT_DIR}" rm -rf "${NOM_VENV}" python3 -m venv "${NOM_VENV}" chown -R "${NOM_USER}:${NOM_USER}" "${NOM_HOME}" "${NOM_PROJECT_DIR}" "${NOM_VENV}" echo "[5/7] Installing Python packages..." sudo -u "${NOM_USER}" "${NOM_VENV}/bin/pip" install --upgrade pip wheel setuptools sudo -u "${NOM_USER}" "${NOM_VENV}/bin/pip" install \ nominatim-db nominatim-api falcon uvicorn gunicorn osmium echo "[6/7] Writing project environment..." cat > "${NOM_PROJECT_DIR}/.env" <<EOF NOMINATIM_DEFAULT_LANGUAGE=de,en EOF chown "${NOM_USER}:${NOM_USER}" "${NOM_PROJECT_DIR}/.env" chmod 640 "${NOM_PROJECT_DIR}/.env" echo "[7/7] Importing Austria..." sudo -u "${NOM_USER}" "${NOM_VENV}/bin/nominatim" import \ --project-dir "${NOM_PROJECT_DIR}" \ --osm-file "${NOM_PBF_FILE}" \ --threads "${IMPORT_THREADS}" \ --osm2pgsql-cache "${IMPORT_OSM2PGSQL_CACHE}" echo echo "Import finished." echo echo "Start API with:" echo "sudo -u ${NOM_USER} bash -lc 'cd ${NOM_PROJECT_DIR} && ${NOM_VENV}/bin/gunicorn -b 127.0.0.1:8080 -w 2 -k uvicorn.workers.UvicornWorker \"nominatim_api.server.falcon.server:run_wsgi()\"'"