Overview
To plan a route, BoatSpeedy has to know where the waterways run. It used to ask public Overpass servers for every single route, and they were often overloaded. This server cuts the waterways out of OpenStreetMap into tiles once. The app downloads them and does the routing itself.
What it does
- Only what matters on a boat. Rivers, canals and fairways. Streams are out: they were 87 % of the data and hardly navigable.
- Complete locks. Chambers with name, hours, phone, VHF channel and dimensions, plus the gates.
- Obstacles and portages. Weirs, dams, prohibition signs, hydro plants, portage paths and put-ins and egresses.
- Seamarks. All seamark tags, including bridges with clearance and speed limit signs.
- Seamless at the edges. Ways crossing a tile edge are stored whole in both tiles. Border rivers are de-duplicated by OSM id.
- Freshness to the minute. An index.json lists every tile with size and data date. That's how the app spots outdated tiles.
Installation
- Clone the repository and list the Geofabrik regions you want in regions.txt.
- Run
./manage.shand build the tiles from its menu. The build container only runs when called. - Start the nginx container and enter your own address in BoatSpeedy under Navigation, Map data.
How it's built
Two containers: one fetches the country extracts from Geofabrik, filters them and cuts tiles, the other serves them with nginx. Each tile is named after its south-west corner, for example n50e011.json.gz. The content has the same format as an Overpass response, so the app reads both sources with the same code. All of Europe is 1376 tiles and 176 MB, a 150 km radius about 20 tiles.
Changelog
No release yet.
FAQ
- Why not just use Overpass?
- In a test on 4 September 2026, three public servers answered at most two out of five identical requests. Routing failed more often than it worked.
- Can I run my own server?
- Yes, that's what the repository is for. BoatSpeedy lets you set the map server freely.

