Alojar sus propios mosaicos OSM garantiza independencia, rendimiento y conformidad con el RGPD. Esta guía condensada va más allá de los tutoriales clásicos: cubre la instalación, los ajustes de rendimiento, la seguridad, las actualizaciones en tiempo real, el monitoreo y abre camino a los mosaicos vectoriales.
Somaire
1. Requisitos previos y dimensionamiento del hardware
¿Por qué? Dimensionar correctamente evita ralentizaciones durante la importación y garantiza un renderizado fluido.
- Ubuntu 24.04 LTS actualizado (kernel 6.8).
- 16 GB de RAM mínimo (Francia); 64 GB para Europa; 128 GB para el planeta.
- SSD NVMe ≥ 1 TB para la importación + caché.
- CPU con 8 hilos o más (osm2pgsql multihilo).
2. Instalación paso a paso
2.1 Instalar los paquetes
¿Por qué? Estos paquetes constituyen la pila de renderizado (Apache, mod_tile, renderd) y la base espacial (PostgreSQL 16 + PostGIS 3.4).
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 libapache2-mod-tile renderd git wget unzip bzip2
postgresql postgresql-16-postgis-3 postgresql-16-postgis-3-scripts
python3-mapnik mapnik-utils gdal-bin lua5.1 npm node-carto osm2pgsql
2.2 Crear la base PostGIS
¿Por qué? La base gis almacena los datos OSM y sirve a Mapnik.
sudo -u postgres createuser _renderd
sudo -u postgres createdb -E UTF8 -O _renderd gis
sudo -u postgres psql -d gis -c "CREATE EXTENSION postgis; CREATE EXTENSION hstore;"
2.3 Descargar el estilo openstreetmap-carto
¿Por qué? Es el estilo “estándar” de OSM, listo para todas las regiones.
git clone https://github.com/gravitystorm/openstreetmap-carto ~/src/osm-carto
cd ~/src/osm-carto && npm install -g carto
carto project.mml > mapnik.xml
2.4 Importar los datos OSM
¿Por qué? Poblar la base con sus datos regionales.
wget -P ~/data https://download.geofabrik.de/europe/france/alsace-latest.osm.pbf
sudo -u _renderd osm2pgsql -d gis --create --slim -G --hstore
--tag-transform-script ~/src/osm-carto/openstreetmap-carto.lua
-C 75% --number-processes $(nproc)
-S ~/src/osm-carto/openstreetmap-carto.style
~/data/alsace-latest.osm.pbf
2.5 Configurar renderd y Apache
¿Por qué? Vincular el motor de renderizado al servidor HTTP.
sudo tee /etc/renderd.conf >/dev/null <<EOF
[renderd]
num_threads=$(nproc) tile_dir=/var/lib/mod_tile stats_file=/run/renderd/stats
[default]
URI=/osm/ XML=/home/$USER/src/osm-carto/mapnik.xml HOST=localhost TILESIZE=256 EOF sudo systemctl enable –now renderd apache2
Prueba: http://IP/osm/0/0/0.png
3. Optimizaciones
¿Por qué? Reducir el tiempo de renderizado y aumentar el rendimiento.
- PostgreSQL:
shared_buffers=RAM/4,work_mem=128MB. - Pre-renderizado de zooms 0-12:
render_list -a -z 0 -Z 12. - Caché HTTP mediante
Cache-Control: max-age=31536000.
4. Seguridad y copias de seguridad
¿Por qué? Proteger sus datos y el servicio.
- UFW: abrir solo 80/443, restringir 5432.
- fail2ban en Apache.
- TLS Let’s Encrypt:
sudo certbot --apache --hsts. - Copias de seguridad:
pg_dump -Fc gis | rclone copy - s3://bucket/.
5. Actualizaciones automáticas
¿Por qué? Mantener la base sincronizada con OSM.
sudo -u _renderd osm2pgsql-replication init -d gis
--osm-file ~/data/alsace-latest.osm.pbf
# systemd timer toutes les 5 min
6. Monitorización
¿Por qué? Anticipar problemas.
- Munin: plugin renderd queue size.
- Prometheus + Grafana para métricas y alertas.
7. Extensiones: vector tiles, Docker, Ansible
- Tegola o TileServer-GL para teselas vectoriales.
- Imagen Docker
overv/openstreetmap-tile-serverlista para usar. - Playbook Ansible para despliegue idempotente.
Última actualización: julio 2025.