Kibana not able to load Map tiles from maptiler

I've set up a Maptiler server with a world map as my environment is airgapped.

In my Kibana.yml config i have:

map.includeElasticMapsService: false
map.tilemap.url: "localhost:3650/api/maps/streets/{z}/{x}/{y}.png"
map.proxyElasticMapsServiceInMaps: true
map.tilemap.options.attributions: "[OpenMapTiles](http://www.openmaptiles.org/)"
map.tilemap.options.maxZoom: 18

When i go to view a map in Kibana i have 2 issues:

  • Where do i replace the default map layer to use my map layer instead of the default elastic.co map service? It would be a long day at the office if im to manually replace all the layers.

  • Kibana queries my Maptiler server seemingly correct and gets a URL for the tiles like: "http://server.ip.address:3650/api/maps/streets/3/3/1.png"
    The server returns OK, and if you went to the URL above you will see the tile as below. Which suggests maptiler is returning the tiles correctly:

But in kibana i just see a blank map:

And the networking request looks to fail:

I can see that Kibana requests the same URL as i showed in the example above, and maptiler serves the tile correctly. Is there anything i'm missing? The custom mapping documentation is a bit lacking.

I used this blogpost as an example:

Where do i replace the default map layer to use my map layer instead of the default elastic.co map service? It would be a long day at the office if im to manually replace all the layers.

There is no automated way to update existing saved objects with new base map layers. However, once map.tilemap.url is set in your kibana.yml, then any newly created map will use this basemap layer.

I can see that Kibana requests the same URL as i showed in the example above, and maptiler serves the tile correctly. Is there anything i'm missing?

Ensure your tile server has configured Cross-Origin Resource Sharing (CORS) so tile requests from your Kibana domain have permission to access your tile server domain. More help can be found at Troubleshoot Maps | Kibana Guide [7.10] | Elastic

Also, once 7.11 is released, there is now an option to host Elastic Map Service locally as a docker image. Connect to Elastic Maps Service | Kibana Guide [7.11] | Elastic

Hi Nathan,
Thanks for getting back to me.

As i wrote it seems like the request from kibana is going through, but somehow being aborted. I tested CORS settings with curl as such:
curl -H "Origin: https://ip.of.kibana:5601" --verbose
http://ip.of.maptiler:3650/api/maps/streets/1/0/0.png

And it works perfectly fine, i download the specific tile as expected and nothing fails in the log. What is odd to me is that both are hosted on the same machine, and access is done on localhost.
As far as i know Maptiler defaults to no cors policy as well.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.