Files
mrcharles 777767db54 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
2026-09-05 05:01:23 -05:00

5.4 KiB
Raw Permalink Blame History

NEXT — perf-opt closeout COMPLETE (2026-08-31); #610 open-terminal fleet DONE

2026-09-05 morning — 24x7 RTMP desktop stream, client side DONE (#798)

  • Built + UAT PASS against the LIVE desktop (logs/19-rtmp-uat.out): h264+aac 1920w ~30fps, 187% of the 2-core ukrrs-rt.slice fence, self-heal (kill ffmpeg -> respawn -> stream back) proven. Frames captured + luma-verified. Loopback receiver ukrrs-ultix-rtmp-rx UP (mediamtx 1.20.1, 127.0.0.1:1935 only).
  • HUMAN OWES (one command, installs the systemd service + creds file): cd ~/projects/ultix && ./18-rtmp-stream.sh then watch locally: ffplay rtmp://127.0.0.1:1935/live/desktop
  • Cloudron cutover when ready: paste ingest URL+key into ~/.creds/rtmp-stream.env, systemctl restart ukrrs-rtmp-stream.
  • Limits + tuning record: STREAMING.md (2560w veryfast does NOT fit the 2-core fence until #601; x11grab GetImage caps ~20 delivered fps).

2026-09-05 early AM — post-update-reboot RDP outage FIXED (#611)

  • Two reboot-triggered killers: waitforx RandR race/empty-argv (shim at /usr/lib/x86_64-linux-gnu/xrdp/waitforx, pristine = waitforx.real) and 90xbrlapi foreground hang (hook disabled). Re-apply after xrdp/brltty package upgrades: sudo ./17-fix-rdp-postupdate.sh
  • new_cursors=false live (cursor black box; pairs with #631 core cursors).
  • LESSON: never bounce the xrdp front-end while a session lives — sesman orphans the record and the next login spawns a SECOND KDE session on the shared user bus (dual-plasma conflict). Recovery = kill all session processes, verify zero plasma, reconnect once.
  • Human UAT: desktop confirmed working post-fix; cursor-box verdict pending.

Tonight (2026-08-31 late, crush had the con)

  • Agent-stack relaunchers REMOVED (6-): no screen/crush sessions auto-start on reboot, any account. Backups: removed-agent-stacks/.
  • Open Terminal fleet LIVE (#610): 9 accounts, tailscale-only 100.101.187.119:30000-30008, systemd open-terminal@, keys in /etc/ukrrs/open-terminal/ + ~/.creds/open-terminal.env. Ops note: OPEN-TERMINAL.md. UAT PASSED (9-uat-openwebui.out).
  • 22:00 night flip verified live (see TRACKING decisions).
  • HUMAN OWED: wire production OpenWebUI per OPEN-TERMINAL.md. The openwebui CONTAINER on this box (v0.3.10, :3000) is too old — upgrade to 0.11.x first. Cloudron prod (0.11.1) is fine.
  • Multiqueue bounce DONE + VERIFIED (2026-09-01 morning audit): ens18 Combined 4/4, ens19 2/2; 4-host-netcheck.sh sweep clean (qm config live, pending empty, bounce 22:51->22:53). Full stack healthy post-boot.
  • 2026-09-01: night window now 22:00-07:00 (day-flip timer moved to 07:00).

Final state — nothing owed (perf pass)

  • All guest tuning live and verified (see 16:04-16:15 pass below).
  • Host flags live: ssd=1/discard (ROTA=0), iothread, onboot=1, startup order=10, cpuunits 9000/50, ide2 gone.
  • Net multiqueue: DONE + verified 2026-09-01 (bounce 22:51->22:53; ens18 4/4, ens19 2/2). 5-activate-multiqueue.sh is historical record.
  • 2026-09-01: microvm tooling LIVE (#615: microvm CLI, qemu-microvm engine, per-user tap pools + NAT; firecracker blocked by nested-KVM caps until #601 hardware) + REBUILD.md/docs/state capture landed.
  • Gateway boot-race + live-restore endpoint loss: permanently fixed by ukrrs-gateway-ensure unit (enabled, both lanes).
  • Root cause of the 15:59 no-op: the script copy executed then predates the queues= fix (silent same-value rewrite); current config verified correct.

Verified live after the 16:01 bounce (all read-only from the guest)

  • Disks: ROTA=0, discard 4K/1G on sda+sdb+sdc → ssd=1/discard=on ACTIVE
  • Kernel: bbr+fq, 16M socket buffers, dirty_bytes 1G/256M, min_free 384M, aio 1M, inotify 512/1M, port range 10240-65535, slow_start_after_idle=0, tcp_tw_reuse=1, THP=madvise, DefaultLimitNOFILE 65536
  • Mounts /,/data1,/data2 = noatime; swap sda5 prio -2 unused
  • Units: all ukrrs slices + day/night + psi + builder-prune + thp units installed and enabled; PSI textfile writing (16:06)
  • Docker: daemon.json fully live (live-restore, log caps 20m×3, 172.16/12 pools, metrics :9323); 21 containers up
  • Desktop: sddm autologin worked (Relogin=true), session alive on seat0/tty2, greeter burn GONE
  • Gateway prod was DOWN at boot (bind race + live-restore endpoint loss) → recovered via compose --force-recreate; /status = mode normal, serving

Nothing owed. Optional sanity check any time (crush can ssh now):

~/projects/ultix/4-host-netcheck.sh

Noted, no action taken

  • mopac-demo/mcli fake containers: restart=no, exited at the first bounce, left down (test stubs; your call).
  • Prometheus/harness daemons not deployed here yet (that is OPT-9's wiring).

HARDWARE SLIPPED TO ~OCT 2026 (ruling 2026-08-31)

  • PRESUME 8 vCPU / 48G on this VM until the #601 window: interim fences (accounts 3G/4.5G) and the daynight interim values ARE the operating config; the commented post-upgrade block stays dormant.
  • Gateway cpuset hard reservation (16-17) waits for the window → the compose cgroup_parent wiring is THE starvation fix meanwhile (ticketed).
  • q35 / 20 vCPU / 128G / GPUs / USB3 reseat / NFS-outage-for--02 all move to the same October window (#601 → version october-2026-window, due 10-31; #606).
  • Fri 2026-09-04 = #609: troubleshooting-only outage (USB SDR reseat + zero-cost socket/PSU/BIOS checks). Host down ⇒ this VM down, auto-starts via onboot=1; gateway auto-recovers (validated 2026-08-31).