Skip to content

Instantly share code, notes, and snippets.

@jbaranski
Created August 1, 2020 14:52
Show Gist options
  • Save jbaranski/1c2373314a1e4b987e012aa8ebc5f18e to your computer and use it in GitHub Desktop.
Save jbaranski/1c2373314a1e4b987e012aa8ebc5f18e to your computer and use it in GitHub Desktop.

Revisions

  1. jbaranski created this gist Aug 1, 2020.
    66 changes: 66 additions & 0 deletions SelfHostOpenStreetMapDocker.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    Here are the steps needed to run a self hosted Open Street Map server (using Docker):

    1. Download desired `pbf` files (like `south-carolina-latest.osm.pbf`) from <https://download.geofabrik.de> or just use the following empty planet below:

    ```
    <?xml version='1.0' encoding='UTF-8'?>
    <osm version="0.6" generator="osmconvert 0.8.8" timestamp="2019-10-23T20:18:02Z">
    <bounds minlat="42.4276" minlon="1.412368" maxlat="42.65717" maxlon="1.787481"/>
    </osm>
    ```
    2. Download `osmconvert` from <https://wiki.openstreetmap.org/wiki/Osmconvert>.
    3. If you decided to use `empty-planet.osm`, we need to get it in `pbf` format, so run:
    ```
    osmconvert empty-planet.osm -o=data.osm.pbf
    ```
    4. If you decided to download some `pbf` files, we need to concatenate them together, so run (replacing the `pbf` and `o5m` file names where necessary):
    ```
    osmconvert south-carolina-latest.osm.pbf -o=south-carolina-latest.o5m
    osmconvert north-carolina-latest.osm.pbf -o=north-carolina-latest.o5m
    osmconvert south-carolina-latest.o5m north-carolina-latest.o5m -o=data.o5m
    osmconvert data.o5m -o=data.osm.pbf
    ```
    5. Create a `Dockerfile` with the following content (in the same directory where your `data.osm.pbf` is):
    ```
    FROM overv/openstreetmap-tile-server
    COPY data.osm.pbf /data.osm.pbf
    RUN /run.sh import
    VOLUME ["/var/lib/postgresql/12/main", "/var/lib/mod_tile"]
    ENTRYPOINT ["/run.sh", "run"]
    ```
    See <https://github.com/Overv/openstreetmap-tile-server> for more information about the base image used.
    6. Build the container:
    ```
    docker build . -t osm-self-hosted
    ```
    7. Run the container:
    ```
    docker run -p 80:80 -p 5432:5432 --name osm-self-hosted -e ALLOW_CORS=1 -d osm-self-hosted run
    ```
    Port `80` is for the client. Port `5432` is for the database server. `ALLOW_CORS=1` will enable CORS in case your client is served from a different domain.
    8. Navigate to <http://localhost> in your browser. A simple example client will show the map if everything worked properly.
    9. You can connect to the database using pgAdmin with the following info:
    - Host: `localhost:5432`
    - Maintenance database: `gis`
    - User/pass is `renderer`