95 lines
3.1 KiB
Nix
95 lines
3.1 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
let
|
|
# external
|
|
rtp-port = 8083;
|
|
webrtc-peer-lower-port = 20000;
|
|
webrtc-peer-upper-port = 20100;
|
|
domain = "live.neet.space";
|
|
|
|
# internal
|
|
ingest-port = 8084;
|
|
web-port = 8085;
|
|
webrtc-port = 8086;
|
|
toStr = builtins.toString;
|
|
in
|
|
{
|
|
networking.firewall.allowedUDPPorts = [ rtp-port ];
|
|
networking.firewall.allowedTCPPortRanges = [ {
|
|
from = webrtc-peer-lower-port;
|
|
to = webrtc-peer-upper-port;
|
|
} ];
|
|
networking.firewall.allowedUDPPortRanges = [ {
|
|
from = webrtc-peer-lower-port;
|
|
to = webrtc-peer-upper-port;
|
|
} ];
|
|
|
|
virtualisation.docker.enable = true;
|
|
|
|
services.nginx.virtualHosts.${domain} = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations = {
|
|
"/" = {
|
|
proxyPass = "http://localhost:${toStr web-port}";
|
|
};
|
|
"websocket" = {
|
|
proxyPass = "http://localhost:${toStr webrtc-port}/websocket";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
virtualisation.oci-containers = {
|
|
backend = "docker";
|
|
containers = {
|
|
"lightspeed-ingest" = {
|
|
workdir = "/var/lib/lightspeed-ingest";
|
|
image = "projectlightspeed/ingest";
|
|
ports = [
|
|
"${toStr ingest-port}:8084"
|
|
];
|
|
# imageFile = pkgs.dockerTools.pullImage {
|
|
# imageName = "projectlightspeed/ingest";
|
|
# finalImageTag = "version-0.1.4";
|
|
# imageDigest = "sha256:9fc51833b7c27a76d26e40f092b9cec1ac1c4bfebe452e94ad3269f1f73ff2fc";
|
|
# sha256 = "19kxl02x0a3i6hlnsfcm49hl6qxnq2f3hfmyv1v8qdaz58f35kd5";
|
|
# };
|
|
};
|
|
"lightspeed-react" = {
|
|
workdir = "/var/lib/lightspeed-react";
|
|
image = "projectlightspeed/react";
|
|
ports = [
|
|
"${toStr web-port}:80"
|
|
];
|
|
# imageFile = pkgs.dockerTools.pullImage {
|
|
# imageName = "projectlightspeed/react";
|
|
# finalImageTag = "version-0.1.3";
|
|
# imageDigest = "sha256:b7c58425f1593f7b4304726b57aa399b6e216e55af9c0962c5c19333fae638b6";
|
|
# sha256 = "0d2jh7mr20h7dxgsp7ml7cw2qd4m8ja9rj75dpy59zyb6v0bn7js";
|
|
# };
|
|
};
|
|
"lightspeed-webrtc" = {
|
|
workdir = "/var/lib/lightspeed-webrtc";
|
|
image = "projectlightspeed/webrtc";
|
|
ports = [
|
|
"${toStr webrtc-port}:8080"
|
|
"${toStr rtp-port}:65535/udp"
|
|
"${toStr webrtc-peer-lower-port}-${toStr webrtc-peer-upper-port}:${toStr webrtc-peer-lower-port}-${toStr webrtc-peer-upper-port}/tcp"
|
|
"${toStr webrtc-peer-lower-port}-${toStr webrtc-peer-upper-port}:${toStr webrtc-peer-lower-port}-${toStr webrtc-peer-upper-port}/udp"
|
|
];
|
|
cmd = [
|
|
"lightspeed-webrtc" "--addr=0.0.0.0" "--ip=${domain}"
|
|
"--ports=${toStr webrtc-peer-lower-port}-${toStr webrtc-peer-upper-port}" "run"
|
|
];
|
|
# imageFile = pkgs.dockerTools.pullImage {
|
|
# imageName = "projectlightspeed/webrtc";
|
|
# finalImageTag = "version-0.1.2";
|
|
# imageDigest = "sha256:ddf8b3dd294485529ec11d1234a3fc38e365a53c4738998c6bc2c6930be45ecf";
|
|
# sha256 = "1bdy4ak99fjdphj5bsk8rp13xxmbqdhfyfab14drbyffivg9ad2i";
|
|
# };
|
|
};
|
|
};
|
|
};
|
|
}
|