diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2bc18fd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM node:13-slim + +WORKDIR . + +EXPOSE 80 + +RUN apt update \ + && apt install -y --no-install-recommends \ + unattended-upgrades \ + ca-certificates \ + nginx \ + git \ + wget \ + curl + +COPY ./nginx-site.default /etc/nginx/sites-available/default + +CMD rm -rf /var/www/html/* ; \ + mkdir -p /var/www/html/data ; \ + echo "

Meshviewer wird frisch geklont und neu gebaut.

Bitte 1-2 Minuten warten...

" > /var/www/html/index.html ; \ + service nginx start ; \ + yarn ; \ + yarn gulp ; \ + yarn cache clean ; \ + rm -rf node_modules ; \ + sh -c "wget http://gw01.babel.md.freifunk.net:8080/data/meshviewer.json -O /var/www/html/data/meshviewer.json" ; \ + cp -R -f build/* /var/www/html ; \ + while true; do sleep 1m; sh -c "wget http://gw01.babel.md.freifunk.net:8080/data/meshviewer.json -O /var/www/html/data/meshviewer.json" ; done diff --git a/nginx-site.default b/nginx-site.default new file mode 100644 index 0000000..3ff630b --- /dev/null +++ b/nginx-site.default @@ -0,0 +1,40 @@ +server_tokens off; + +proxy_cache_path /var/www/cache levels=1:2 keys_zone=osm-backend-cache:8m max_size=5g inactive=7d; + +upstream osm_backend { + server a.tile.openstreetmap.org; + server b.tile.openstreetmap.org; + server c.tile.openstreetmap.org; +} + +server { + listen 80 default_server; + listen [::]:80 default_server; + root /var/www/html; + index index.html; + server_name _; + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ =404; + } + + location ~ ^/tiles-cache/(.*)$ { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X_FORWARDED_PROTO http; + proxy_set_header Host $http_host; + + proxy_cache osm-backend-cache; + proxy_hide_header Set-Cookie; + proxy_ignore_headers Set-Cookie; + proxy_cache_valid 200 302 7d; + proxy_cache_valid 404 1m; + proxy_redirect off; + if (!-f $request_filename) { + proxy_pass http://osm_backend/$1; + break; + } + } +}