Comment installer un serveur OSM sur Ubuntu 24.04 et publier ses premières tuiles

Comment installer un serveur OSM sur Ubuntu 24.04 et publier ses premières tuiles
Pour installer un serveur OSM sur Ubuntu 24.04, installez PostgreSQL avec PostGIS, importez un extrait régional au format PBF avec osm2pgsql, compilez le style openstreetmap-carto pour Mapnik, puis reliez renderd et mod_tile à Apache. Le premier objectif réaliste consiste à afficher une carte issue d’un extrait régional dans un navigateur, sans viser l’import de la planète entière.
Un serveur de tuiles OpenStreetMap est un serveur cartographique qui transforme des données géographiques OSM en images carrées appelées tuiles, demandées ensuite par une application web. Ce tutoriel suit une pile cohérente pour Ubuntu 24.04 LTS : PostgreSQL 16, PostGIS 3, Mapnik 3.0.x, openstreetmap-carto v5.9.0, renderd, mod_tile et Apache.
Sommaire
En bref
🗺️ Commencez par un extrait régional .osm.pbf, par exemple celui d’un pays ou d’une région téléchargé depuis Geofabrik.
🗄️ La chaîne de rendu repose sur PostgreSQL 16 + PostGIS 3, puis sur osm2pgsql pour charger les données OSM.
⚙️ Le style openstreetmap-carto v5.9.0 doit produire un fichier mapnik.xml avant la configuration de renderd.
🔒 PostgreSQL reste local au serveur : Apache publie les tuiles, pas la base de données.
Prérequis avant d’installer un serveur cartographique Ubuntu
Un serveur de tuiles OpenStreetMap cumule stockage, calcul et accès disque pendant l’import initial. La documentation Switch2OSM consacrée à Ubuntu 24.04 recommande au moins 8 Go de RAM et environ 20 Go d’espace disque pour expérimenter avec un extrait régional ; les besoins augmentent fortement avec la taille de la zone, le nombre de niveaux de zoom et le trafic.
Le matériel adapté à une carte locale, à un pays ou à la planète entière ne se déduit pas d’un chiffre unique. Un import mondial et un service public demandent une étude séparée de la mémoire, du stockage, du cache, des mises à jour et des requêtes attendues.
| Élément | Rôle dans le serveur OSM | Contrôle avant installation | Point de vigilance |
|---|---|---|---|
| Ubuntu 24.04 LTS amd64 | Système cible de la procédure | lsb_release -a |
Ne pas mélanger des paquets prévus pour Ubuntu 20.04 ou 22.04. |
| Droits sudo | Installation et gestion des services | sudo -v |
Évitez d’exécuter durablement les services avec votre compte personnel. |
| RAM et disque | Import PBF, base PostGIS et cache de tuiles | free -h && df -h |
Un disque presque plein fait échouer l’import ou le rendu. |
| Extrait PBF | Données géographiques à rendre | ls -lh |
Préférez un extrait régional pour le premier déploiement. |
Préparez aussi une machine propre ou un environnement de test isolé. Une installation OSM combine plusieurs services et plusieurs comptes système ; une modification improvisée des droits sur les répertoires peut masquer un problème au lieu de le résoudre.
- Connexion SSH fonctionnelle avec un compte disposant de
sudo. - Ubuntu 24.04 LTS à jour sur architecture amd64.
- Accès sortant HTTPS pour télécharger les paquets, le dépôt du style et l’extrait PBF.
- Un nom de domaine ou une adresse IP, uniquement pour le test final dans le navigateur.
Un premier serveur de tuiles doit d’abord rendre correctement une petite zone. L’import mondial est une autre opération, avec d’autres contraintes de stockage et d’exploitation.
Comment préparer Ubuntu 24.04 et installer les composants OSM ?
La préparation consiste à mettre Ubuntu à jour puis à installer la pile logicielle dans un ordre simple : base de données, importateur, moteur de rendu, serveur web et outils du style. La commande suivante cible les paquets indiqués pour l’installation manuelle d’un serveur de tuiles sur Ubuntu 24.04.
Étape 1 : mettre Ubuntu 24.04 à jour
Connectez-vous au serveur, ouvrez un terminal et appliquez les mises à jour disponibles avant d’ajouter les composants cartographiques. Cette étape réduit le risque de dépendances incohérentes entre Apache, PostgreSQL, Node.js et les bibliothèques de rendu.
sudo apt update && sudo apt upgrade -y
Vérifiez ensuite la version du système et la présence éventuelle de mises à jour restantes. Le résultat attendu est une distribution Ubuntu 24.04 LTS et une liste vide, ou limitée, de paquets à mettre à niveau.
lsb_release -a
apt list --upgradable
Étape 2 : installer PostgreSQL, PostGIS, Mapnik, renderd et Apache
Installez ensuite les paquets du serveur de tuiles OpenStreetMap. La liste comprend PostgreSQL, PostGIS, osm2pgsql, Mapnik, renderd, le module Apache mod_tile, Node.js via npm et les outils nécessaires à la compilation du style.
sudo apt install -y screen locate libapache2-mod-tile renderd git tar unzip wget bzip2 apache2 lua5.1 mapnik-utils python3-mapnik python3-psycopg2 python3-yaml gdal-bin npm node-carto postgresql postgresql-contrib postgis postgresql-16-postgis-3 postgresql-16-postgis-3-scripts osm2pgsql net-tools
Contrôlez les paquets réellement installés avant de poursuivre. Une absence de renderd, osm2pgsql ou libapache2-mod-tile doit être résolue maintenant, pas après l’import des données.
dpkg -l | grep -E 'mod-tile|renderd|postgresql|osm2pgsql|mapnik|node|carto'
La commande suivante vérifie aussi que Python peut charger Mapnik. Une erreur d’import Python indique un problème de dépendance avant même la compilation du style cartographique.
python3 -c "import mapnik"
Installer le style OSM Carto et générer mapnik.xml
Le style openstreetmap-carto est un ensemble de règles décrivant les couleurs, libellés, routes, surfaces et symboles de la carte. La version retenue ici est v5.9.0, associée à la procédure Ubuntu 24.04 documentée par Switch2OSM ; elle évite de suivre sans contrôle la branche de développement courante.
Étape 3 : cloner openstreetmap-carto v5.9.0
Créez un répertoire source dans votre dossier personnel, clonez le dépôt puis positionnez précisément l’arbre de travail sur le tag v5.9.0. Le mode détaché est normal ici : il fixe la version utilisée pour produire le fichier Mapnik.
mkdir -p ~/src
cd ~/src
git clone https://github.com/gravitystorm/openstreetmap-carto
cd openstreetmap-carto
git pull --all
git switch --detach v5.9.0
Vérifiez que le tag attendu pointe bien vers le commit actif. La première commande peut ne rien afficher, car le dépôt est volontairement en état détaché.
git branch --show-current
git tag --points-at HEAD
Étape 4 : installer Carto puis compiler le style
Carto lit le fichier project.mml et génère le fichier XML consommé par Mapnik. La procédure utilise l’outil installé globalement par npm ; la version affichée doit être 1.2.0 ou une version compatible plus récente.
sudo npm install -g carto
carto -v
Depuis le dossier ~/src/openstreetmap-carto, compilez ensuite le style. Le résultat attendu est un fichier mapnik.xml non vide, sans message d’erreur de syntaxe.
cd ~/src/openstreetmap-carto
carto project.mml > mapnik.xml
test -s mapnik.xml && echo "mapnik.xml généré"
Le fichier XML n’est pas une carte déjà rendue. Le fichier XML décrit le style ; renderd l’utilisera plus tard pour produire les tuiles demandées par Apache.
Comment importer un fichier PBF dans PostgreSQL PostGIS ?
L’import PBF place les objets OSM dans PostgreSQL, enrichi par PostGIS pour les traitements géographiques. Importez un extrait régional avant tout test de tuile : renderd ne peut pas dessiner une route, un bâtiment ou un libellé absent de la base.

