This guide will help to install OSM Tile server on Debian Buster

OSM database: gis

Database user: gisuser

Table of contents:

1. Install required packages

Login as root, and run:

apt install postgresql postgis apache2 apache2-dev libmapnik-dev osm2pgsql python-mapnik git mapnik-utils fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted ttf-unifont

2. Create user account

useradd -m gisuser

3. Prepare database

Create database user gisuser and database gis:

su - postgres
psql

create user gis;
create database gis owner gisuser;
\q

psql gis

CREATE EXTENSION postgis;
CREATE EXTENSION hstore;
ALTER TABLE geometry_columns OWNER TO gisuser;
ALTER TABLE spatial_ref_sys OWNER TO gisuser;
\q

exit

4. Build renderd

su - gisuser
mkdir ~/src
cd ~/src
git clone -b switch2osm https://github.com/SomeoneElseOSM/mod_tile.git
cd mod_tile

Modify the following files:

debian/compat:

debian/changelog:

libapache2-mod-tile (0.4.12~buster) precise; urgency=low

debian/renderd.init:

Change the following variables:

DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-c /etc/renderd.conf"
RUNASUSER=gisuser

Finally build package:

cd ~/src/mod_tile
./autogen.sh
dpkg-buildpackage -uc -us

In ~/src directory you should find:

libapache2-mod-tile_0.4.12~buster_amd64.deb renderd_0.4.12~buster_amd64.deb

Install them from root account:

apt install ./libapache2-mod-tile_0.4.12~buster_amd64.deb ./renderd_0.4.12~buster_amd64.deb

5. Download and build opencarto

apt install npm nodejs
npm install carto
su - gisuser
cd ~/src
git clone git://github.com/gravitystorm/openstreetmap-carto.git
cd openstreetmap-carto
carto project.mml > mapnik.xml

After last command, you can see a lot of warnings. I don't understand them, but it looks that they are irrelevant :)

6. Download map data

Under gisuser account:

mkdir ~/data
cd ~/data
wget https://download.geofabrik.de/<interesting area>.osm.pbf

For testing you can download a small pbf file, i.e.: https://download.geofabrik.de/africa/cape-verde-latest.osm.pbf

7. Import map to gis database

Under gisuser account:

osm2pgsql -d gis --create --slim  -G --hstore --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua -C 2500 --number-processes 1 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/cape-verde-latest.osm.pbf

Of course, instead of cape-verde-latest.osm.pbf, you can use any pbf you want.

8. Load shape files

cd ~/src/openstreetmap-carto
scripts/get-shapefiles.py

9. Fix renderd paths

In /etc/renderd.conf you should have:

[mapnik]
plugins_dir=/usr/lib/mapnik/3.0/input
font_dir=/usr/share/fonts/truetype/dejavu

[default]
XML=/home/gisuser/src/openstreetmap-carto/mapnik.xml

10. Fix mod_tile permissions

From root:

chown gisuser.gisuser /var/lib/mod_tile

11. Finally start renderd

service renderd stop
service renderd start

check /var/log/syslog for messages from renderd.