mediamtx-edge-relay
Unified RTSP/RTMP/WebRTC ingest & restream for fleets
arm64amd64
MediaMTXRTSPRTMPWebRTCGateway
Overview
Primary hardware
Generic Edge (arm64/amd64)
What it does
Runs MediaMTX (formerly rtsp-simple-server) to fan-in cameras and restream to RTSP/RTMP/WebRTC.
Why it saves time
One binary to terminate weird camera protocols, add auth, and expose a consistent URL to your apps.
Get access
Use StreamDeploy to manage OTA updates, versioned configs, and rollbacks across fleets.
Request accessDockerfile
ARG BASE_IMAGE
FROM ${BASE_IMAGE:-"alpine:3.20"}
RUN apk add --no-cache ca-certificates curl tzdata
WORKDIR /app
# Fetch latest stable MediaMTX at runtime or bake a specific version
ARG MM_VERSION=v1.6.5
RUN curl -L -o mediamtx.tar.gz https://github.com/bluenviron/mediamtx/releases/download/${MM_VERSION}/mediamtx_${MM_VERSION#v}_linux_$(uname -m).tar.gz && \
tar -xzf mediamtx.tar.gz && rm mediamtx.tar.gz && \
mv mediamtx /usr/local/bin/ && chmod +x /usr/local/bin/mediamtx
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
ENV MTX_RTSP_PORT=8554 MTX_RTMP_PORT=1935 MTX_WEBRTC=true \
MTX_AUTH_USER="" MTX_AUTH_PASS=""
EXPOSE 8554 1935 8889 8189
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s \
CMD nc -z localhost 8554
ENTRYPOINT ["/app/entrypoint.sh"]
entrypoint.sh
#!/usr/bin/env sh
set -e
cat > mediamtx.yml <<EOF
rtspAddress: :${MTX_RTSP_PORT}
rtmpAddress: :${MTX_RTMP_PORT}
webrtc: ${MTX_WEBRTC}
paths:
all:
publishUser: "${MTX_AUTH_USER}"
publishPass: "${MTX_AUTH_PASS}"
readUser: "${MTX_AUTH_USER}"
readPass: "${MTX_AUTH_PASS}"
EOF
exec mediamtx mediamtx.yml