From 4e9e3f627bef6fbea544957f9b91c05116c79323 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Wed, 11 Feb 2026 22:14:12 -0500 Subject: [PATCH] matrix: setup livekit Needed for element X calls. --- configuration.nix | 1 + flake.nix | 6 +++++ secrets/livekit_keys | Bin 0 -> 84 bytes services/livekit.nix | 53 +++++++++++++++++++++++++++++++++++++++++++ services/matrix.nix | 2 +- 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 secrets/livekit_keys create mode 100644 services/livekit.nix diff --git a/configuration.nix b/configuration.nix index 16b7b19..07a1713 100644 --- a/configuration.nix +++ b/configuration.nix @@ -40,6 +40,7 @@ ./services/matrix.nix ./services/coturn.nix + ./services/livekit.nix ./services/monero.nix ./services/xmrig.nix diff --git a/flake.nix b/flake.nix index 64d1cb8..5d84f04 100644 --- a/flake.nix +++ b/flake.nix @@ -123,6 +123,8 @@ coturn = 3478; coturn_tls = 5349; ntfy = 2586; + livekit = 7880; + lk_jwt = 8081; }; https = { @@ -182,6 +184,10 @@ domain = "ntfy.${https.domain}"; }; + livekit = { + domain = "livekit.${https.domain}"; + }; + syncthing = { dataDir = services_dir + "/syncthing"; signalBackupDir = "/${zpool_ssds}/bak/signal"; diff --git a/secrets/livekit_keys b/secrets/livekit_keys new file mode 100644 index 0000000000000000000000000000000000000000..f3bc827ba90ea1b8a4fd5f81273da7a7da4dcd21 GIT binary patch literal 84 zcmZQ@_Y83kiVO&0P?%PBCe%M_-rp$+1p!Ui){01f} literal 0 HcmV?d00001 diff --git a/services/livekit.nix b/services/livekit.nix new file mode 100644 index 0000000..c1579d7 --- /dev/null +++ b/services/livekit.nix @@ -0,0 +1,53 @@ +{ + service_configs, + ... +}: +let + keyFile = ../secrets/livekit_keys; + + ports = service_configs.ports; +in +{ + services.livekit = { + enable = true; + inherit keyFile; + openFirewall = true; + + settings = { + port = ports.livekit; + bind_addresses = [ "127.0.0.1" ]; + + rtc = { + port_range_start = 50100; + port_range_end = 50200; + use_external_ip = true; + }; + + # Disable LiveKit's built-in TURN; coturn is already running + turn = { + enabled = false; + }; + + logging = { + level = "info"; + }; + }; + }; + + services.lk-jwt-service = { + enable = true; + inherit keyFile; + livekitUrl = "wss://${service_configs.livekit.domain}"; + port = ports.lk_jwt; + }; + + services.caddy.virtualHosts."${service_configs.livekit.domain}".extraConfig = '' + @jwt path /sfu/get /healthz + handle @jwt { + reverse_proxy :${builtins.toString ports.lk_jwt} + } + handle { + reverse_proxy :${builtins.toString ports.livekit} + } + ''; +} diff --git a/services/matrix.nix b/services/matrix.nix index 8f5bb25..fe9b0ea 100644 --- a/services/matrix.nix +++ b/services/matrix.nix @@ -47,7 +47,7 @@ header /.well-known/matrix/* Content-Type application/json header /.well-known/matrix/* Access-Control-Allow-Origin * respond /.well-known/matrix/server `{"m.server": "${service_configs.matrix.domain}:${builtins.toString service_configs.ports.https}"}` - respond /.well-known/matrix/client `{"m.server":{"base_url":"https://${service_configs.matrix.domain}"},"m.homeserver":{"base_url":"https://${service_configs.matrix.domain}"},"org.matrix.msc3575.proxy":{"base_url":"https://${config.services.matrix-continuwuity.settings.global.server_name}"}}` + respond /.well-known/matrix/client `{"m.server":{"base_url":"https://${service_configs.matrix.domain}"},"m.homeserver":{"base_url":"https://${service_configs.matrix.domain}"},"org.matrix.msc3575.proxy":{"base_url":"https://${config.services.matrix-continuwuity.settings.global.server_name}"},"org.matrix.msc4143.rtc_foci":[{"type":"livekit","livekit_service_url":"https://${service_configs.livekit.domain}"}]}` ''; services.caddy.virtualHosts."${service_configs.matrix.domain}".extraConfig = ''