ARG ARCH
FROM amd64/debian:10.8-slim@sha256:e9c905e9eb9bc8d490a959d19e92b130d4ca10b84f4848d0c00c33811a23cd4a AS base-amd64
FROM arm32v7/debian:10.8-slim@sha256:58dcf754d9435f3a45f2764fd59e181ddcf3714dc493c6ae2bc8d2026435d523 AS base-arm
FROM arm64v8/debian:10.8-slim@sha256:02c2362118e328d9bc86d35b0a3aed8f10c1d092668b8e5c2b39609ff24147f8 AS base-arm64
FROM base-${ARCH}

ENV COTURN_VERSION="4.5.2"
ENV PROMETHEUS_CLIENT_VERSION="v0.1.3"

ENV BUILD_PREFIX /usr/local/src

WORKDIR /root/coturn

RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \
    build-essential="12.6" \
    pkg-config="0.29-6" \
    libssl-dev="1.1.1d-0+deb10u4" \
    libevent-dev="2.1.8-stable-4" \
    curl="7.64.0-4+deb10u1" \
 && PCV=$(echo "${PROMETHEUS_CLIENT_VERSION}" | cut -c 2-) \
 && curl -L "https://github.com/digitalocean/prometheus-client-c/releases/download/${PROMETHEUS_CLIENT_VERSION}/libprom-dev-${PCV}-Linux.deb" > /tmp/libprom.deb \
 && curl -L "https://github.com/digitalocean/prometheus-client-c/releases/download/${PROMETHEUS_CLIENT_VERSION}/libpromhttp-dev-${PCV}-Linux.deb" > /tmp/libpromhttp.deb \
 && apt-get install -y /tmp/libprom.deb \
 && apt-get install -y /tmp/libpromhttp.deb \
 && rm /tmp/libprom.deb /tmp/libpromhttp.deb \
 && curl -L "https://github.com/coturn/coturn/archive/${COTURN_VERSION}.tar.gz" | tar xvz --strip 1 \
 && ./configure \
 && make \
 && make install \
 && rm -rf /root/coturn

RUN addgroup --system turnserver \
 && adduser --system --home / --shell /bin/false --no-create-home --ingroup turnserver --disabled-password --disabled-login --gecos "turnserver daemon" turnserver

WORKDIR /
USER turnserver

# SUTN/TURN PORTS
EXPOSE 3478 3479 3478/udp 3479/udp 80 80/udp
EXPOSE 5349 5350 5349/udp 5350/udp 443 443/udp
# CLI
EXPOSE 5766
# Relay Ports
EXPOSE 49152-65535 49152-65535/udp
# Prometheus
EXPOSE 9641

ENTRYPOINT ["turnserver"]