docker run --rm -ti -v $( pwd) :/work --workdir /work/website -u 1000 -p 8080:8080 node:lts-alpine3.23 sh
npm i
# dev
npm run serve
# prod
npm run build
Docker (for running tools like tippecanoe, tilemaker, and osmium)
Conda (for installing snakemake and orchestrating tools on host)
rclone.conf
# rclone.conf
[r2]
type = s3
provider = Cloudflare
access_key_id = abc123
secret_access_key = xyz456
endpoint = https://< accountid> .r2.cloudflarestorage.com
acl = private
ZONE_ID=
CLOUDFLARE_API_TOKEN=
HEALTHCHECKS_URL=
Generate OpenStreetMap for Saudi Arabia
# Build the images with the current host user's UID/GID.
USER_UID=$( id -u) USER_GID=$( id -g) docker compose build
mkdir data
conda create -c conda-forge -c bioconda -c nodefaults -n snakemake snakemake-minimal
conda activate snakemake
# run all
snakemake -p --cores 1 --snakefile pipelines/make-osm.smk --rerun-incomplete
# run specific job and downstream
snakemake -p --cores 1 --snakefile pipelines/make-osm.smk --forcerun make_mbtiles
# run only specific job
snakemake -p --cores 1 --snakefile pipelines/make-osm.smk --force make_mbtiles
# print commands without run
snakemake -pn --cores 1 --snakefile pipelines/make-osm.smk --forceall
Generate World Overviews (water, continents, countries, capitals ..etc)
# run
snakemake -p --cores 1 --snakefile pipelines/make-world-overview.smk clean --forceall
# run only specific job
snakemake -p --cores 1 --snakefile pipelines/make-world-overview.smk --force make_mbtiles
# print commands without run
snakemake -pn --cores 1 --snakefile pipelines/make-world-overview.smk clean --forceall
# test
docker run --rm \
-p 8080:8080 \
-v " $PWD :/work" \
maptiler/tileserver-gl \
-c /work/config.json \
--verbose
# get shp layer names
docker run --rm -ti -v $( pwd) :/work --workdir /work -u 1000 ghcr.io/osgeo/gdal:latest bash
ogrinfo -so your_layer.shp your_layer
sudo cp pipelines/make-osm.service /etc/systemd/system/
sudo cp pipelines/make-osm.timer /etc/systemd/system/
# enable
sudo systemctl daemon-reload
sudo systemctl enable --now make-osm.timer
# test
sudo systemctl start make-osm.service
journalctl -u make-osm.service -f
# check timer
systemctl list-timers make-osm.timer
OpenMapTiles tiles helper tools
# gzip styles and push styles to r2
bash pipelines/push-styles.sh
# push sprites
bash pipelines/push-sprites.sh
# push fonts
bash pipelines/push-fonts.sh