Étape 5 : télécharger un extrait OSM régional
Geofabrik publie des extraits OpenStreetMap au format .osm.pbf pour différentes zones géographiques. L’exemple ci-dessous télécharge l’extrait de l’Azerbaïdjan ; remplacez l’URL par la région réellement utile à votre projet, après vérification sur le site de téléchargement concerné.
mkdir -p ~/data
cd ~/data
wget https://download.geofabrik.de/asia/azerbaijan-latest.osm.pbf
ls -lh azerbaijan-latest.osm.pbf
Le dernier contrôle doit afficher un fichier présent avec une taille non nulle. Un fichier PBF incomplet ou une URL erronée produit généralement un import incomplet, voire un arrêt immédiat d’osm2pgsql.
Étape 6 : créer la base gis et activer PostGIS
La base nommée gis stocke les tables OSM importées, tandis que l’extension PostGIS ajoute les types et fonctions géographiques. La commande de référence crée également le rôle PostgreSQL tileserver ; ce rôle est créé avec des privilèges élevés dans la séquence d’installation, ce qui convient à un environnement de laboratoire mais doit être revu pour un serveur exposé.
sudo -u postgres createuser -s tileserver
sudo -u postgres createdb -E UTF8 -O tileserver gis
sudo -u postgres psql -d gis -c "CREATE EXTENSION postgis;"
Vérifiez que PostGIS apparaît dans les extensions de la base. Le résultat attendu contient une ligne nommée postgis.
sudo -u postgres psql -d gis -c '\dx'
Étape 7 : importer le PBF avec osm2pgsql
La commande d’import active le mode --slim, utilise la projection géographique appropriée au rendu et réserve 8 000 Mo à osm2pgsql avec -C 8000. Cette valeur suppose que le serveur possède assez de mémoire disponible ; réduisez-la si la machine ne dispose pas de cette marge, au lieu de provoquer une saturation mémoire.
sudo sysctl -w vm.overcommit_memory=1
osm2pgsql -d gis --create --slim -G --hstore -C 8000 --number-processes 4 ~/data/azerbaijan-latest.osm.pbf
Contrôlez ensuite qu’une table issue de l’import contient des objets. La requête doit retourner un total supérieur à zéro ; elle ne mesure pas la qualité complète des données, mais confirme que l’import a produit une table exploitable.
psql -d gis -c 'select count(*) from planet_osm_point;'
Étape 8 : ajouter index, fonctions, données externes et polices
Le style OSM Carto s’appuie sur des index SQL, des fonctions, des données externes et des polices. Exécutez les scripts depuis le répertoire du style afin que la base et les fichiers complémentaires correspondent à la version v5.9.0 compilée plus haut.
cd ~/src/openstreetmap-carto
sudo -u _renderd psql -d gis -f indexes.sql
sudo -u _renderd psql -d gis -f functions.sql
mkdir data
sudo chown _renderd data
sudo -u _renderd scripts/get-external-data.py
scripts/get-fonts.sh
Vérifiez les index et le contenu du dossier data. Les jeux de données externes et les polices ne sont pas décoratifs : leur absence peut entraîner des erreurs de rendu ou des éléments manquants sur la carte.
psql -d gis -c '\di'
ls -l ~/src/openstreetmap-carto/data
ls /usr/share/fonts/truetype/noto
Le mécanisme central est simple : osm2pgsql prépare les données, Mapnik applique le style, et renderd fabrique les images de tuiles à la demande.
Configurer renderd et mod_tile sans exposer PostgreSQL
Renderd est le service qui lance le rendu des tuiles avec Mapnik, tandis que mod_tile reçoit les demandes HTTP transmises par Apache. PostgreSQL ne doit pas être publié directement sur Internet : la base reste un composant interne, accessible localement au serveur et aux services qui en ont besoin.
Étape 9 : définir la couche s2o dans renderd
Le fichier /etc/renderd.conf doit contenir une couche pointant vers le fichier mapnik.xml compilé. Le chemin exact dépend du compte Linux qui a cloné le dépôt ; remplacez <utilisateur-linux> par le nom réel du compte propriétaire de ~/src.
sudo nano /etc/renderd.conf
Ajoutez ou adaptez la section suivante dans la configuration existante. Ne supprimez pas les sections déjà fournies par le paquet sans en comprendre le rôle.
[s2o]
URI=/hot/
XML=/home/<utilisateur-linux>/src/openstreetmap-carto/mapnik.xml
HOST=localhost
TILESIZE=256
MAXZOOM=20
La configuration complète de renderd.conf varie selon le paquet installé et son fichier d’exemple. ⚠️ À valider : comparez les sections globales déjà présentes avec l’exemple fourni par votre paquet Ubuntu avant le redémarrage ; seules les valeurs de la couche [s2o] ci-dessus sont définies ici.
sudo grep -A5 '^\[s2o\]' /etc/renderd.conf
Étape 10 : activer la configuration Apache de renderd
Apache sert les réponses HTTP et mod_tile transmet les demandes de tuiles à renderd. La procédure de référence active la configuration Apache associée à renderd, puis recharge Apache afin de prendre en compte le module et les directives ajoutées.
cd /etc/apache2/conf-available/
sudo wget https://raw.githubusercontent.com/openstreetmap/mod_tile/python-implementation/etc/apache2/renderd.conf
sudo a2enconf renderd
sudo systemctl reload apache2
Vérifiez que le module de tuiles est chargé et qu’Apache reste actif. Une erreur de syntaxe Apache doit être corrigée avant de tenter l’affichage d’une carte.
sudo apache2ctl -M | grep tile
sudo systemctl status apache2 --no-pager
Étape 11 : redémarrer renderd et observer son journal
Le service renderd doit relire la configuration après sa modification. Redémarrez le service, puis suivez son journal dans un second terminal pendant les premiers tests ; les messages signalent les chemins de style invalides, les problèmes de droits et les échecs de rendu.
sudo systemctl restart renderd
sudo systemctl restart apache2
journalctl -u renderd -f
Le résultat attendu est un service renderd actif, sans boucle de redémarrage. Arrêtez l’affichage continu du journal avec Ctrl+C lorsque le contrôle est terminé.
sudo systemctl status renderd --no-pager
Publier les premières tuiles avec Apache
Une fois renderd actif, Apache peut répondre aux demandes de tuiles depuis un fichier HTML de démonstration. La carte affichée dans le navigateur demande des tuiles au serveur ; chaque demande déclenche le rendu ou récupère une tuile déjà présente dans le cache.
Étape 12 : installer une page Leaflet de test
Le fichier de démonstration Leaflet permet de vérifier l’ensemble de la chaîne sans développer immédiatement votre propre interface. Téléchargez le fichier dans le répertoire web Apache puis adaptez l’adresse du serveur dans le code HTML avant de l’ouvrir dans un navigateur.
cd /var/www/html
sudo wget https://raw.githubusercontent.com/SomeoneElseOSM/mod_tile/switch2osm/extra/sample_leaflet.html
sudo nano sample_leaflet.html
Dans sample_leaflet.html, remplacez l’adresse IP d’exemple par l’adresse IP ou le nom de domaine du serveur. Le fichier HTML doit ensuite être accessible à l’adresse http://adresse-du-serveur/sample_leaflet.html.
Une page de test n’est pas une configuration de production. Pour une publication publique, ajoutez HTTPS, limitez les accès d’administration, conservez les journaux utiles et définissez une politique de cache cohérente avec votre volume de trafic.
Comment vérifier que le serveur de tuiles OSM fonctionne ?
Le test utile ne consiste pas seulement à voir une page HTML chargée : il faut observer une demande de tuiles, l’activité de renderd et la réponse Apache. Une carte vide peut provenir d’un extrait géographique qui ne couvre pas la zone affichée, d’un chemin XML invalide ou d’une couche URI différente.
Étape 13 : ouvrir la carte et surveiller le rendu
Ouvrez la page de démonstration dans un navigateur, puis placez le navigateur sur une zone présente dans votre extrait PBF. Pendant ce test, suivez les journaux système pour confirmer que des tuiles sont réellement demandées et produites.
tail -f /var/log/syslog | grep ' TILE '
Le résultat attendu est l’apparition de lignes correspondant à des requêtes de tuiles. Une première tuile peut être lente parce que renderd doit la fabriquer ; les demandes ultérieures peuvent utiliser le cache local.
- Carte visible et éléments géographiques présents : la chaîne de rendu répond.
- Carte vide sur une zone hors extrait PBF : recentrez la vue sur la région importée.
- Erreur HTTP 404 : contrôlez l’URI de la couche, la configuration Apache et l’activation de mod_tile.
- Erreur de rendu dans les journaux : vérifiez le chemin vers
mapnik.xml, les fichiers externes et les polices.
Préparer les mises à jour et la maintenance du serveur OSM
Les données OpenStreetMap changent en continu, mais la procédure d’import initial ne constitue pas à elle seule une stratégie de mise à jour. Une mise à jour fiable doit être choisie selon la zone importée, le style, le volume de changements et le niveau de disponibilité attendu.
Pour un premier serveur, documentez au minimum la date de téléchargement du PBF, la version du style et les commandes utilisées. Une reproduction propre de l’import est plus utile qu’une automatisation fragile ajoutée avant la validation du premier rendu.
Étape 14 : consigner l’état de l’installation
Créez un fichier texte contenant les versions et l’origine de l’extrait chargé. Ce relevé aide à distinguer un problème de données, de style ou de configuration lors d’une future mise à jour.
cd ~/src/openstreetmap-carto
git describe --tags --always
psql -d gis -c "SELECT PostGIS_Full_Version();"
osm2pgsql --version
carto -v
Conservez les sorties dans votre documentation d’exploitation, avec l’URL de l’extrait téléchargé et la date de l’import. Vérifiez les méthodes de mise à jour recommandées dans la documentation Switch2OSM pour Ubuntu 24.04 avant d’automatiser des réplications ou de recharger une base existante.
Un serveur Linux demande aussi une maintenance générale : mises à jour de sécurité, surveillance du disque, sauvegardes et contrôle des journaux. Pour comparer les habitudes de gestion de distributions Linux, consultez aussi les bases d’utilisation de Manjaro Linux, en gardant à l’esprit que les commandes de ce tutoriel sont prévues pour Ubuntu 24.04.
Erreurs fréquentes lors de l’installation d’un serveur de tuiles OSM
Les erreurs les plus coûteuses ne sont pas toujours liées à Mapnik. Un chemin de fichier erroné, un extrait PBF absent, des permissions insuffisantes ou une confusion entre une ancienne procédure Ubuntu et Ubuntu 24.04 expliquent souvent un serveur qui ne produit aucune tuile.
| Symptôme | Cause probable | Vérification utile | Correction prudente |
|---|---|---|---|
carto introuvable ou erreur « Unexpected token » |
Carto absent ou version ancienne | carto -v |
Réinstallez Carto avec npm, puis recompilez mapnik.xml. |
| Import osm2pgsql interrompu | Mémoire insuffisante ou PBF inaccessible | free -h et ls -lh |
Réduisez la valeur -C, vérifiez le disque et utilisez un extrait plus petit. |
| Apache répond 404 sur les tuiles | Configuration renderd inactive ou URI incohérente | apache2ctl -M | grep tile |
Contrôlez /etc/renderd.conf, activez la configuration Apache et rechargez Apache. |
| renderd ne démarre pas | Chemin XML invalide ou droits de lecture insuffisants | journalctl -u renderd -n 100 |
Corrigez le chemin vers mapnik.xml et les droits minimaux nécessaires. |
| La carte est vide | Vue située hors de l’extrait importé | Comparez la zone affichée au PBF téléchargé | Recentrez Leaflet sur la région réellement importée. |
Un manque de mémoire pendant l’import peut aussi nécessiter un espace d’échange, mais sa taille et son emplacement dépendent de la machine et de la charge. ⚠️ À valider : dimensionnez le swap et les réglages PostgreSQL avec l’administrateur système ou la documentation Ubuntu avant de les appliquer à une machine de production.
Bonnes pratiques pour héberger des cartes OpenStreetMap
Un serveur de tuiles fonctionnel devient exploitable lorsqu’il reste compréhensible, sauvegardable et limité à son périmètre. Les décisions importantes portent moins sur une commande isolée que sur la cohérence entre la zone couverte, les données chargées, le cache disponible et la fréquence de mise à jour.
- Conservez le fichier PBF d’origine ou au moins son URL, sa date et sa somme de contrôle si elle est fournie.
- Fixez les versions du style et des composants avant une mise à jour importante.
- Surveillez l’espace disque de PostgreSQL, du cache de tuiles et des journaux système.
- Exposez Apache avec HTTPS pour un usage public, mais gardez PostgreSQL sur l’interface locale.
- Testez toute modification de style, de données ou de configuration sur une machine de préproduction.
La pré-génération de tuiles avec render_list peut réduire l’attente pour certaines zones, mais elle augmente les besoins en calcul et en stockage. Ne lancez pas un pré-rendu massif sans définir une emprise géographique, une plage de zoom et une capacité de disque vérifiée.
Sources utiles à consulter
La procédure technique dépend de versions précises et d’interfaces qui évoluent. Les sources ci-dessous permettent de vérifier les paquets, les scripts et les méthodes avant une adaptation à grande échelle.
- Switch2OSM → installation manuelle d’un serveur de tuiles sur Ubuntu 24.04 → vérification des versions et de l’ordre d’installation.
- Dépôt openstreetmap-carto → style cartographique et scripts associés → contrôle du tag v5.9.0, des données externes et des polices.
- Geofabrik Download Server → extraits régionaux OSM au format PBF → choix d’une zone de test adaptée.
- Documentation PostgreSQL 16 → administration de la base → réglages et sauvegardes à vérifier avant un usage durable.
À retenir
- 🗺️ Commencez par un extrait PBF régional avant d’envisager des données mondiales.
- 🗄️ PostgreSQL 16 et PostGIS 3 constituent la base de stockage géographique.
- ⚙️ Compilez openstreetmap-carto v5.9.0 avant de configurer renderd.
- 🔒 Apache publie les tuiles ; PostgreSQL doit rester interne au serveur.
- 🔍 Les journaux renderd et Apache confirment qu’une tuile est réellement produite.
Questions fréquentes sur un serveur OSM Ubuntu
Peut-on installer un serveur OSM sur Ubuntu 24.04 dans WSL ?
WSL peut servir à expérimenter une installation Ubuntu et à comprendre la chaîne PostgreSQL, osm2pgsql, Mapnik et renderd. Un usage durable demande toutefois de vérifier la disponibilité des services, les performances disque, les ports réseau et le comportement des processus en arrière-plan dans votre environnement WSL.
Pourquoi faut-il importer un fichier PBF avant de voir des tuiles ?
Mapnik et renderd n’inventent pas les objets géographiques. Le fichier PBF fournit les routes, lieux, surfaces et géométries qu’osm2pgsql place dans PostgreSQL/PostGIS, puis le style indique comment les dessiner.
Quelle région choisir pour le premier import OSM ?
Choisissez une zone petite mais réellement utile au test, comme une région ou un pays de taille limitée. La page Leaflet doit être centrée sur cette zone ; une carte centrée ailleurs semblera vide même si l’import a réussi.
Pourquoi Apache renvoie-t-il une erreur 404 pour une tuile ?
Une erreur 404 peut indiquer une configuration Apache renderd inactive, un module mod_tile non chargé ou une URI différente entre la page web et la section de couche dans /etc/renderd.conf. Vérifiez les modules Apache, l’URI /hot/ et les journaux de renderd.
Comment savoir si renderd fabrique réellement les tuiles ?
Ouvrez la page de test sur une zone incluse dans le PBF, puis suivez /var/log/syslog avec le filtre TILE ou consultez le journal systemd de renderd. Les messages de rendu et l’apparition progressive de la carte constituent un contrôle plus fiable qu’un simple statut de service actif.
Avertissement : cette procédure cible Ubuntu 24.04 LTS amd64 avec PostgreSQL 16, PostGIS 3, Mapnik 3.0.x, openstreetmap-carto v5.9.0 et les paquets renderd/mod_tile disponibles pour cette distribution. Rejouez l’installation sur une machine vierge et testez chaque étape avant toute mise en production, notamment avant d’ouvrir le serveur à des utilisateurs externes.