Compare commits

...

34 Commits

Author SHA1 Message Date
Alexander Overvoorde
9679b29b50 Update NodeJS to 14 LTS (#185) 2021-05-13 14:44:24 +02:00
ruhepuls
8f2c575ad6 Carto 5.3.1 integrated (#183) 2021-05-13 14:41:01 +02:00
Alexander Overvoorde
75e7714f20 Merge pull request #168 from Overv/ubuntu-20.04
Upgrade to Ubuntu 20.04
2021-03-07 16:34:51 +01:00
Alexander Overvoorde
ec500a2cde Upgrade to Ubuntu 20.04 2021-03-07 16:34:21 +01:00
Alexander Overvoorde
affae5a92d Merge pull request #169 from mhajder/feature/update-components
Update PostGIS, OpenStreetMap Carto stylesheet and trim_osc.py helper
2021-03-01 21:47:13 +01:00
Mateusz Hajder
a204fb85fd Update PostGIS, OpenStreetMap Carto stylesheet and trim_osc.py helper 2021-02-21 15:37:07 +01:00
Alexander Overvoorde
7636079b4d Merge pull request #164 from jdmonin/readme-switch-url-moved 2021-02-10 21:09:28 +01:00
Jeremy D Monin
2ae828c52b Dockerfile: Update same switch2osm.org url as readme 2021-02-07 15:56:36 -05:00
Jeremy D Monin
6fb62935f3 README: Update link to switch2osm.org tile server guide 2021-02-06 16:20:46 -05:00
Alexander Overvoorde
953232051f Show progress output for wget by default (fixes #156) 2020-10-27 20:55:02 +01:00
Alexander Overvoorde
bedff2a880 Merge pull request #150 from ph1ll/patch-1
Fix Osmosis configuration change
2020-09-17 21:40:58 +02:00
Ph1ll
e79901b7dd Fix Osmosis configuration change 2020-09-16 10:05:33 +01:00
Alexander Overvoorde
5a059ab0a5 Merge pull request #140 from Floyddotnet/master
small improvement of build time and image size
2020-06-03 18:46:28 +02:00
Peter Becker
bcf2cfcada combine several apt install calls 2020-06-03 09:24:05 +00:00
Peter Becker
0e1db36457 fix shallow fetch for osm2pgsql and mod-tile 2020-06-03 09:24:05 +00:00
Peter Becker
677b52468e execute all make calls in parallel 2020-06-03 09:23:54 +00:00
Alexander Overvoorde
1093734e1b Merge branch 'Mou97-master' 2020-06-01 14:12:30 +02:00
Alexander Overvoorde
9fb0743c51 Fix shallow fetch for openstreetmap-carto 2020-06-01 14:11:52 +02:00
Mou97
19cb75baa4 removed git command thats fetches the whole history after a shallow clone 2020-05-31 01:21:42 +01:00
Mou97
82bc6a35a3 renamed Dockerfile-badInternet to Dockerfile 2020-05-29 18:58:57 +01:00
Mou97
44490df8c5 added a dockerfile version to avoid 'connection closed: RPC failed' error when cloning big repos 2020-05-29 14:23:36 +01:00
Alexander Overvoorde
6dc84f1d26 Merge pull request #135 from Istador/patch-1 2020-05-15 18:50:46 +02:00
Robin C. Ladiges
26a4b9f239 OSM2PGSQL_EXTRA_ARGS inside quotes
This commit fixes issue #133.
2020-05-15 16:24:01 +02:00
Alexander Overvoorde
2754592d1c Rearrange OSM2PGSQL_EXTRA_ARGS to allow overriding of existing parameters (fixes #112) 2020-04-26 19:00:59 +02:00
Alexander Overvoorde
e838310073 Merge pull request #119 from Sohalt/master
Use https everywhere and remove `--allow-unauthenticated`
2020-04-07 21:26:36 +02:00
sohalt
cca2d00a78 Remove --allow-unauthenticated 2020-04-07 04:30:10 +02:00
sohalt
cc5b50b050 http -> https 2020-04-07 04:29:18 +02:00
Alexander Overvoorde
d8f2fc14e4 Merge pull request #116 from atychang/master
Fix font_dir of mapnik
2020-04-02 20:44:53 +02:00
Allen Chang
1b437e143f Fix font_dir of mapnik
OpenType fonts (OTF) are located in `/usr/share/fonts/opentype`,
however, the font_dir of mapnik is `/usr/share/fonts/truetype` and
mapnik is support OTF, it will cause mapnik can't find the OTFs
(OTFs are used by openstreetmap-carto, e.g., Noto CJK JP).
2020-04-02 13:28:24 +08:00
Alexander Overvoorde
acedcce53d Improve consistency of parameter naming and document PBF/POLY download parameters 2020-02-20 20:29:14 +01:00
Alexander Overvoorde
e15dee4665 Merge pull request #105 from skydiablo/master
allow external PBF file with auto-downloader
2020-02-20 20:18:05 +01:00
Volker von Hoesslin
83f26e1abe fix indent 2020-02-20 08:46:46 +01:00
Volker von Hoesslin
6d0e8070f5 fix bash syntax 2020-02-19 12:01:17 +01:00
Volker von Hoesslin
2a69c977c9 allow external PBF file with auto-downloader 2020-02-14 11:59:27 +01:00
4 changed files with 58 additions and 31 deletions

View File

@@ -1,7 +1,7 @@
FROM ubuntu:18.04 FROM ubuntu:20.04
# Based on # Based on
# https://switch2osm.org/manually-building-a-tile-server-18-04-lts/ # https://switch2osm.org/serving-tiles/manually-building-a-tile-server-18-04-lts/
# Set up environment # Set up environment
ENV TZ=UTC ENV TZ=UTC
@@ -11,17 +11,14 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Install dependencies # Install dependencies
RUN apt-get update \ RUN apt-get update \
&& apt-get install wget gnupg2 lsb-core -y \ && apt-get install -y wget gnupg2 lsb-core apt-transport-https ca-certificates curl \
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& echo "deb [ trusted=yes ] http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \ && echo "deb [ trusted=yes ] https://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \
&& wget --quiet -O - https://deb.nodesource.com/setup_14.x | bash - \
&& apt-get update \ && apt-get update \
&& apt-get install -y apt-transport-https ca-certificates
RUN apt-get install -y curl \
&& wget --quiet -O - https://deb.nodesource.com/setup_10.x | bash - \
&& apt-get install -y nodejs && apt-get install -y nodejs
RUN apt-get install -y --no-install-recommends --allow-unauthenticated \ RUN apt-get install -y --no-install-recommends \
apache2 \ apache2 \
apache2-dev \ apache2-dev \
autoconf \ autoconf \
@@ -46,20 +43,18 @@ RUN apt-get install -y --no-install-recommends --allow-unauthenticated \
libgdal-dev \ libgdal-dev \
libgeos++-dev \ libgeos++-dev \
libgeos-dev \ libgeos-dev \
libgeotiff-epsg \
libicu-dev \ libicu-dev \
liblua5.3-dev \ liblua5.3-dev \
libmapnik-dev \ libmapnik-dev \
libpq-dev \ libpq-dev \
libproj-dev \ libproj-dev \
libprotobuf-c0-dev \ libprotobuf-c-dev \
libtiff5-dev \ libtiff5-dev \
libtool \ libtool \
libxml2-dev \ libxml2-dev \
lua5.3 \ lua5.3 \
make \ make \
mapnik-utils \ mapnik-utils \
node-gyp \
osmium-tool \ osmium-tool \
osmosis \ osmosis \
postgis \ postgis \
@@ -71,6 +66,7 @@ RUN apt-get install -y --no-install-recommends --allow-unauthenticated \
python3-lxml \ python3-lxml \
python3-psycopg2 \ python3-psycopg2 \
python3-shapely \ python3-shapely \
python3-pip \
sudo \ sudo \
tar \ tar \
ttf-unifont \ ttf-unifont \
@@ -81,13 +77,19 @@ RUN apt-get install -y --no-install-recommends --allow-unauthenticated \
&& apt-get autoremove --yes \ && apt-get autoremove --yes \
&& rm -rf /var/lib/{apt,dpkg,cache,log}/ && rm -rf /var/lib/{apt,dpkg,cache,log}/
# Install python libraries
RUN pip3 install requests \
&& pip3 install pyyaml
# Set up PostGIS # Set up PostGIS
RUN wget http://download.osgeo.org/postgis/source/postgis-3.0.0.tar.gz -O postgis.tar.gz \ RUN wget https://download.osgeo.org/postgis/source/postgis-3.1.1.tar.gz -O postgis.tar.gz \
&& mkdir -p postgis_src \ && mkdir -p postgis_src \
&& tar -xvzf postgis.tar.gz --strip 1 -C postgis_src \ && tar -xvzf postgis.tar.gz --strip 1 -C postgis_src \
&& rm postgis.tar.gz \ && rm postgis.tar.gz \
&& cd postgis_src \ && cd postgis_src \
&& ./configure && make && make install \ && ./configure \
&& make -j $(nproc) \
&& make -j $(nproc) install \
&& cd .. && rm -rf postgis_src && cd .. && rm -rf postgis_src
# Set up renderer user # Set up renderer user
@@ -96,14 +98,14 @@ RUN adduser --disabled-password --gecos "" renderer
# Install latest osm2pgsql # Install latest osm2pgsql
RUN mkdir -p /home/renderer/src \ RUN mkdir -p /home/renderer/src \
&& cd /home/renderer/src \ && cd /home/renderer/src \
&& git clone https://github.com/openstreetmap/osm2pgsql.git \ && git clone -b master https://github.com/openstreetmap/osm2pgsql.git --depth 1 \
&& cd /home/renderer/src/osm2pgsql \ && cd /home/renderer/src/osm2pgsql \
&& rm -rf .git \ && rm -rf .git \
&& mkdir build \ && mkdir build \
&& cd build \ && cd build \
&& cmake .. \ && cmake .. \
&& make -j $(nproc) \ && make -j $(nproc) \
&& make install \ && make -j $(nproc) install \
&& mkdir /nodes \ && mkdir /nodes \
&& chown renderer:renderer /nodes \ && chown renderer:renderer /nodes \
&& rm -rf /home/renderer/src/osm2pgsql && rm -rf /home/renderer/src/osm2pgsql
@@ -111,8 +113,9 @@ RUN mkdir -p /home/renderer/src \
# Install mod_tile and renderd # Install mod_tile and renderd
RUN mkdir -p /home/renderer/src \ RUN mkdir -p /home/renderer/src \
&& cd /home/renderer/src \ && cd /home/renderer/src \
&& git clone -b switch2osm https://github.com/SomeoneElseOSM/mod_tile.git \ && git clone -b switch2osm https://github.com/SomeoneElseOSM/mod_tile.git --depth 1 \
&& cd mod_tile \ && cd mod_tile \
&& rm -rf .git \
&& ./autogen.sh \ && ./autogen.sh \
&& ./configure \ && ./configure \
&& make -j $(nproc) \ && make -j $(nproc) \
@@ -124,17 +127,15 @@ RUN mkdir -p /home/renderer/src \
# Configure stylesheet # Configure stylesheet
RUN mkdir -p /home/renderer/src \ RUN mkdir -p /home/renderer/src \
&& cd /home/renderer/src \ && cd /home/renderer/src \
&& git clone https://github.com/gravitystorm/openstreetmap-carto.git \ && git clone --single-branch --branch v5.3.1 https://github.com/gravitystorm/openstreetmap-carto.git --depth 1 \
&& git -C openstreetmap-carto checkout v4.23.0 \
&& cd openstreetmap-carto \ && cd openstreetmap-carto \
&& rm -rf .git \ && rm -rf .git \
&& npm install -g carto@0.18.2 \ && npm install -g carto@0.18.2 \
&& carto project.mml > mapnik.xml \ && carto project.mml > mapnik.xml
&& scripts/get-shapefiles.py \
&& rm /home/renderer/src/openstreetmap-carto/data/*.zip
# Configure renderd # Configure renderd
RUN sed -i 's/renderaccount/renderer/g' /usr/local/etc/renderd.conf \ RUN sed -i 's/renderaccount/renderer/g' /usr/local/etc/renderd.conf \
&& sed -i 's/\/truetype//g' /usr/local/etc/renderd.conf \
&& sed -i 's/hot/tile/g' /usr/local/etc/renderd.conf && sed -i 's/hot/tile/g' /usr/local/etc/renderd.conf
# Configure Apache # Configure Apache
@@ -170,7 +171,7 @@ RUN mkdir -p /home/renderer/src \
&& cd /home/renderer/src \ && cd /home/renderer/src \
&& git clone https://github.com/zverik/regional \ && git clone https://github.com/zverik/regional \
&& cd regional \ && cd regional \
&& git checkout 612fe3e040d8bb70d2ab3b133f3b2cfc6c940520 \ && git checkout 889d630a1e1a1bacabdd1dad6e17b49e7d58cd4b \
&& rm -rf .git \ && rm -rf .git \
&& chmod u+x /home/renderer/src/regional/trim_osc.py && chmod u+x /home/renderer/src/regional/trim_osc.py

View File

@@ -2,7 +2,7 @@
[![Build Status](https://travis-ci.org/Overv/openstreetmap-tile-server.svg?branch=master)](https://travis-ci.org/Overv/openstreetmap-tile-server) [![](https://images.microbadger.com/badges/image/overv/openstreetmap-tile-server.svg)](https://microbadger.com/images/overv/openstreetmap-tile-server "openstreetmap-tile-server") [![Build Status](https://travis-ci.org/Overv/openstreetmap-tile-server.svg?branch=master)](https://travis-ci.org/Overv/openstreetmap-tile-server) [![](https://images.microbadger.com/badges/image/overv/openstreetmap-tile-server.svg)](https://microbadger.com/images/overv/openstreetmap-tile-server "openstreetmap-tile-server")
This container allows you to easily set up an OpenStreetMap PNG tile server given a `.osm.pbf` file. It is based on the [latest Ubuntu 18.04 LTS guide](https://switch2osm.org/manually-building-a-tile-server-18-04-lts/) from [switch2osm.org](https://switch2osm.org/) and therefore uses the default OpenStreetMap style. This container allows you to easily set up an OpenStreetMap PNG tile server given a `.osm.pbf` file. It is based on the [latest Ubuntu 18.04 LTS guide](https://switch2osm.org/serving-tiles/manually-building-a-tile-server-18-04-lts/) from [switch2osm.org](https://switch2osm.org/) and therefore uses the default OpenStreetMap style.
## Setting up the server ## Setting up the server
@@ -38,6 +38,19 @@ docker run \
Refer to the section *Automatic updating and tile expiry* to actually enable the updates while running the tile server. Refer to the section *Automatic updating and tile expiry* to actually enable the updates while running the tile server.
### Letting the container download the file
It is also possible to let the container download files for you rather than mounting them in advance by using the `DOWNLOAD_PBF` and `DOWNLOAD_POLY` parameters:
```
docker run \
-e DOWNLOAD_PBF=https://download.geofabrik.de/europe/luxembourg-latest.osm.pbf \
-e DOWNLOAD_POLY=https://download.geofabrik.de/europe/luxembourg.poly \
-v openstreetmap-data:/var/lib/postgresql/12/main \
overv/openstreetmap-tile-server \
import
```
## Running the server ## Running the server
Run the server like this: Run the server like this:
@@ -225,7 +238,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,

View File

@@ -22,7 +22,7 @@ OSM2PGSQL_BIN=osm2pgsql
TRIM_BIN=/home/$ACCOUNT/src/regional/trim_osc.py TRIM_BIN=/home/$ACCOUNT/src/regional/trim_osc.py
DBNAME=gis DBNAME=gis
OSM2PGSQL_OPTIONS="-d $DBNAME -G --hstore ${OSM2PGSQL_EXTRA_ARGS} --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style" OSM2PGSQL_OPTIONS="-d $DBNAME -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style ${OSM2PGSQL_EXTRA_ARGS}"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# When using trim_osc.py we can define either a bounding box (such as this # When using trim_osc.py we can define either a bounding box (such as this
@@ -111,7 +111,7 @@ if [ $# -eq 1 ] ; then
m_info "Initialising Osmosis replication system to $1" m_info "Initialising Osmosis replication system to $1"
mkdir $WORKOSM_DIR mkdir $WORKOSM_DIR
$OSMOSIS_BIN --read-replication-interval-init workingDirectory=$WORKOSM_DIR 1>&2 2> "$OSMOSISLOG" $OSMOSIS_BIN --read-replication-interval-init workingDirectory=$WORKOSM_DIR 1>&2 2> "$OSMOSISLOG"
wget "http://replicate-sequences.osm.mazdermind.de/?"$1"T00:00:00Z" -O $WORKOSM_DIR/state.txt wget "https://replicate-sequences.osm.mazdermind.de/?"$1"T00:00:00Z" -O $WORKOSM_DIR/state.txt
mv $WORKOSM_DIR/configuration.txt $WORKOSM_DIR/configuration_orig.txt mv $WORKOSM_DIR/configuration.txt $WORKOSM_DIR/configuration_orig.txt
sed "s!baseUrl=http://planet.openstreetmap.org/replication/minute!baseUrl=https://planet.openstreetmap.org/replication/minute!" $WORKOSM_DIR/configuration_orig.txt > $WORKOSM_DIR/configuration.txt sed "s!baseUrl=http://planet.openstreetmap.org/replication/minute!baseUrl=https://planet.openstreetmap.org/replication/minute!" $WORKOSM_DIR/configuration_orig.txt > $WORKOSM_DIR/configuration.txt
else else

21
run.sh
View File

@@ -42,10 +42,19 @@ if [ "$1" = "import" ]; then
setPostgresPassword setPostgresPassword
# Download Luxembourg as sample if no data is provided # Download Luxembourg as sample if no data is provided
if [ ! -f /data.osm.pbf ]; then if [ ! -f /data.osm.pbf ] && [ -z "$DOWNLOAD_PBF" ]; then
echo "WARNING: No import file at /data.osm.pbf, so importing Luxembourg as example..." echo "WARNING: No import file at /data.osm.pbf, so importing Luxembourg as example..."
wget -nv http://download.geofabrik.de/europe/luxembourg-latest.osm.pbf -O /data.osm.pbf DOWNLOAD_PBF="https://download.geofabrik.de/europe/luxembourg-latest.osm.pbf"
wget -nv http://download.geofabrik.de/europe/luxembourg.poly -O /data.poly DOWNLOAD_POLY="https://download.geofabrik.de/europe/luxembourg.poly"
fi
if [ -n "$DOWNLOAD_PBF" ]; then
echo "INFO: Download PBF file: $DOWNLOAD_PBF"
wget "$WGET_ARGS" "$DOWNLOAD_PBF" -O /data.osm.pbf
if [ -n "$DOWNLOAD_POLY" ]; then
echo "INFO: Download PBF-POLY file: $DOWNLOAD_POLY"
wget "$WGET_ARGS" "$DOWNLOAD_POLY" -O /data.poly
fi
fi fi
if [ "$UPDATES" = "enabled" ]; then if [ "$UPDATES" = "enabled" ]; then
@@ -64,11 +73,15 @@ if [ "$1" = "import" ]; then
fi fi
# Import data # Import data
sudo -u renderer osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} ${OSM2PGSQL_EXTRA_ARGS} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style /data.osm.pbf sudo -u renderer osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style /data.osm.pbf ${OSM2PGSQL_EXTRA_ARGS}
# Create indexes # Create indexes
sudo -u postgres psql -d gis -f indexes.sql sudo -u postgres psql -d gis -f indexes.sql
#Import external data
sudo chown -R renderer: /home/renderer/src
sudo -u renderer python3 /home/renderer/src/openstreetmap-carto/scripts/get-external-data.py -c /home/renderer/src/openstreetmap-carto/external-data.yml -D /home/renderer/src/openstreetmap-carto/data
# Register that data has changed for mod_tile caching purposes # Register that data has changed for mod_tile caching purposes
touch /var/lib/mod_tile/planet-import-complete touch /var/lib/mod_tile/planet-import-complete