Setup Nginx and RTMP to Live Stream
NOTE: Assumes using a Debian-based OS.
First, install nginx and rtmp module
sudo apt-get install libnginx-mod-rtmp nginx
Edit your /etc/nginx/nginx.conf
Below, change yoursite.org
to your site's DNS domain.
Also, change <YOUR-IP-ADDRESS>
to your IP will be streaming to the server from (aka home IP).
load_module modules/ngx_rtmp_module.so;
worker_processes auto;
#rtmp_auto_push on;
events {
worker_connections 1024;
multi_accept on;
}
rtmp {
server {
listen 1935;
listen [::]:1935 ipv6only=on;
chunk_size 4096;
allow publish <YOUR-IP-ADDRESS>;
deny publish all;
application live {
live on;
hls on;
hls_path /video/hls;
record off;
}
}
}
http {
server {
server_name yoursite.org www.yoursite.org;
listen 80;
# Static website
location / {
root /var/www/html;
index index.html;
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
}
root /video;
add_header Cache-Control no-cache;
# To avoid issues with cross-domain HTTP requests (e.g. during development)
add_header Access-Control-Allow-Origin *;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
}
server {
server_name yoursite.org www.yoursite.org;
listen 443 ssl;
listen [::]:443 ipv6only=on;
ssl_certificate /etc/letsencrypt/live/yoursite.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yoursite.org/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Static website
location / {
root /var/www/html;
index index.html;
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
}
root /video;
add_header Cache-Control no-cache;
# To avoid issues with cross-domain HTTP requests (e.g. during development)
add_header Access-Control-Allow-Origin *;
}
}
}
Make sure port 1935 is accessible to with world or at least <YOUR-IP-ADDRESS>
provided. Also be sure the path for the stream is valid where in config is now /video
.
Be sure also to get a new SSL certificate from LetsEncrypt/Certbot and edit the SSL config portion above.
In OBS, set the stream URL to rtmp://server-IP:1935/live
For the stream key, choose what the .m3u8
will be called, like stream
for this example.
Start streaming something in OBS and on a mobile device using a carrier connection open
https://yoursite.org/hls/stream.m3u8
If all is working as expected should see the test stream! You are now streaming without using Cloudflare or another walled garden network.
Follow me on Twitter