feat(deploy): add video quality and TURN configuration

- Add .env.example with documented video quality bitrate settings
- Configure VP8/VP9/H264/AV1 codec bitrates for optimal quality
- Add STUN/TURN server configuration for NAT traversal
- Document required firewall rules for media traffic
- Update branding: watermark, variables, interface config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-02-06 11:36:17 +00:00
parent 68016c30f6
commit 0e9c78c86a
4 changed files with 168 additions and 19 deletions

View File

@ -57,31 +57,33 @@ $unsupportedDesktopBrowserTextFontSize: 1.25rem;
/** /**
* The size of the default watermark. * The size of the default watermark.
* Jeffsi Meet - Larger logo
*/ */
$watermarkWidth: 71px; $watermarkWidth: 140px;
$watermarkHeight: 32px; $watermarkHeight: 40px;
$welcomePageWatermarkWidth: 71px; $welcomePageWatermarkWidth: 140px;
$welcomePageWatermarkHeight: 32px; $welcomePageWatermarkHeight: 40px;
/** /**
* Welcome page variables. * Welcome page variables.
* Jeffsi Meet - Purple gradient theme
*/ */
$welcomePageDescriptionColor: #fff; $welcomePageDescriptionColor: #fff;
$welcomePageFontFamily: inherit; $welcomePageFontFamily: inherit;
$welcomePageBackground: none; $welcomePageBackground: none;
$welcomePageTitleColor: #fff; $welcomePageTitleColor: #fff;
$welcomePageHeaderBackground: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), url('../images/welcome-background.png'); $welcomePageHeaderBackground: linear-gradient(135deg, #0f0a1a 0%, #1e1040 25%, #2d1b4e 50%, #1a1035 75%, #0f0a1a 100%);
$welcomePageHeaderBackgroundPosition: center; $welcomePageHeaderBackgroundPosition: center;
$welcomePageHeaderBackgroundRepeat: none; $welcomePageHeaderBackgroundRepeat: no-repeat;
$welcomePageHeaderBackgroundSize: cover; $welcomePageHeaderBackgroundSize: cover;
$welcomePageHeaderPadding: 1rem; $welcomePageHeaderPadding: 1rem;
$welcomePageHeaderTitleMaxWidth: initial; $welcomePageHeaderTitleMaxWidth: initial;
$welcomePageHeaderTextAlign: center; $welcomePageHeaderTextAlign: center;
$welcomePageButtonBg: #0074E0; $welcomePageButtonBg: #8b5cf6;
$welcomePageButtonHoverBg: #4687ED; $welcomePageButtonHoverBg: #a855f7;
$welcomePageButtonFocusOutline: #00225A; $welcomePageButtonFocusOutline: #6366f1;
$welcomePageHeaderContainerMarginTop: 104px; $welcomePageHeaderContainerMarginTop: 104px;
$welcomePageHeaderContainerDisplay: flex; $welcomePageHeaderContainerDisplay: flex;

141
deploy/.env.example Normal file
View File

@ -0,0 +1,141 @@
# Jeffsi Meet - Environment Configuration Example
# Copy this to .env on the server and update values as needed
# Location on server: /opt/jeffsi-meet/.env
# ==========================================
# Core Configuration
# ==========================================
# Directory where all configuration will be stored
CONFIG=/opt/jeffsi-meet/config
# System time zone
TZ=Europe/Berlin
# Public URL for the web service
PUBLIC_URL=https://meet.jeffemmett.com
# JVB Network Configuration
# IMPORTANT: Set this to your server's public IP
JVB_ADVERTISE_IPS=YOUR_SERVER_PUBLIC_IP
# Authentication
ENABLE_AUTH=0
ENABLE_GUESTS=1
AUTH_TYPE=internal
# Memory limits
JICOFO_MAX_MEMORY=1024m
VIDEOBRIDGE_MAX_MEMORY=3072m
# Container restart policy
RESTART_POLICY=unless-stopped
# Jitsi image version - use stable for production
JITSI_IMAGE_VERSION=stable
# Recording (requires Jibri)
ENABLE_RECORDING=1
# JVB Ports (ensure these are open in firewall)
JVB_PORT=10101
JVB_COLIBRI_PORT=8085
JICOFO_REST_PORT=8889
# ==========================================
# Security Passwords - MUST BE GENERATED
# Run: ./gen-passwords.sh
# ==========================================
JICOFO_AUTH_PASSWORD=GENERATE_SECURE_PASSWORD
JVB_AUTH_USER=jvb
JVB_AUTH_PASSWORD=GENERATE_SECURE_PASSWORD
JIGASI_XMPP_PASSWORD=GENERATE_SECURE_PASSWORD
JIGASI_TRANSCRIBER_PASSWORD=GENERATE_SECURE_PASSWORD
JIBRI_RECORDER_PASSWORD=GENERATE_SECURE_PASSWORD
JIBRI_XMPP_PASSWORD=GENERATE_SECURE_PASSWORD
# ==========================================
# STUN/TURN Configuration (for NAT traversal)
# ==========================================
# Use coturn for TURN relay
TURN_HOST=YOUR_SERVER_PUBLIC_IP
TURN_PORT=3478
TURNS_PORT=5349
TURN_TRANSPORT=udp
STUN_HOST=YOUR_SERVER_PUBLIC_IP
STUN_PORT=3478
# TURN credentials (must match coturn config)
TURN_USERNAME=turnuser
TURN_PASSWORD=YOUR_TURN_SECRET
TURN_CREDENTIALS=YOUR_TURN_SECRET
TURN_TTL=86400
# P2P STUN servers (comma-separated)
P2P_STUN_SERVERS=stun:YOUR_SERVER_PUBLIC_IP:3478,stun:stun.l.google.com:19302
# JVB STUN servers
JVB_STUN_SERVERS=YOUR_SERVER_PUBLIC_IP:3478,stun.l.google.com:19302
# ==========================================
# Video Quality Bitrates (in bps)
# Higher values = better quality but more bandwidth
# ==========================================
# VP8 Bitrates (good compatibility)
VIDEOQUALITY_BITRATE_VP8_LOW=200000
VIDEOQUALITY_BITRATE_VP8_STANDARD=700000
VIDEOQUALITY_BITRATE_VP8_HIGH=2000000
VIDEOQUALITY_BITRATE_VP8_FULL=4000000
VIDEOQUALITY_BITRATE_VP8_ULTRA=6000000
VIDEOQUALITY_BITRATE_VP8_SS_HIGH=3500000
# VP9 Bitrates (best quality/bandwidth ratio - RECOMMENDED)
VIDEOQUALITY_BITRATE_VP9_LOW=150000
VIDEOQUALITY_BITRATE_VP9_STANDARD=500000
VIDEOQUALITY_BITRATE_VP9_HIGH=1500000
VIDEOQUALITY_BITRATE_VP9_FULL=3000000
VIDEOQUALITY_BITRATE_VP9_ULTRA=4500000
VIDEOQUALITY_BITRATE_VP9_SS_HIGH=2500000
# H264 Bitrates (good for mobile)
VIDEOQUALITY_BITRATE_H264_LOW=200000
VIDEOQUALITY_BITRATE_H264_STANDARD=700000
VIDEOQUALITY_BITRATE_H264_HIGH=2000000
VIDEOQUALITY_BITRATE_H264_FULL=4000000
VIDEOQUALITY_BITRATE_H264_ULTRA=6000000
VIDEOQUALITY_BITRATE_H264_SS_HIGH=3500000
# AV1 Bitrates (most efficient, newer codec)
VIDEOQUALITY_BITRATE_AV1_LOW=100000
VIDEOQUALITY_BITRATE_AV1_STANDARD=400000
VIDEOQUALITY_BITRATE_AV1_HIGH=1200000
VIDEOQUALITY_BITRATE_AV1_FULL=2500000
VIDEOQUALITY_BITRATE_AV1_ULTRA=4000000
VIDEOQUALITY_BITRATE_AV1_SS_HIGH=2000000
# Preferred codec (VP9 recommended for quality/bandwidth)
VIDEOQUALITY_PREFERRED_CODEC=VP9
# Resolution settings
RESOLUTION=720
RESOLUTION_MIN=180
RESOLUTION_WIDTH=1280
RESOLUTION_WIDTH_MIN=320
# Simulcast (multiple quality layers for adaptive streaming)
ENABLE_SIMULCAST=true
ENABLE_REMB=true
ENABLE_TCC=true
# ==========================================
# Firewall Rules Required
# ==========================================
# Ensure these ports are open:
# - JVB_PORT/udp (default 10101) - Media traffic
# - 3478/udp,tcp - STUN/TURN
# - 5349/udp,tcp - TURN TLS
# - 49152-49200/udp - TURN relay ports
# - 80/tcp, 443/tcp - Web traffic (if not using reverse proxy)

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 777 B

View File

@ -9,9 +9,9 @@
*/ */
var interfaceConfig = { var interfaceConfig = {
APP_NAME: 'Jitsi Meet', APP_NAME: 'Jeffsi Meet',
AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)', AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(139,92,246,0.6)',
AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)', AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(139,92,246,0.3)',
/** /**
* A UX mode where the last screen share participant is automatically * A UX mode where the last screen share participant is automatically