← Back to list

My Own OSM Server

Docker + OSRM (osrm_backend) + Nominatim

Tanish · 2026-03-10 16:41 · 0 claps · 1.6 min read
Open on Medium ↗
Wiki topics: 🌐 · Web Development ☁️ · DevOps & Cloud

My Own OSM Server

Docker + OSRM (osrm_backend) + Nominatim

Step 1 : Install Docker in Windows

Download from:

[embed]Docker Desktop: The #1 Containerization Tool for Developers | Docker Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today…www.docker.com

docker --version
--Docker version 25.0
docker ps
mkdir osm-services
cd osm-services

mkdir osrm
mkdir nominatim
osm-services
│
├── osrm
│   └── data
│
└── nominatim   

Step 2: Download OSM Map Data

Download dataset from:

Example (Kerala):

[embed]Download OpenStreetMap for OpenStreetMap Data Extracts | Geofabrik Download Server Download OpenStreetMap data for OpenStreetMap Data Extracts for self-hosting or data analysis. OSM PBF and Shapefiles…download.geofabrik.de

Save it in: osrm/data Like osrm/data/kerala-latest.osm.pbf

Step 3: Pull OSRM Docker Image

OSRM = Open Source Routing Machine

docker pull osrm/osrm-backend

Step 4 :Prepare OSRM Routing Data

Open Windows Power Shell

Step 1 — Extract OSM
docker run -t -v ${PWD}/data:/data osrm/osrm-backend osrm-extract -p /opt/car.lua /data/southern-zone.osm.pbf

Step 2 — Partition
docker run -t -v ${PWD}/data:/data osrm/osrm-backend osrm-partition /data/southern-zone.osm.pbf

Step 3 — Customize
docker run -t -v ${PWD}/data:/data osrm/osrm-backend osrm-customize /data/southern-zone.osm.pbf

Step 5 :Start OSRM Server

docker run -p 5000:5000 -v ${PWD}/data:/data osrm/osrm-backend osrm-routed --algorithm mld /data/southern-zone.osm.pbf

http://localhost:5000/route/v1/driving/76.9366,8.5241;76.9380,8.5250
http://localhost:5000/match/v1/driving/76.9366,8.5241;76.9371,8.5244;76.9375,8.5249
APIs available:
/route
/match
/table
/nearest
/trip

Nominatim

docker pull mediagis/nominatim:4.2
docker run -it -e PBF_PATH=/data/southern-zone.osm.pbf -p 8080:8080 -v ${PWD}/osrm/data:/data -v ${PWD}/nominatim:/var/lib/postgresql/14/main mediagis/nominatim:4.2
geocode : http://localhost:8080/search?q=Technopark&format=json
Reverse geocode: http://localhost:8080/reverse?lat=8.5241&lon=76.9366&format=json
PS C:\Users\CDAC-ETG> docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS       PORTS                                         NAMES
83abd9fc316e   mediagis/nominatim:4.2   "/app/start.sh"          2 hours ago   Up 2 hours   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   suspicious_roentgen
3c4d7d2e68c2   osrm/osrm-backend        "osrm-routed --algor…"   2 hours ago   Up 2 hours   0.0.0.0:5000->5000/tcp, [::]:5000->5000/tcp   charming_jemison

Architecture Diagram

OSM PBF
   │
   │
   ├── OSRM Preprocessing
   │     ├─ osrm-extract
   │     ├─ osrm-partition
   │     └─ osrm-customize
   │
   │
   ├── OSRM Routing API
   │     └─ localhost:5000
   │
   │
   └── Nominatim Import
         └─ PostgreSQL + PostGIS
              └─ localhost:8080

메타데이터
post_id
8a2d7fbe3e53
slug
my-own-osm-server-8a2d7fbe3e53
url
https://medium.com/@tanishcb/my-own-osm-server-8a2d7fbe3e53
canonical_url
https://medium.com/@tanishcb/my-own-osm-server-8a2d7fbe3e53
author_url
https://medium.com/@tanishcb
status
ok
fetched_at
2026-07-12 01:44:19