selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
sms logo

Self-host sms

8.0.0

Vector tile server with hiking routing and MCP

ReleaseOpen SourceMIT
Updatedlast month
LanguagePython
Setup difficultyModerate
Stars
269
CPU
1 core
RAM
512 MB
Storage
101 GB (planet.mbtiles) + optional 290 GB (contours.mbtiles)
Port
9000 (HTTP tile server and map UI)
Docker
registry.gitlab.com/markuman/sms
Install with Podman

What is sms?

sms is a self-hosted vector tile server that converts MBTiles files into map tiles, styles, fonts, and sprites for browser maps via MapLibre GL. It includes built-in routing for hiking and cycling using the road network from vector tiles, with SAC scale difficulty ratings, via ferrata detection, and marked trail preferences when tiles have extended attributes. The server exposes an MCP endpoint so LLM agents can geocode, search POIs, plan multi-waypoint routes, export GPX, and analyze tracks without external routing engines. It integrates with Photon for reverse geocoding and works with Nextcloud GpxPod. Pre-built planet.mbtiles (101 GB) and contours.mbtiles (optional 290 GB) provide global coverage. Runs via Docker/Podman on port 9000 with minimal requirements (1 core, 512 MB). Licensed MIT.

Should you self-host sms?

sms scores 48/100 on selfhost.directory (how scoring works) and ranks #11 of 12 in Maps. It has 269 GitHub stars.

It shipped 5 stable releases in the past year. The latest, 8.0.0, came out on 8 September 2026. New versions land roughly every 2 months.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is GeoServer (71/100, 4 483 stars). It scores higher overall, so compare the two before you pick. See sms vs GeoServer side by side.

Features

  • Contour line supportOptional, requires separate contours.mbtiles file
  • GPX upload, download, and analysis
  • Hiking and cycling routing
  • Marked trail routing
  • MCP (Model Context Protocol) endpoint
  • Multiple map styles
  • Multi-tileset support
  • Nextcloud GpxPod compatibility
  • POI searchSome categories require extended tile profile
  • SAC scale difficulty ratingsRequires tiles built with extended profile (e.g., markuman/planetiler)
  • Tile caching with ETags
  • Vector tile serving (MVT)
  • Via ferrata detection and exclusionRequires tiles with via_ferrata_scale attribute

sms README

How to install sms

Install sms with Podman

Environment variables
PORT, MBTILES__n__URL, MBTILES__n__IDENTIFIER, MBTILES__n__VERSION, MBTILES__n__MIN_ZOOM, MBTILES__n__MAX_ZOOM, HTTP_ACCESS_CONTROL_ALLOW_ORIGIN, PHOTONSERVER, PHOTONSERVER_INTERNAL, TILE_CACHE_SIZE, ROUTE_MAX_TILES, ROUTE_MAX_CROW_KM, GPX_DIR, GPX_MAX_FILES, GPX_TTL_SECONDS, GPX_MAX_UPLOAD_BYTES

mkdir osm wget --continue -O osm/planet.mbtiles https://osm.osuv.de/planet.mbtiles wget --continue -O osm/contours.mbtiles https://osm.osuv.de/contours.mbtiles podman run -ti --rm -p 9000:9000 --name sms -v "$(pwd)/osm/:/data/" registry.gitlab.com/markuman/sms:latest firefox http://localhost:9000

Requires podman or docker. 101 GB storage for planet.mbtiles, optional 290 GB for contours.mbtiles.

sms releases & version history

More in Navigation

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…