24x7 RTMP desktop stream, client side + UAT PASS (#798)

Whole-screen KDE capture -> x264 -> RTMP, fenced to the rt slice.
Loopback mediamtx receiver; Cloudron cutover = one creds edit.
Detail: https://projects.knownelement.com/issues/798#note-4519

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
2026-09-05 05:01:23 -05:00
parent f4e36ec647
commit 777767db54
15 changed files with 503 additions and 5 deletions
+16 -3
View File
@@ -4,7 +4,7 @@
# RUN=1 required to mutate anything (default: plan only).
# daemonjson and desktop additionally require CONFIRM=1 (one-time disruption).
# Steps: sysctl modules thp slices psi prune nofile noatime daemonjson desktop
# daynight all
# daynight rtmp all
set -euo pipefail
RUN=${RUN:-0}
CONFIRM=${CONFIRM:-0}
@@ -116,16 +116,29 @@ step_daynight() {
systemctl enable --now ukrrs-nightprofile.timer ukrrs-dayprofile.timer
say "night profile flips at 22:00, day at 07:00; test: ukrrs-daynight.sh night"
}
step_rtmp() {
# 24x7 desktop RTMP stream (#798). Creds stay in ~/.creds/rtmp-stream.env
# (created by 18-rtmp-stream.sh if missing; that script is the full installer).
gate "install 24x7 desktop RTMP stream (#798)" || return 0
inst "$here/ukrrs-rtmp-stream.sh" /usr/local/sbin/ukrrs-rtmp-stream.sh 0755
mkdir -p /etc/ukrrs
[ -f /etc/ukrrs/rtmp-stream.env ] || \
inst "$here/etc-ukrrs-rtmp-stream.env" /etc/ukrrs/rtmp-stream.env 0644
inst "$here/systemd/ukrrs-rtmp-stream.service" /etc/systemd/system/ukrrs-rtmp-stream.service 0644
systemctl daemon-reload
systemctl enable --now ukrrs-rtmp-stream.service
say "streamer live (Slice=ukrrs-rt.slice); see STREAMING.md; receiver: rtmp/ compose"
}
step_all() {
step_sysctl; step_modules; step_thp; step_slices; step_psi; step_prune
step_nofile; step_noatime; step_daynight
step_nofile; step_noatime; step_daynight; step_rtmp
if [ "$CONFIRM" = 1 ]; then step_daemonjson; step_desktop
else say "skipped daemonjson + desktop (need CONFIRM=1)"; fi
}
step=${1:-}
case "$step" in
sysctl|modules|thp|slices|psi|prune|nofile|noatime|daemonjson|desktop|daynight|all)
sysctl|modules|thp|slices|psi|prune|nofile|noatime|daemonjson|desktop|daynight|rtmp|all)
"step_$step" ;;
*) die "unknown step: $step" ;;
esac