From d1e8e426ded97a4863eb20f8e911ac72fc2648b0 Mon Sep 17 00:00:00 2001 From: dreamer Date: Mon, 10 May 2021 21:19:20 +0200 Subject: [PATCH] puike-site --- Dockerfile | 317 ++++++++++++++++++++++++++++++ code/app.lua | 14 ++ code/handlers/roothandler.lua | 8 + code/mime.types | 83 ++++++++ code/nginx.conf | 108 +++++++++++ code/static/stat.xsl | 356 ++++++++++++++++++++++++++++++++++ code/views/layout.etlua | 11 ++ code/views/root.etlua | 5 + docker-compose-local.yml | 17 ++ docker-compose.yml | 30 +++ 10 files changed, 949 insertions(+) create mode 100644 Dockerfile create mode 100644 code/app.lua create mode 100644 code/handlers/roothandler.lua create mode 100644 code/mime.types create mode 100644 code/nginx.conf create mode 100644 code/static/stat.xsl create mode 100644 code/views/layout.etlua create mode 100644 code/views/root.etlua create mode 100644 docker-compose-local.yml create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..67ec5a4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,317 @@ +ARG RESTY_IMAGE_BASE="alpine" +ARG RESTY_IMAGE_TAG="3.13" +ARG FFMPEG_VERSION=4.4 + +############################## +# Build the OpenResty-build image. +# mostly from https://github.com/openresty/docker-openresty/blob/master/alpine/Dockerfile +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} as build-openresty + +ARG RESTY_IMAGE_BASE +ARG RESTY_IMAGE_TAG +ARG RESTY_VERSION="1.19.3.1" +ARG RESTY_OPENSSL_VERSION="1.1.1k" +ARG RESTY_OPENSSL_PATCH_VERSION="1.1.1f" +ARG RESTY_OPENSSL_URL_BASE="https://www.openssl.org/source" +ARG RESTY_PCRE_VERSION="8.44" +ARG RESTY_J="4" +ARG RESTY_CONFIG_OPTIONS="\ + --with-compat \ + --with-file-aio \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_geoip_module=dynamic \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_image_filter_module=dynamic \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_secure_link_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_stub_status_module \ + --with-http_sub_module \ + --with-http_v2_module \ + --with-http_xslt_module=dynamic \ + --with-ipv6 \ + --with-mail \ + --with-mail_ssl_module \ + --with-md5-asm \ + --with-pcre-jit \ + --with-sha1-asm \ + --with-stream \ + --with-stream_ssl_module \ + --with-threads \ + " +ARG RESTY_CONFIG_OPTIONS_MORE="" +ARG RESTY_LUAJIT_OPTIONS="--with-luajit-xcflags='-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT'" + +ARG RESTY_ADD_PACKAGE_BUILDDEPS="" +ARG RESTY_ADD_PACKAGE_RUNDEPS="" +ARG RESTY_EVAL_PRE_CONFIGURE="" +ARG RESTY_EVAL_POST_MAKE="" + +ARG NGINX_RTMP_VERSION=1.2.1 + +# These are not intended to be user-specified +ARG _RESTY_CONFIG_DEPS="--add-module=/tmp/nginx-rtmp-module-${NGINX_RTMP_VERSION} --with-pcre \ + --with-cc-opt='-DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl/include' \ + --with-ld-opt='-L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl/lib -Wl,-rpath,/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl/lib' \ + " + + +# Build dependencies. +RUN apk add --update \ + build-base \ + coreutils \ + ca-certificates \ + curl \ + linux-headers \ + libc-dev \ + libgcc \ + musl-dev \ + pcre-dev \ + zlib-dev \ + perl-dev \ + gd-dev \ + geoip-dev \ + libxslt-dev \ + gcc \ + make \ + pkgconf \ + pkgconfig + +# get and build openssl source +RUN cd /tmp \ + && if [ -n "${RESTY_EVAL_PRE_CONFIGURE}" ]; then eval $(echo ${RESTY_EVAL_PRE_CONFIGURE}); fi \ + && cd /tmp \ + && curl -fSL "${RESTY_OPENSSL_URL_BASE}/openssl-${RESTY_OPENSSL_VERSION}.tar.gz" -o openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ + && tar xzf openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ + && cd openssl-${RESTY_OPENSSL_VERSION} \ + && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.1" ] ; then \ + echo 'patching OpenSSL 1.1.1 for OpenResty' \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \ + fi \ + && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.0" ] ; then \ + echo 'patching OpenSSL 1.1.0 for OpenResty' \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/ed328977028c3ec3033bc25873ee360056e247cd/patches/openssl-1.1.0j-parallel_build_fix.patch | patch -p1 \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \ + fi \ + && ./config \ + no-threads shared zlib -g \ + enable-ssl3 enable-ssl3-method \ + --prefix=/usr/local/openresty/openssl \ + --libdir=lib \ + -Wl,-rpath,/usr/local/openresty/openssl/lib \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install_sw + +# get and build pcre source +RUN cd /tmp \ + && curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz && rm pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && cd /tmp/pcre-${RESTY_PCRE_VERSION} \ + && ./configure \ + --prefix=/usr/local/openresty/pcre \ + --disable-cpp \ + --enable-jit \ + --enable-utf \ + --enable-unicode-properties \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install + +# Get nginx-rtmp module. +RUN cd /tmp \ + && wget https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_VERSION}.tar.gz \ + && tar zxf v${NGINX_RTMP_VERSION}.tar.gz && rm v${NGINX_RTMP_VERSION}.tar.gz + +# get and build openresty source +RUN cd /tmp \ + && curl -fSL https://openresty.org/download/openresty-${RESTY_VERSION}.tar.gz -o openresty-${RESTY_VERSION}.tar.gz \ + && tar xzf openresty-${RESTY_VERSION}.tar.gz && rm openresty-${RESTY_VERSION}.tar.gz \ + && cd /tmp/openresty-${RESTY_VERSION} \ + && eval ./configure -j${RESTY_J} ${_RESTY_CONFIG_DEPS} ${RESTY_CONFIG_OPTIONS} ${RESTY_CONFIG_OPTIONS_MORE} ${RESTY_LUAJIT_OPTIONS} \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install + + +############################### +# Build the FFmpeg-build image. +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} as build-ffmpeg +ARG FFMPEG_VERSION +ARG PREFIX=/usr/local +ARG MAKEFLAGS="-j4" + +# FFmpeg build dependencies. +RUN apk add --update \ + build-base \ + coreutils \ + freetype-dev \ + lame-dev \ + libogg-dev \ + libass \ + libass-dev \ + libvpx-dev \ + libvorbis-dev \ + libwebp-dev \ + libtheora-dev \ + openssl-dev \ + opus-dev \ + pkgconf \ + pkgconfig \ + rtmpdump-dev \ + wget \ + x264-dev \ + x265-dev \ + yasm + +RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories +RUN apk add --update fdk-aac-dev + +# Get FFmpeg source. +RUN cd /tmp/ && \ + wget http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \ + tar zxf ffmpeg-${FFMPEG_VERSION}.tar.gz && rm ffmpeg-${FFMPEG_VERSION}.tar.gz + +# Compile ffmpeg. +RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \ + ./configure \ + --prefix=${PREFIX} \ + --enable-version3 \ + --enable-gpl \ + --enable-nonfree \ + --enable-small \ + --enable-libmp3lame \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libvpx \ + --enable-libtheora \ + --enable-libvorbis \ + --enable-libopus \ + --enable-libfdk-aac \ + --enable-libass \ + --enable-libwebp \ + --enable-postproc \ + --enable-avresample \ + --enable-libfreetype \ + --enable-openssl \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --extra-libs="-lpthread -lm" && \ + make && make install && make distclean + +# Cleanup. +RUN rm -rf /var/cache/* /tmp/* + + +###################################### +# Create FAT version of openresty-rtmp +FROM build-openresty as build-openresty-fat + +ARG RESTY_LUAROCKS_VERSION="3.7.0" + +RUN apk add --no-cache --virtual .build-deps \ + perl-dev \ + && apk add --no-cache \ + bash \ + build-base \ + curl \ + libintl \ + linux-headers \ + make \ + musl \ + outils-md5 \ + perl \ + unzip \ + && cd /tmp \ + && curl -fSL https://luarocks.github.io/luarocks/releases/luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz -o luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ + && tar xzf luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ + && cd luarocks-${RESTY_LUAROCKS_VERSION} \ + && ./configure \ + --prefix=/usr/local/openresty/luajit \ + --with-lua=/usr/local/openresty/luajit \ + --lua-suffix=jit-2.1.0-beta3 \ + --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 \ + && make build \ + && make install \ + && cd /tmp \ + && rm -rf luarocks-${RESTY_LUAROCKS_VERSION} luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ + && apk add --no-cache --virtual .gettext gettext \ + && mv /usr/bin/envsubst /tmp/ \ + && apk del .build-deps .gettext \ + && mv /tmp/envsubst /usr/local/bin/ + +# Add LuaRocks paths +# If OpenResty changes, these may need updating: +# /usr/local/openresty/bin/resty -e 'print(package.path)' +# /usr/local/openresty/bin/resty -e 'print(package.cpath)' +ENV LUA_PATH="/usr/local/openresty/site/lualib/?.ljbc;/usr/local/openresty/site/lualib/?/init.ljbc;/usr/local/openresty/lualib/?.ljbc;/usr/local/openresty/lualib/?/init.ljbc;/usr/local/openresty/site/lualib/?.lua;/usr/local/openresty/site/lualib/?/init.lua;/usr/local/openresty/lualib/?.lua;/usr/local/openresty/lualib/?/init.lua;./?.lua;/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/openresty/luajit/share/lua/5.1/?.lua;/usr/local/openresty/luajit/share/lua/5.1/?/init.lua" +ENV LUA_CPATH="/usr/local/openresty/site/lualib/?.so;/usr/local/openresty/lualib/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so" + +ENV PATH="/usr/local/openresty/bin:/usr/local/openresty/luajit/bin:$PATH" + +ENV LAPIS_VERSION=1.8.3 + +RUN apk add openssl-dev +RUN opm get spacewander/luafilesystem +RUN luarocks install luasec +RUN luarocks install busted +RUN luarocks install --check-lua-versions markov-text +RUN luarocks install lapis ${LAPIS_VERSION} +RUN luarocks install moonscript + + +########################## +# Build the release image. +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} as openresty-rtmp +LABEL MAINTAINER dreamer + +# Set default ports. +ENV HTTP_PORT 8080 +ENV RTMP_PORT 1935 + +RUN apk add --update \ + ca-certificates \ + gettext \ + libgcc \ + geoip \ + gd \ + libxslt \ + zlib \ + lame \ + libogg \ + curl \ + libass \ + libvpx \ + libvorbis \ + libwebp \ + libtheora \ + opus \ + rtmpdump \ + x264-dev \ + x265-dev + + +COPY --from=build-openresty-fat /usr/local/openresty /usr/local/openresty +COPY --from=build-ffmpeg /usr/local /usr/local +COPY --from=build-ffmpeg /usr/lib/libfdk-aac.so.2 /usr/lib/libfdk-aac.so.2 + +# Add NGINX path, config and static files. +ENV LUA_PATH="/usr/local/openresty/site/lualib/?.ljbc;/usr/local/openresty/site/lualib/?/init.ljbc;/usr/local/openresty/lualib/?.ljbc;/usr/local/openresty/lualib/?/init.ljbc;/usr/local/openresty/site/lualib/?.lua;/usr/local/openresty/site/lualib/?/init.lua;/usr/local/openresty/lualib/?.lua;/usr/local/openresty/lualib/?/init.lua;./?.lua;/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/openresty/luajit/share/lua/5.1/?.lua;/usr/local/openresty/luajit/share/lua/5.1/?/init.lua" +ENV LUA_CPATH="/usr/local/openresty/site/lualib/?.so;/usr/local/openresty/lualib/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so" + +ENV PATH="/usr/local/openresty/bin:/usr/local/openresty/luajit/bin:$PATH" + +RUN mkdir -p /opt/data && mkdir /www +# ADD static /www/static + +EXPOSE 1935 +EXPOSE 8080 + +WORKDIR /srv/lapis + +CMD lapis server $ENVIRONMENT diff --git a/code/app.lua b/code/app.lua new file mode 100644 index 0000000..42dc47c --- /dev/null +++ b/code/app.lua @@ -0,0 +1,14 @@ +local lapis = require("lapis") + +local app = lapis.Application() +app:enable("etlua") +app.layout = require "views.layout" + +local autoload = require("lapis.util").autoload +local handlers = autoload("handlers") + +app:get("/", function(self) + return handlers.Roothandler(self) +end) + +return app diff --git a/code/handlers/roothandler.lua b/code/handlers/roothandler.lua new file mode 100644 index 0000000..e185628 --- /dev/null +++ b/code/handlers/roothandler.lua @@ -0,0 +1,8 @@ +local autoload = require("lapis.util").autoload + + +local function Roothandler(self) + return { render = "root" } +end + +return Roothandler diff --git a/code/mime.types b/code/mime.types new file mode 100644 index 0000000..20a2850 --- /dev/null +++ b/code/mime.types @@ -0,0 +1,83 @@ +types { + text/html html htm shtml; + text/css css; + text/xml xml; + image/gif gif; + image/jpeg jpeg jpg; + application/x-lua lua; + application/x-moonscript moon; + application/x-javascript js; + application/atom+xml atom; + application/rss+xml rss; + application/json json; + application/x-bittorrent torrent; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/png png; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + image/svg+xml svg svgz; + image/webp webp; + + application/java-archive jar war ear; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.ms-excel xls; + application/vnd.ms-powerpoint ppt; + application/vnd.wap.wmlc wmlc; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream eot; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/ogg ogg; + audio/x-m4a m4a; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mp4 mp4; + video/mpeg mpeg mpg; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-m4v m4v; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/code/nginx.conf b/code/nginx.conf new file mode 100644 index 0000000..d173c35 --- /dev/null +++ b/code/nginx.conf @@ -0,0 +1,108 @@ +worker_processes ${{NUM_WORKERS}}; +error_log stderr notice; +daemon off; +pid logs/nginx.pid; + +events { + worker_connections 1024; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + + #relays the incoming video to low quality streams on this server, audio-only version and to a different server + exec ffmpeg -i rtmp://localhost:1935/stream/$name + -c:a copy -c:v copy -f flv rtmp://localhost/hls/$name_hi; + exec ffmpeg -i rtmp://localhost:1935/stream/$name -max_muxing_queue_size 1024 + -c:a copy -c:v libx264 -b:v 500K -preset superfast -profile:v baseline -f flv rtmp://localhost/hls/$name_low + 2>/mnt/radio/logs/ffmpeg-$name_low.log; + } + + + application hls { + live on; + hls on; + hls_fragment_naming system; + hls_fragment 3; + hls_playlist_length 60; + hls_path /opt/data/hls; + hls_nested on; + + hls_variant _hi BANDWIDTH=640000; + hls_variant _low BANDWIDTH=160000; + } + } +} + +http { + include mime.types; + + init_by_lua_block { + require("socket") + require("lpeg") + math.randomseed(os.time()+ngx.worker.id()) + } + + + server { + listen ${{PORT}}; + lua_code_cache ${{CODE_CACHE}}; + + # nginx-rtmp hls and status endpoints + location /hls { + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + root /opt/data; + + add_header Access-Control-Allow-Origin *; + } + + location /live { + alias /opt/data/hls; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + + add_header Access-Control-Allow-Origin *; + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet static/stat.xsl; + } + + location /static { + alias static; + } + + location = /crossdomain.xml { + root static; + default_type text/xml; + expires 24h; + } + + # lapis endpoints + location /data/ { + root /mnt; + } + + location / { + default_type text/html; + content_by_lua_block { + require("lapis").serve("app") + } + } + + location /favicon.ico { + alias static/favicon.ico; + } + } +} diff --git a/code/static/stat.xsl b/code/static/stat.xsl new file mode 100644 index 0000000..a81ed4c --- /dev/null +++ b/code/static/stat.xsl @@ -0,0 +1,356 @@ + + + + + + + + + + + + + RTMP statistics + + + +
+ Generated by + nginx-rtmp-module , + nginx , + pid , + built   + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RTMP#clientsVideoAudioIn bytesOut bytesIn bits/sOut bits/sStateTime
Accepted: codecbits/ssizefpscodecbits/sfreqchan + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + live streams + + + + + + + + + + + + vod streams + + + + + + + + + + + + + #cccccc + #dddddd + + + + + + var d=document.getElementById('-'); + d.style.display=d.style.display=='none'?'':'none'; + return false + + + + [EMPTY] + + + + + +    + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + +
IdStateAddressFlash versionPage URLSWF URLDroppedTimestampA-VTime
+ + +
+ + + + + + + + + + + d + + + + h + + + + m + + + s + + + + + + + + + + + + + T + + + G + + + M + + K + + + + b + B + + /s + + + + + + active + idle + + + + + + + publishing + playing + + + + + + + + + #cccccc + #eeeeee + + + + + + + + http://apps.db.ripe.net/search/query.html?searchtext= + + whois + + + + + + + + + + + + + + + + + + + + + + + + + + publishing + + + + active + + + + x + + +
+ diff --git a/code/views/layout.etlua b/code/views/layout.etlua new file mode 100644 index 0000000..ee50da5 --- /dev/null +++ b/code/views/layout.etlua @@ -0,0 +1,11 @@ + + + + Puikheid + + + + + <% content_for("inner") %> + + diff --git a/code/views/root.etlua b/code/views/root.etlua new file mode 100644 index 0000000..730e646 --- /dev/null +++ b/code/views/root.etlua @@ -0,0 +1,5 @@ +
+ +
diff --git a/docker-compose-local.yml b/docker-compose-local.yml new file mode 100644 index 0000000..ef64ecd --- /dev/null +++ b/docker-compose-local.yml @@ -0,0 +1,17 @@ +version: "3.3" +services: + wasted.audio: + build: . + networks: + - web + volumes: + - ./code:/srv/lapis + - ./_assets:/mnt/data + ports: + - "8082:8080" + - "1935:1935" + + +networks: + web: + external: true diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f4f97ae --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,30 @@ +version: "3.3" +services: + puikheid: + environment: + - ENVIRONMENT + build: . + networks: + - web + volumes: + - ./code:/srv/lapis + - /media/puikheid.nl:/mnt/data + ports: + - "1935:1935" + labels: + - traefik.enable=true + - traefik.http.routers.trackdb.rule=Host(`puikheid.nl`) + - traefik.http.routers.trackdb.entrypoints=web + - traefik.http.routers.trackdb.middlewares=redirect-https-trackdb + - traefik.http.middlewares.redirect-https-trackdb.redirectscheme.scheme=https + + - traefik.http.routers.trackdb_ssl.rule=Host(`puikheid.nl`) + - traefik.http.routers.trackdb_ssl.entrypoints=websecure + - traefik.http.routers.trackdb_ssl.tls.certresolver=myresolver + + - traefik.http.services.trackdb.loadbalancer.server.port=8080 + + +networks: + web: + external: true