Files
Nominatim/docker-compose.yml
T

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: