A simple tiles server for MBTiles files. It can serve image and vector tiles, and multiple MBTiles files can be served.
Note: you should consider using use martin instead
martin is a fair bit faster at serving MBTiles while using a fraction of the RAM (and can also serve PMTiles and vector tiles from PostGIS). But if you're looking for a Node-based MBTiles server, this project will do the job.
npm install
npm start
http://localhost:3000/list
http://localhost:3000/[mbtiles file]/meta
Ex: http://localhost:3000/tiles.mbtiles/meta
http://localhost:3000/[mbtiles file]/[z]/[x]/[y]
Ex: http://localhost:3000/tiles.mbtiles/12/1128/1620
index.js
contains two variables - tilesDir
and port
- the set the directory to find MBTiles files and the server port respectively. The defaults are the server's folder and port 3000.
The Fastify extensions fastify-caching and fastify-cors are used to set tile expiration (in seconds) and CORS. By default, expiration is 48 hours and CORS is set to access-control-allow-origin: *
. See the Fastify projects to learn how to customize those options further.
If you are on Windows and npm install
returns a compilation error, try running npm install -g windows-build-tools
first.
By default, Fastify only listens to requests from localhost
for security reasons. You can change the host
constant in index.js
to 0.0.0.0
to listen to all IPv4 addresses. See the Fastify listen docs for more details.
This tile server was originally inspired by Christopher Helm's awesome mbtiles-server.