matrix-docker-ansible-deploy icon indicating copy to clipboard operation
matrix-docker-ansible-deploy copied to clipboard

Add support for self-hosting a map tile server

Open Cadair opened this issue 2 years ago • 5 comments

With the new location sharing feature in Element it's possible to self-host a tile server for downloading maps. See https://matrix.org/docs/guides/map-tile-server

Cadair avatar Feb 16 '22 14:02 Cadair

It probably makes sense to add it, but it doesn't seem like something that many users will run.

Reasoning:

  • "Note: this is not a guide on how to host a robust, production-ready map tile server for many users. To do that you will need serious hardware"

  • the map data for Great Britain (https://download.geofabrik.de/europe/great-britain-latest.osm.pbf mentioned in the guide) is 1.4GB and took 39 minutes to import on a reasonably powerful laptop. Certainly smaller imports are possible.

  • what happens when you share a location for a place that's not part of your current data set? Broken tiles? Or is it possible to fall back to another tile server?

  • setting this up and keeping it updated may be somewhat complicated and annoying

  • using Element-provided tile servers is likely not that scary to most people

Still, it makes sense in certain scenarios and for people who are prepared to pay the (storage, computing, maintenance) price for it. If anyone's willing on adding support for this to the playbook, it'd be great!

spantaleev avatar Feb 17 '22 07:02 spantaleev

I agree it's probably not going to get a massive amount of use, though I would say a bunch of these arguments can also be applied to Jitsi (resource hungry on large deployments etc).

I wonder if there is a way to proxy tile requests to somewhere else, so that all your HS users come from your homeserver rather than their local devices?

Cadair avatar Feb 17 '22 08:02 Cadair

Perhaps a good solution is to take your data point, shift it a bit (or reduce the latitude/longitude precision a bit) and use that for getting the tile. At the same time, generate a few more data points (some nearby, some further away) and resolve all these tiles in a random sequence.

And then proxy all those requests through the homeserver, to anonymize the actual user doing them.

And then the homeserver can also rotate multiple tile servers, so that it doesn't give all the data to the same tile server (unless you trust the tile server).

I suppose various such things can be done to make things better.

spantaleev avatar Feb 17 '22 09:02 spantaleev

I shudder at the amount of storage this would require

robbyoconnor avatar Feb 18 '22 20:02 robbyoconnor

I've got a stand-alone role, which anyone is welcome to help integrate into this play book: https://lab.trax.im/matrix/map-tile-server-ansible . Discussion room: https://matrix.to/#/#matrix-map-tile-server:foad.me.uk .

julianfoad avatar Mar 11 '22 16:03 julianfoad