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: