My Own OSM Server
Docker + OSRM (osrm_backend) + Nominatim
My Own OSM Server
Docker + OSRM (osrm_backend) + Nominatim

Step 1 : Install Docker in Windows
Download from:
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):
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