44 lines
1.5 KiB
YAML
44 lines
1.5 KiB
YAML
name: nominatim
|
|
|
|
# Self-hosted Nominatim (mediagis image) for OSM geocoding.
|
|
# First start imports PBF into a named Postgres volume (long-running).
|
|
# See README.md. Port 8089 avoids dta:8080 and SearxNG:8088 on ai-server-4080.
|
|
|
|
services:
|
|
nominatim:
|
|
image: mediagis/nominatim:5.1
|
|
container_name: nominatim
|
|
restart: unless-stopped
|
|
# Bind on all interfaces by default so monica_site / backends on
|
|
# adama/roslin can reach this host over the homelab LAN.
|
|
# Set NOMINATIM_BIND_HOST=127.0.0.1 in .env for local-only.
|
|
# Open UFW to 10.0.0.0/24 before relying on LAN access.
|
|
ports:
|
|
- "${NOMINATIM_BIND_HOST:-0.0.0.0}:8089:8080"
|
|
environment:
|
|
# Path inside the container (./data mounted at /nominatim/data).
|
|
PBF_PATH: /nominatim/data/${NOMINATIM_PBF_FILE:-region.osm.pbf}
|
|
NOMINATIM_PASSWORD: ${NOMINATIM_PASSWORD:?set NOMINATIM_PASSWORD in .env}
|
|
IMPORT_WIKIPEDIA: "false"
|
|
IMPORT_US_POSTCODES: "true"
|
|
THREADS: ${NOMINATIM_THREADS:-4}
|
|
volumes:
|
|
# Must be read-write: mediagis init.sh chowns /nominatim/data during import.
|
|
# :ro aborts import → empty search results.
|
|
- ./data:/nominatim/data
|
|
- nominatim-pgdata:/var/lib/postgresql/16/main
|
|
shm_size: ${NOMINATIM_SHM_SIZE:-1gb}
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- >-
|
|
wget -q -O - 'http://127.0.0.1:8080/search?q=test&format=json&limit=1'
|
|
| grep -q '\['
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 600s
|
|
|
|
volumes:
|
|
nominatim-pgdata:
|