Mod tile/Setup of your own tile server

From OpenStreetMap Wiki
< Mod tile(Redirected from HowTo mod tile)
Jump to navigation Jump to search

This is concise setup guide for mod_tile. It is meant as follow-up to Richard Weait's guide for the setup of your own tile server. Note that a lot of this documentation was incorporated into and improved there.


  1. Follow
  2. You should have already up and running mapnik with map data and tested osm.xml file
  3. The guide is based on Ubuntu 11.4, 64-bit, on an EC2 machine (m1.large). Differences on physical machine and other distros should be minimal.


Install some tools

sudo aptitude install apache2 apache2-threaded-dev apache2-mpm-prefork apache2-utils
sudo apt-get install libagg-dev

Get and install mod_tile itself

cd ~/src
git clone
cd mod_tile
sudo make install
sudo make install-mod_tile # Only needed with recent mod_tile version

Configure mod_tile:

sudo nano /etc/renderd.conf

Edit following lines like this:

sudo mkdir /var/run/renderd
sudo chown ubuntu /var/run/renderd

Configure apache for mod_tile

sudo nano /etc/apache2/conf.d/mod_tile # new file

Add just one line here:

LoadModule tile_module /usr/lib/apache2/modules/
sudo nano /etc/apache2/sites-available/default

Add following lines to the virtual host (just after admin email line):

LoadTileConfigFile /etc/renderd.conf
ModTileRenderdSocketName /tmp/osm-renderd
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 3
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 30

I would move tile folder from root partition to /mnt which has more space (that's optional)

sudo mkdir /mnt/tiles
sudo ln -s  /mnt/tiles/ /var/lib/mod_tile
sudo chown ubuntu /var/lib/mod_tile

Now start renderd

cd ~/src/mod_tile

Note: it does not output anything, just stays to background

Note: *renderd -f* starts deamon in foreground mode, good for troubleshooting. Or you can check out logs like that:

tail -f /var/log/syslog |grep renderd

Probably you want to create basic map html

sudo nano /var/www/map.html
    <title>OpenLayers Demo</title>
    <style type="text/css">
      html, body, #basicMap {
          width: 100%;
          height: 100%;
          margin: 0;
    <script src=""></script>
      function init() {
           var options = {
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326"),
                units: "m",
                maxResolution: 156543.0339,
                maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,
                                                 20037508.34, 20037508.34),
                numZoomLevels: 20,
                controls: [
                        new OpenLayers.Control.Navigation(),
                        new OpenLayers.Control.PanZoomBar(),
                        new OpenLayers.Control.Permalink(),
                        new OpenLayers.Control.ScaleLine(),
                        new OpenLayers.Control.MousePosition(),
                        new OpenLayers.Control.KeyboardDefaults()

        map = new OpenLayers.Map("basicMap",options);
        var newL = new OpenLayers.Layer.OSM("Default", "/osm_tiles2/${z}/${x}/${y}.png", {numZoomLevels: 19});
  <body onload="init();">
    <div id="basicMap"></div>

Now check out the map, open (fingers crossed!):


You should see the map now. If no, check out renderd logs (from the syslog)

Pre-render low zoom level tiles. It will take time - 10-20 hours for full planet

cd ~/src/mod_tile
time ./render_list -m default -a -z 0 -Z 10

Last TODO: create automatic start script for the renderd. This is distro specific.

Server monitoring

It is easiest to use Munin monitoring for your server See for Munin for Postgresql. Following does this + mod_tile/renderd monitoring.

1.Mod_tile monitoring

sudo ln -s /home/ubuntu/src/mod_tile/munin/* /etc/munin/plugins/
sudo chmod a+x /home/ubuntu/src/mod_tile/munin/*

2.Postgres monitoring

sudo aptitude install munin munin-node munin-plugins-extra libdbd-pg-perl
sudo munin-node-configure --shell | sudo sh
sudo service munin-node restart

3. Publishing munin via web

 sudo nano /etc/apache2/sites-available/default
 Alias /munin/ "/var/cache/munin/www/"
   <Directory "/var/cache/munin/www/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
#        Deny from all
       Allow from ::1/128
sudo /etc/init.d/apache2 restart
sudo -u munin munin-cron

Go to http://YOURHOST/munin/

Note: the stats is public this way. You may want to protect it.

4. add munin-update to crontab

sudo -u munin crontab -e

Add this line:

*/5 * * * *     /usr/bin/munin-cron