diff options
Diffstat (limited to 'lass/2configs/tv.nix')
-rw-r--r-- | lass/2configs/tv.nix | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/lass/2configs/tv.nix b/lass/2configs/tv.nix deleted file mode 100644 index d49ed6125..000000000 --- a/lass/2configs/tv.nix +++ /dev/null @@ -1,194 +0,0 @@ -{ config, pkgs, ... }: with import <stockholm/lib>; let - -nginxCfg = pkgs.writeText "nginx.conf" '' - daemon off; - pid /var/lib/rtmp/nginx.pid; - events { - use epoll; - worker_connections 128; - } - error_log stderr info; - - http { - client_body_temp_path /var/lib/rtmp/nginx_cache_client_body; - proxy_temp_path /var/lib/rtmp/nginx_cache_proxy; - fastcgi_temp_path /var/lib/rtmp/nginx_cache_fastcgi; - uwsgi_temp_path /var/lib/rtmp/nginx_cache_uwsgi; - scgi_temp_path /var/lib/rtmp/nginx_cache_scgi; - - server { - listen 8080; - root /var/lib/rtmp; - access_log stderr; - error_log stderr; - - # This URL provides RTMP statistics in XML - location /stat { - rtmp_stat all; - } - } - } - - rtmp { - server { - access_log stderr; - listen 1935; - ping 30s; - notify_method get; - - application stream { - live on; - - hls on; - hls_path /var/lib/rtmp/tmp/hls; - hls_fragment 1; - hls_playlist_length 10; - - dash on; - dash_path /var/lib/rtmp/tmp/dash; - } - } - } -''; - -in { - - services.nginx = { - enable = true; - virtualHosts."streaming.lassul.us" = { - enableACME = true; - addSSL = true; - locations."/hls".extraConfig = '' - # Serve HLS fragments - types { - application/vnd.apple.mpegurl m3u8; - video/mp2t ts; - } - root /var/lib/rtmp/tmp; - - # Allow CORS preflight requests - if ($request_method = 'OPTIONS') { - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Max-Age' 1728000; - add_header 'Content-Type' 'text/plain charset=UTF-8'; - add_header 'Content-Length' 0; - return 204; - } - - if ($request_method != 'OPTIONS') { - add_header Cache-Control no-cache; - - # CORS setup - add_header 'Access-Control-Allow-Origin' '*' always; - add_header 'Access-Control-Expose-Headers' 'Content-Length'; - } - ''; - locations."/dash".extraConfig = '' - # Serve DASH fragments - types { - application/dash+xml mpd; - video/mp4 mp4; - } - root /var/lib/rtmp/tmp; - - # Allow CORS preflight requests - if ($request_method = 'OPTIONS') { - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Max-Age' 1728000; - add_header 'Content-Type' 'text/plain charset=UTF-8'; - add_header 'Content-Length' 0; - return 204; - } - if ($request_method != 'OPTIONS') { - add_header Cache-Control no-cache; - - # CORS setup - add_header 'Access-Control-Allow-Origin' '*' always; - add_header 'Access-Control-Expose-Headers' 'Content-Length'; - } - ''; - locations."= /dash.all.min.js".extraConfig = '' - default_type "text/javascript"; - alias ${pkgs.fetchurl { - url = "http://cdn.dashjs.org/v3.2.0/dash.all.min.js"; - sha256 = "16f0b40gdqsnwqi01s5sz9f1q86dwzscgc3m701jd1sczygi481c"; - }}; - ''; - locations."= /player".extraConfig = '' - default_type "text/html"; - alias ${pkgs.writeText "player.html" '' - <!DOCTYPE html> - <html lang="en"> - <head> - <meta charset="utf-8"> - <title>lassulus livestream</title> - </head> - <body> - <div> - <video id="player" controls></video> - </video> - </div> - <script src="/dash.all.min.js"></script> - <script> - (function(){ - var url = "/dash/nixos.mpd"; - var player = dashjs.MediaPlayer().create(); - player.initialize(document.querySelector("#player"), url, true); - })(); - </script> - </body> - </html> - ''}; - ''; - locations."/records".extraConfig = '' - autoindex on; - root /var/lib/rtmp; - ''; - }; - }; - - fileSystems."/var/lib/rtmp/tmp" = { - device = "tmpfs"; - fsType = "tmpfs"; - options = [ "nosuid" "nodev" "noatime" ]; - }; - - users.users.rtmp = { - home = "/var/lib/rtmp"; - uid = genid_uint31 "rtmp"; - isNormalUser = true; - createHome = true; - openssh.authorizedKeys.keys = with config.krebs.users; [ - mic92.pubkey - palo.pubkey - ]; - }; - - systemd.services.nginx-rtmp = { - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - restartIfChanged = true; - script = '' - ${pkgs.nginx.override { - modules = [ - pkgs.nginxModules.rtmp - ]; - }}/bin/nginx -c ${nginxCfg} -p /var/lib/rtmp - ''; - serviceConfig = { - ExecStartPre = pkgs.writers.writeDash "setup-rtmp" '' - mkdir -p /var/lib/rtmp/tmp/hls - mkdir -p /var/lib/rtmp/tmp/dash - chown rtmp:users /var/lib/rtmp/tmp/hls - chown rtmp:users /var/lib/rtmp/tmp/dash - chmod 755 /var/lib/rtmp/tmp/hls - chmod 755 /var/lib/rtmp/tmp/dash - ''; - User = "rtmp"; - }; - }; - - krebs.iptables.tables.filter.INPUT.rules = [ - { predicate = "-p tcp --dport 1935"; target = "ACCEPT"; } - ]; -} |