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:
parent
68016c30f6
commit
0e9c78c86a
|
|
@ -57,31 +57,33 @@ $unsupportedDesktopBrowserTextFontSize: 1.25rem;
|
|||
|
||||
/**
|
||||
* The size of the default watermark.
|
||||
* Jeffsi Meet - Larger logo
|
||||
*/
|
||||
$watermarkWidth: 71px;
|
||||
$watermarkHeight: 32px;
|
||||
$watermarkWidth: 140px;
|
||||
$watermarkHeight: 40px;
|
||||
|
||||
$welcomePageWatermarkWidth: 71px;
|
||||
$welcomePageWatermarkHeight: 32px;
|
||||
$welcomePageWatermarkWidth: 140px;
|
||||
$welcomePageWatermarkHeight: 40px;
|
||||
|
||||
/**
|
||||
* Welcome page variables.
|
||||
* Jeffsi Meet - Purple gradient theme
|
||||
*/
|
||||
$welcomePageDescriptionColor: #fff;
|
||||
$welcomePageFontFamily: inherit;
|
||||
$welcomePageBackground: none;
|
||||
$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;
|
||||
$welcomePageHeaderBackgroundRepeat: none;
|
||||
$welcomePageHeaderBackgroundRepeat: no-repeat;
|
||||
$welcomePageHeaderBackgroundSize: cover;
|
||||
$welcomePageHeaderPadding: 1rem;
|
||||
$welcomePageHeaderTitleMaxWidth: initial;
|
||||
$welcomePageHeaderTextAlign: center;
|
||||
$welcomePageButtonBg: #0074E0;
|
||||
$welcomePageButtonHoverBg: #4687ED;
|
||||
$welcomePageButtonFocusOutline: #00225A;
|
||||
$welcomePageButtonBg: #8b5cf6;
|
||||
$welcomePageButtonHoverBg: #a855f7;
|
||||
$welcomePageButtonFocusOutline: #6366f1;
|
||||
|
||||
$welcomePageHeaderContainerMarginTop: 104px;
|
||||
$welcomePageHeaderContainerDisplay: flex;
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -9,9 +9,9 @@
|
|||
*/
|
||||
|
||||
var interfaceConfig = {
|
||||
APP_NAME: 'Jitsi Meet',
|
||||
AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)',
|
||||
AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)',
|
||||
APP_NAME: 'Jeffsi Meet',
|
||||
AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(139,92,246,0.6)',
|
||||
AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(139,92,246,0.3)',
|
||||
|
||||
/**
|
||||
* A UX mode where the last screen share participant is automatically
|
||||
|
|
|
|||
Loading…
Reference in New Issue