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 access
Dockerfile
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