feat: point the fleet at wss LiveKit room uwh-telhai

Publish and subscribe over wss://livekit.uni-wh.de:7800 and refuse
cleartext ws://. Conference room is uwh-telhai. Includes the uncommitted
encoded H.264 publish path, Rally hairpin, and KMS wall overlay.
This commit is contained in:
root
2026-10-11 00:48:50 +00:00
parent ef9573c294
commit 95bb7c50ee
89 changed files with 9883 additions and 243 deletions
+10
View File
@@ -0,0 +1,10 @@
# Logitech Rally / Rally Bar as the speaker camera (not a cam-NN C920 slot).
# Product ids: Rally Camera 0881, Rally Bar Huddle 087c, Rally Bar 089b,
# Rally Bar Mini 08d3. Install when the device is on site:
# cp deploy/99-rally-pin.rules /etc/udev/rules.d/
# udevadm control --reload-rules && udevadm trigger
#
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0881", ATTR{index}=="0", SYMLINK+="rally"
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="087c", ATTR{index}=="0", SYMLINK+="rally"
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="089b", ATTR{index}=="0", SYMLINK+="rally"
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="08d3", ATTR{index}=="0", SYMLINK+="rally"
+2 -4
View File
@@ -1,11 +1,9 @@
[Unit]
Description=Publish C920 cameras (speechbrain audio) to LiveKit
Documentation=file:///home/fdenkena/livekit-cameras/README.md
After=network-online.target sound.target livekit-server.service
After=network-online.target sound.target
Wants=network-online.target
# Wants, not Requires: local livekit-server is a test stand-in.
# Point LIVEKIT_URL at a remote server later and you can disable this unit.
Wants=livekit-server.service
# Local livekit-server is disabled; publishers use LIVEKIT_URL in .env.
[Service]
Type=simple
+5 -3
View File
@@ -1,8 +1,10 @@
[Unit]
Description=Drive 3 DRM displays with LiveKit camera output (GStreamer kmssink)
Documentation=file:///home/fdenkena/livekit-cameras/README.md
After=network-online.target livekit-server.service livekit-cameras.service
Wants=network-online.target livekit-cameras.service
After=network-online.target
Wants=network-online.target
# Do not After=/Wants= livekit-cameras: the wall must stay up when cameras
# are missing and when the SFU is down (on-screen error, then reconnect).
[Service]
Type=simple
@@ -10,7 +12,7 @@ WorkingDirectory=/home/fdenkena/livekit-cameras
EnvironmentFile=-/home/fdenkena/livekit-cameras/.env
Environment=PYTHONUNBUFFERED=1
# Exclusive KMS access — no X/Wayland on these connectors.
ExecStartPre=/home/fdenkena/livekit-cameras/deploy/wait-for-livekit.sh
# Start kmssink immediately; run_displays.py shows LiveKit errors on the wall.
ExecStart=/home/fdenkena/livekit-cameras/.venv/bin/python /home/fdenkena/livekit-cameras/run_displays.py
ExecStop=/bin/kill -TERM $MAINPID
Restart=always
+4 -1
View File
@@ -2,6 +2,9 @@
# Wait until LIVEKIT_URL (from .env) accepts TCP. Used so publishers do not
# race the local test livekit-server on boot. When LIVEKIT_URL points at a
# remote host this waits on that host instead.
#
# bash /dev/tcp to an unreachable host can hang until the kernel SYN timeout
# (longer than systemd TimeoutStartSec). Cap each probe at 1s.
set -u
ENV_FILE=/home/fdenkena/livekit-cameras/.env
if [ -f "$ENV_FILE" ]; then
@@ -29,7 +32,7 @@ if [ "$host" = "localhost" ]; then
fi
echo "wait-for-livekit: $host:$port"
for _ in $(seq 1 30); do
if (echo >/dev/tcp/"$host"/"$port") 2>/dev/null; then
if timeout 1 bash -c "echo >/dev/tcp/${host}/${port}" 2>/dev/null; then
echo "wait-for-livekit: ready"
exit 0
fi