Tuesday, May 18, 2021

How to Proxy Secure WebSockets (WSS) in a Subfolder with Apache mod_proxy_wstunnel

Routing secure WebSocket connections (wss://) originating from a specific URL subfolder (such as /websocket1) to a local backend daemon (running on an internal TCP port like 2085) requires configuring Apache's mod_proxy_wstunnel.

Prerequisites: Enable Apache modules: proxy, proxy_http, proxy_wstunnel, and rewrite.

Apache VirtualHost Configuration

# Enable proxy tunneling for WebSockets
RewriteEngine On

# Detect WebSocket upgrade request headers for /websocket1
RewriteCond %{REQUEST_URI} ^/websocket1 [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/websocket1/(.*)$ ws://127.0.0.1:2085/$1 [P,L]

# Normal HTTP proxy fallback (if needed):
ProxyPass /websocket1 http://127.0.0.1:2085/
ProxyPassReverse /websocket1 http://127.0.0.1:2085/

Reload Apache to apply:

sudo systemctl reload apache2

Tuesday, May 11, 2021

Building a Dedicated Jitsi Meet Video Conferencing Station on Raspberry Pi 4

Using a Raspberry Pi 4 connected directly to an HDMI living room TV with an external USB webcam creates a dedicated, affordable family video-conferencing terminal. However, running WebRTC in standard Chromium on ARM without optimizations often causes CPU throttling, audio noise, and meeting lag.

Optimal Hardware Choices: Raspberry Pi 4 (4GB) • Logitech C920 / C922 / C270 USB Webcam • Micro-HDMI to HDMI audio

Critical Hardware & Audio Points

  • Microphone Input: The Raspberry Pi 4's 3.5mm onboard jack is output only (no microphone input pin). Connecting standard headset microphones requires either an external USB audio dongle or a webcam with integrated noise-cancelling microphones (e.g. Logitech C920).
  • Audio Routing: Configure ALSA/PulseAudio to output conference sound through HDMI to your TV speakers while capturing voice from the USB webcam microphone.

Chromium Performance Optimizations for WebRTC

Launch Chromium in kiosk mode with hardware GPU acceleration flags:

chromium-browser --kiosk --start-fullscreen   --enable-accelerated-video-decode   --use-gl=egl   --ignore-gpu-blocklist   --autoplay-policy=no-user-gesture-required   "https://meet.jit.si/YourPrivateRoom#config.startWithVideoMuted=false"

How Google Antigravity Solved the Mysterious NVIDIA Sleep Reboot on My Dell Inspiron 7567 (Ubuntu Linux)

If you run modern Ubuntu or Linux on a Dell Inspiron 15 Gaming (7567) or a similar 7th-gen Intel laptop paired with an NVIDIA GeForce GTX ...