This docker image provides an easy way to run an custom instance of Nginx with the RTMP module enabled.
- All latest features that Nginx provides
- All latest features that the RTMP module provides
Use with compose.yml:
services: nginx-service: container_name: 'nginx-service' image: ghcr.io/mqxx/nginx-rtmp:latest ports: - '80:80' # HTTP - '443:443' # HTTPS - '1935:1935' # RTMP volumes: - './data/nginx:/etc/nginx' - './data/stream/hls:/tmp/stream/hls' restart: unless-stoppednginx.conf config:
user nginx; # Optional worker_processes auto; # Optional error_log /var/log/nginx/error.log warn; # Optional pid /var/run/nginx.pid; # Optional events { worker_connections 1024; } rtmp_auto_push on; rtmp { server { listen 1935; listen [::]:1935 ipv6only=on; application live { # ^ Needs to match the path for your RTMP stream URL specified below live on; record off; hls on; hls_path /tmp/stream/hls; # Path specified in compose.yml hls_playlist_length 1s; hls_fragment 500ms; hls_fragment_naming system; hls_fragment_slicing aligned; hls_cleanup on; hls_nested on; hls_continuous off; hls_sync 100ms; } } } http { include mime.types; # <-- get from https://github.com/nginx/nginx/blob/master/conf/mime.types default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /tmp/stream/hls; # Path specified in compose.yml add_header Cache-Control no-cache; } # Optional: Monitoring location /status { stub_status; allow all; } } }Provide a stream from a source (ex. GoPro RTMP Streaming) to this URL, replace <streamkey> with a unique identifier:
rtmp://localhost:1935/live/<streamkey> Access the stream from a browser, replace <streamkey> with the unique identifier that matches the stream provider:
http://localhost:80/hls/<streamkey>/index.m3u8