Ein nachträgliches Hinzufügen von Dänemark zu deinem bestehenden Deutschland-Container funktioniert bei Nominatim leider nicht.
Nominatim baut beim ersten Start eine feste Datenbank auf. Du kannst neue Länder nicht einfach hinten heranschieben. Du musst die Daten von Deutschland und Dänemark vor dem Start verschmelzen und den Container komplett neu aufsetzen.
Hier ist die einfache Schritt-für-Schritt-Anleitung, wie du das über die Konsole oder direkt als Stack in Portainer oder als Projekt in der Docker App löst.
Der Trick: Vorher verschmelzen (Osmium)
Da Nominatim nur eine einzige Datei liest, nutzen wir ein Werkzeug namens osmium, um Deutschland und Dänemark in eine Datei zu packen.
- Lade dir die germany-latest.osm.pbf und denmark-latest.osm.pbf vom Geofabrik Download-Server herunter.
Verbinde beide Dateien auf deinem PC/Server mit diesem Befehl:
osmium merge germany-latest.osm.pbf denmark-latest.osm.pbf -o combined.osm.pbf
- Diese neue Datei combined.osm.pbf fütterst du jetzt in Docker.
Weg 1: Der einfache Bash-Befehl erklärt
Wenn du den Container über die Konsole startest, liest Docker die Datei lokal von deiner Festplatte ein (anstatt sie aus dem Internet zu laden).
docker run -it \
-v /dein/pfad/zu/combined.osm.pbf:/nominatim/data/combined.osm.pbf \
-e PBF_PATH=/nominatim/data/combined.osm.pbf \
-p 8080:8080 \
--name nominatim \
mediagis/nominatim:4.4
Was bedeutet das genau?
- docker run -it: Starte einen neuen Container und zeige mir den Text-Fortschritt live an.
- -v /dein/pfad/...: Das ist die Brücke. Es verbindet deinen echten Ordner auf dem PC mit dem Ordner im Docker-Container.
- -e PBF_PATH=...: Sagt dem Container: "Lade nichts herunter, nimm die fertige combined.osm.pbf aus dem Ordner".
- -p 8080:8080: Schaltet den Web-Zugriff frei, damit du die Suche später nutzen kannst.
Weg 2: Die Lösung als Portainer STACK (Docker Compose)
Du kannst das perfekt in Portainer als Stack (Docker Compose) anlegen. Platziere deine selbst erstellte combined.osm.pbf vorher auf deinem Server (z.B. unter /home/user/nominatim/data/oder wo auch immer du das eingebunden hast)
Nutze diesen Code für deinen Portainer Stack:
version: '3'
services:
nominatim:
image: mediagis/nominatim:4.4
container_name: nominatim
restart: always
ports:
- "8080:8080"
environment:
- PBF_PATH=/nominatim/data/combined.osm.pbf
volumes:
- /home/user/nominatim/data:/nominatim/data
shm_size: 2gb
Display More
Die Ports musst Du natürlich entsprechend Deinen Gegebenheiten anpassen.
Wichtig für den Erfolg
- Alten Container löschen: Da du die Datenbank neu aufbaust, musst du den alten Deutschland-Container (und dessen eventuell gespeicherte Volumes) in Portainer vorher komplett löschen.
- Geduld: Das Verschmelzen und der anschließende Import von Deutschland + Dänemark dauert viele Stunden.
Wenn Du ganz Europa willst, bedenke Du brauchst mindestens 64 GB RAM, absolut empfohlen sind 128 GB RAM. Mit weniger als 32 GB RAM wird der Europa-Import garantiert abstürzen
Für Europa sähe der Stack Compose.yml dann so aus:
version: '3.8'
services:
nominatim:
image: mediagis/nominatim:4.4
container_name: nominatim_europe
restart: always
ports:
- "8080:8080"
environment:
# Lädt ganz Europa direkt von Geofabrik
- PBF_URL=https://geofabrik.de
- REPLICATION_URL=https://geofabrik.de
# Wichtig: Sagt Nominatim, wo die Flatnode-Datei liegen soll
- NOMINATIM_FLATNODE_FILE=/nominatim/flatnode/flatnode.file
# Optimierung für starke Server (Postgres Feintuning)
- POSTGRES_SHARED_BUFFERS=4GB
- POSTGRES_MAINTENANCE_WORK_MEM=8GB
volumes:
# Speicherort für die Postgres-Datenbank
- /home/user/nominatim/postgres_data:/var/lib/postgresql/14/main
# Speicherort für die Flatnode-Datei (muss auf einer schnellen SSD/NVMe liegen!)
- /home/user/nominatim/flatnode:/nominatim/flatnode
# Wichtig: Verhindert Abstürze beim Import im Container
shm_size: 4gb
Display More