En este tutorial explicare como y donde montar tu propio servidor de Open Street Maps en un servidor Ubuntu 16.04. Open Street Maps es una una alternativa «gratuita» a Google Maps, que la verdad funciona bastante bien. Tutorial que extiende y traduce el original que puedes encontrar en inglés aquí.
Desgraciadamente este manual en inglés no vale para el caso de España ya que las Islas Canarias vienen por separado y necesitas juntar ambos con otra herramienta que se llama osmosis.
Si no quieres leer el tocho aunque creo que es recomendable, el manual concretamente lo he subido aquí:
https://github.com/antonrodin/osm/
¿Es gratuito Open Street Maps?
Todo este follón es debido a que desde julio Google Maps ha subido los precios de la API, siendo simplemente inaccesibles para una webapp de tráfico medio, donde simplemente quieres mostrar mapas, marcadores o similar… En mi caso he visto como podia facilmente pagar unos 400 euros mensuales.
Para empezar hay que entender, qué Open Street Maps es una base de datos gratuita que puedes utilizar libremente a tu antojo. Sin embargo sus servidores no son de uso gratuito.. Te dan los mapas, pero tienes que servirlos tu mismo. Es decir no puedes utilizar esto a tu antojo:
1 2 3 |
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); |
Concretamente el «tile server» de Open Street Maps (https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png) no es para abusar de él, según sus políticas de uso. Desgraciadamente todos lo hemos usado ya que se usa en la documentación de la popular libreria Leaflet.js.
Dos alternativas aceptables
Opción 1. Puedes utilizar un Tile Server de terceros, que tienen un precio algo más contenido. Por ejemplo el MapBox, que te ofrecer 50.000 accesos gratuitos y los siguientes 1000 a 0,5$. Un precio aceptable, lejos de los 7$ que puede llegar a costar la Api de Google Maps, de ahí que lo usan apps como Tinder. Es la opción perfecta si necesitas el mapa del mundo entero.
Opción 2. Montar tu propio servidor de tiles que te puede llegar a costar unos 1-20$ al mes, pero con la ventaja de que de ahí no vas a salir. El problema reside en que el Tile Server para el mapamundi requiere un servidor MUY POTENTE. Estamos hablando de bestias de 32-128 Gb de RAM, procesador majo y mucho espacio en el disco duro.
Para que te hagas una idea, sólo el mapa de España necesita entre 20 y 40Gb de espacio en el disco duro y unos 4Gb de RAM. La buena noticia, es que yo lo configure en un servidor con 2Gb de RAM baratillo con 40Gb de espacio y un archivo SWAP de otros 2Gb. Funciona aceptablemente bien hasta el día de hoy.
Elección de Servidor
Debido a mi condición de rata, he probado primero montar todo en un servidor Muy Barato. Se trata del servidor de ArubaCloud de 1 € al mes, con 1Gb de RAM y 20Gb de disco duro. Lógicamente no funcionó para el mapa de España, pero si para el mapa de Andorra. De ahí que puedes primero probarlo. Por ejemplo puedes utilizar el Free Tier de Amazon o similar.
Yo al final el mío propio lo monte en un droplet de Digital Ocean, para que te hagas una idea tiene 1VCPU, 2Gb de RAM y 50Gb de SSD, que cuesta 10$ al mes o unos 8-9€ a día de hoy. El rendimiento y funcionamiento parecen aceptables, pero aun estoy en pruebas.
Si quieres probar a hacerlo puedes utilizar mi referido para obtener 10$ gratis. Al crear la cuenta si usas este código LOWENDBOX puedes obtener otros 15$, Pero ¡OJO! es solo al crear la cuenta, creo que cuando metes la tarjeta o similar te pregunta si tienes promo code. A mi se me paso y solo consegui 10$, pero es otra historia.
En cualquier caso menos da una piedra. Si no te funciona busca otro en internet, hay cupones de hasta 100$.
¿Entonces dónde está el tutorial?
Como es bastante largo, te recomiendo tener unas 4 horas libres, lo he subido a mi github, AQUÍ: https://github.com/antonrodin/osm/. Además así puedes editarlo, forckeralo, pushearlo o yo que se… vamos licencia MIT, como si te lo metes por el… En fin usalo bajo tu propia responsabilidad.
Además he añadido el archivo de configuración de apache, breves instrucciones para LetsEncrypt y un ejemplo de la librería LeafletJs funcionando en la rama gh-pages, que puedes ver aquí. El servidor de tiles como tal está montado aquí:
https://tile.azr.es/osm_tiles/0/0/0.png
Pero solo con la cartografía de Andorra e Islas Canarias. El mío propio lógicamente no lo voy a publicar pero viendo el blog y mis proyectos puedes llegar a encontrarlo sin problema analizando un poco el código. La cuestión es obvia, un servidor con recursos asi es muy fácil de sobrecargar siendo unos cuantos.
La verdad la idea de crear una servidor privado para el mapamundi y mantenerlo entre unos cuantos sería la solución perfecta (juraría que hay unos cuantos por ahí), desgraciadamente estas cosas solo funcionan en el mundo de la piruleta, pero si alguien se anima igual apunto.