From ec3782991d013f5c530b8c6b89b431d6898dbf45 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 22 May 2026 03:21:40 +0000
Subject: [PATCH 1/4] Initial plan
From a350d4e2f7c2d099cbb889d38111b5c1ce15dab1 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 22 May 2026 03:23:10 +0000
Subject: [PATCH 2/4] Fix LiveKit rtc.udp_port: use integer 7882 instead of
string range, update firewall rules
Agent-Logs-Url: https://github.com/naturallaw777/sovran-systems/sessions/f531f757-8ab7-4742-9c75-8d1e57d73380
Co-authored-by: naturallaw777 <99053422+naturallaw777@users.noreply.github.com>
---
app/sovran_systemsos_web/server.py | 4 ++--
modules/element-calling.nix | 7 +++----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py
index 1a686a6..8b1d4a6 100644
--- a/app/sovran_systemsos_web/server.py
+++ b/app/sovran_systemsos_web/server.py
@@ -204,7 +204,7 @@ FEATURE_REGISTRY = [
{"port": "80", "protocol": "TCP", "description": "HTTP (redirect to HTTPS)"},
{"port": "443", "protocol": "TCP", "description": "HTTPS (domain)"},
{"port": "7881", "protocol": "TCP", "description": "LiveKit WebRTC signalling"},
- {"port": "7882-7894", "protocol": "UDP", "description": "LiveKit media streams"},
+ {"port": "7882", "protocol": "UDP", "description": "LiveKit media (UDP mux)"},
{"port": "5349", "protocol": "TCP", "description": "TURN over TLS"},
{"port": "3478", "protocol": "UDP", "description": "TURN (STUN/relay)"},
{"port": "30000-40000", "protocol": "TCP/UDP", "description": "TURN relay (WebRTC)"},
@@ -295,7 +295,7 @@ _PORTS_MATRIX_FEDERATION = [
]
_PORTS_ELEMENT_CALLING = [
{"port": "7881", "protocol": "TCP", "description": "LiveKit WebRTC signalling"},
- {"port": "7882-7894", "protocol": "UDP", "description": "LiveKit media streams"},
+ {"port": "7882", "protocol": "UDP", "description": "LiveKit media (UDP mux)"},
{"port": "5349", "protocol": "TCP", "description": "TURN over TLS"},
{"port": "3478", "protocol": "UDP", "description": "TURN (STUN/relay)"},
{"port": "30000-40000", "protocol": "TCP/UDP", "description": "TURN relay (WebRTC)"},
diff --git a/modules/element-calling.nix b/modules/element-calling.nix
index 1f16789..7f8674b 100755
--- a/modules/element-calling.nix
+++ b/modules/element-calling.nix
@@ -130,7 +130,7 @@ EOF
keyFile = livekitKeyFile;
settings = {
rtc.use_external_ip = true;
- rtc.udp_port = "7882-7894";
+ rtc.udp_port = 7882;
room.auto_create = false;
turn = {
enabled = true;
@@ -141,10 +141,9 @@ EOF
};
networking.firewall.allowedTCPPorts = [ 5349 7881 ];
- networking.firewall.allowedUDPPorts = [ 3478 ];
+ networking.firewall.allowedUDPPorts = [ 3478 7882 ];
networking.firewall.allowedUDPPortRanges = [
- { from = 7882; to = 7894; }
- { from = 30000; to = 40000;}
+ { from = 30000; to = 40000; }
];
networking.firewall.allowedTCPPortRanges = [
{ from = 30000; to = 40000; }
From 24098a209add3ebbb4d618d86f942b173511718c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 22 May 2026 03:34:50 +0000
Subject: [PATCH 3/4] Initial plan
From b8e7b2b4cc60e8844f937a5d29a65bb37f6b7895 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 22 May 2026 03:37:52 +0000
Subject: [PATCH 4/4] fix: update element calling onboarding UDP mux port text
Agent-Logs-Url: https://github.com/naturallaw777/sovran-systems/sessions/d45e1a45-fc4e-4bd5-adfd-c798c0ff3987
Co-authored-by: naturallaw777 <99053422+naturallaw777@users.noreply.github.com>
---
app/sovran_systemsos_web/server.py | 2 +-
app/sovran_systemsos_web/static/onboarding.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py
index 8b1d4a6..b82820b 100644
--- a/app/sovran_systemsos_web/server.py
+++ b/app/sovran_systemsos_web/server.py
@@ -894,7 +894,7 @@ def _get_firewall_allowed_ports() -> dict[str, set[int]]:
def _port_range_to_ints(port_str: str) -> list[int]:
- """Convert a port string like ``"443"``, ``"7882-7894"`` to a list of ints."""
+ """Convert a port string like ``"443"``, ``"30000-40000"`` to a list of ints."""
port_str = port_str.strip()
if re.match(r'^\d+$', port_str):
return [int(port_str)]
diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js
index b6e0e7c..2b0138e 100644
--- a/app/sovran_systemsos_web/static/onboarding.js
+++ b/app/sovran_systemsos_web/static/onboarding.js
@@ -557,7 +557,7 @@ async function loadStep4() {
html += ' ';
html += 'Port Protocol Forward to Purpose