From 98119f58cccee6b0210ceeadb11b0573665f320c Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sat, 7 Feb 2026 14:14:31 +0100 Subject: [PATCH] Add deployment scaffolding (Dockerfile, docker-compose, nginx) Co-Authored-By: Claude Opus 4.6 --- branding/images/jeffsi-logo.svg | 29 +- branding/interface_config.js | 71 +-- docker-compose.jeffsi.yml | 65 +- docker-compose.yml | 1015 +++++++++++++++---------------- 4 files changed, 569 insertions(+), 611 deletions(-) diff --git a/branding/images/jeffsi-logo.svg b/branding/images/jeffsi-logo.svg index 5727042..2855b1a 100644 --- a/branding/images/jeffsi-logo.svg +++ b/branding/images/jeffsi-logo.svg @@ -1,19 +1,34 @@ - + - + + + + + + + + + - - - + + + + + - - Jeffsi Meet + + Jeffsi Meet + + + + + Free Video Conferencing diff --git a/branding/interface_config.js b/branding/interface_config.js index d6c1990..23b1620 100644 --- a/branding/interface_config.js +++ b/branding/interface_config.js @@ -1,68 +1,33 @@ /* eslint-disable no-unused-vars, no-var, max-len */ -/* Jeffsi Meet - Branded interface configuration */ - var interfaceConfig = { - APP_NAME: 'Jeffsi Meet', - AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)', - AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)', - AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only', - - // Branding - Remove all Jitsi references - BRAND_WATERMARK_LINK: 'https://jeffemmett.com', - JITSI_WATERMARK_LINK: 'https://jeffemmett.com', + APP_NAME: "Jeffsi Meet", + PROVIDER_NAME: "Jeff Emmett", + SHOW_JITSI_WATERMARK: false, SHOW_BRAND_WATERMARK: false, SHOW_POWERED_BY: false, SHOW_PROMOTIONAL_CLOSE_PAGE: false, SHOW_CHROME_EXTENSION_BANNER: false, - - // Provider info - PROVIDER_NAME: 'Jeff Emmett', - SUPPORT_URL: 'https://jeffemmett.com', - - // Welcome page (disabled for canvas embed use) + DISPLAY_WELCOME_FOOTER: false, DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false, DISPLAY_WELCOME_PAGE_CONTENT: false, - DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false, - GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false, - - // Default appearance - DEFAULT_BACKGROUND: '#1a1a2e', - DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/custom/jeffsi-logo.svg', - - // UI preferences for embedded use - CLOSE_PAGE_GUEST_HINT: false, - DISABLE_DOMINANT_SPEAKER_INDICATOR: false, - DISABLE_JOIN_LEAVE_NOTIFICATIONS: false, - DISABLE_PRESENCE_STATUS: false, - DISABLE_TRANSCRIPTION_SUBTITLES: false, - DISABLE_VIDEO_BACKGROUND: false, - - // Features - ENABLE_DIAL_OUT: false, + GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, + + DEFAULT_BACKGROUND: "#0f0a1a", + DEFAULT_LOGO_URL: "images/custom/jeffsi-logo.svg", + DEFAULT_WELCOME_PAGE_LOGO_URL: "images/custom/jeffsi-logo.svg", + HIDE_INVITE_MORE_HEADER: true, - LANG_DETECTION: true, - LOCAL_THUMBNAIL_RATIO: 16 / 9, - MAXIMUM_ZOOMING_COEFFICIENT: 1.3, MOBILE_APP_PROMO: false, - - // Browsers - OPTIMAL_BROWSERS: ['chrome', 'chromium', 'firefox', 'electron', 'safari', 'webkit'], - UNSUPPORTED_BROWSERS: [], - - // UI layout - POLICY_LOGO: null, RECENT_LIST_ENABLED: false, - REMOTE_THUMBNAIL_RATIO: 1, - SETTINGS_SECTIONS: ['devices', 'language', 'moderator', 'profile', 'sounds', 'more'], - VERTICAL_FILMSTRIP: true, - VIDEO_LAYOUT_FIT: 'both', - VIDEO_QUALITY_LABEL_DISABLED: false, - FILM_STRIP_MAX_HEIGHT: 120, - - // Allow trailing comma - makeJsonParserHappy: 'even if last key had a trailing comma' + + TOOLBAR_BUTTONS: [ + "camera", "chat", "desktop", "filmstrip", "fullscreen", + "hangup", "microphone", "participants-pane", "raisehand", + "settings", "tileview", "videoquality", "sharedmusic", "sharedvideo" + ], + + makeJsonParserHappy: "trailing comma" }; - /* eslint-enable no-unused-vars, no-var, max-len */ diff --git a/docker-compose.jeffsi.yml b/docker-compose.jeffsi.yml index d11224a..35ee98b 100644 --- a/docker-compose.jeffsi.yml +++ b/docker-compose.jeffsi.yml @@ -1,57 +1,54 @@ # Jeffsi Meet - Docker Compose for Traefik + Cloudflare Tunnel -# Based on docker-jitsi-meet, customized for Netcup RS 8000 deployment - services: - # Frontend - Web interface web: - image: jitsi/web:${JITSI_IMAGE_VERSION:-stable} + image: jeffsi-meet-web:latest restart: ${RESTART_POLICY:-unless-stopped} - # No HTTP/HTTPS ports - Traefik handles incoming traffic volumes: - ${CONFIG}/web:/config:Z - ${CONFIG}/web/crontabs:/var/spool/cron/crontabs:Z - ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z - # Custom branding - ./branding/images:/usr/share/jitsi-meet/images/custom:ro - ./branding/interface_config.js:/defaults/interface_config.js:ro + - ./branding/title.html:/usr/share/jitsi-meet/title.html:ro + - ./branding/head.html:/usr/share/jitsi-meet/head.html:ro + - ./branding/body.html:/usr/share/jitsi-meet/body.html:ro + - ./branding/css:/usr/share/jitsi-meet/css/custom:ro + - ./branding/welcome:/usr/share/jitsi-meet/welcome:ro + - ./nginx-custom:/config/nginx-custom:ro labels: - # Traefik routing - web entrypoint (Cloudflare tunnel sends to :80) - "traefik.enable=true" - "traefik.http.routers.jeffsi-meet.rule=Host(`meet.jeffemmett.com`)" - "traefik.http.routers.jeffsi-meet.entrypoints=web" - "traefik.http.services.jeffsi-meet.loadbalancer.server.port=80" - # BOSH/WebSocket support - tell Jitsi the original request was HTTPS - - "traefik.http.middlewares.jeffsi-meet-headers.headers.customrequestheaders.X-Forwarded-Proto=https" - - "traefik.http.routers.jeffsi-meet.middlewares=jeffsi-meet-headers" + - "traefik.http.middlewares.jeffsi-headers.headers.customrequestheaders.X-Forwarded-Proto=https" + - "traefik.http.middlewares.jeffsi-nocache.headers.customresponseheaders.Cache-Control=no-store, must-revalidate" + - "traefik.http.middlewares.jeffsi-frame.headers.customFrameOptionsValue=ALLOWALL" + - "traefik.http.middlewares.jeffsi-permissions.headers.customresponseheaders.Permissions-Policy=camera=*, microphone=*, display-capture=*, fullscreen=*, autoplay=*" + - "traefik.http.middlewares.jeffsi-csp.headers.customresponseheaders.Content-Security-Policy=frame-ancestors *" + - "traefik.http.routers.jeffsi-meet.middlewares=jeffsi-headers,jeffsi-nocache,jeffsi-frame,jeffsi-permissions,jeffsi-csp" environment: - # Basic - PUBLIC_URL=https://meet.jeffemmett.com - TZ=${TZ:-UTC} - # Features - ENABLE_COLIBRI_WEBSOCKET=1 - ENABLE_XMPP_WEBSOCKET=1 - ENABLE_PREJOIN_PAGE=true - - ENABLE_WELCOME_PAGE=false + - START_WITH_AUDIO_MUTED=false + - START_WITH_VIDEO_MUTED=false + - ENABLE_WELCOME_PAGE=true - ENABLE_CLOSE_PAGE=true - ENABLE_P2P=true - ENABLE_SIMULCAST=true - ENABLE_BREAKOUT_ROOMS=true - # Disable HTTPS in container (Traefik handles TLS) - DISABLE_HTTPS=1 - # Auth - ENABLE_AUTH - ENABLE_GUESTS - # Domain config - XMPP_DOMAIN=meet.jitsi - XMPP_AUTH_DOMAIN=auth.meet.jitsi - XMPP_BOSH_URL_BASE=http://prosody:5280 - XMPP_GUEST_DOMAIN=guest.meet.jitsi - XMPP_MUC_DOMAIN=muc.meet.jitsi - XMPP_RECORDER_DOMAIN=recorder.meet.jitsi - # Recording - ENABLE_RECORDING - # Codec preferences - - CODEC_ORDER_JVB=VP9,VP8,H264 networks: - meet.jitsi - traefik-public @@ -59,31 +56,27 @@ services: - prosody - jvb - # XMPP server prosody: image: jitsi/prosody:${JITSI_IMAGE_VERSION:-stable} restart: ${RESTART_POLICY:-unless-stopped} expose: - - '5222' - - '5269' - - '5347' - - '5280' + - "5222" + - "5269" + - "5347" + - "5280" volumes: - ${CONFIG}/prosody/config:/config:Z - ${CONFIG}/prosody/prosody-plugins-custom:/prosody-plugins-custom:Z environment: - PUBLIC_URL=https://meet.jeffemmett.com - TZ=${TZ:-UTC} - # Auth - AUTH_TYPE=${AUTH_TYPE:-internal} - ENABLE_AUTH=${ENABLE_AUTH:-0} - ENABLE_GUESTS=${ENABLE_GUESTS:-1} - # Features - ENABLE_BREAKOUT_ROOMS=1 - ENABLE_LOBBY=1 - ENABLE_AV_MODERATION=1 - ENABLE_XMPP_WEBSOCKET=1 - # Credentials - JICOFO_AUTH_PASSWORD - JVB_AUTH_USER - JVB_AUTH_PASSWORD @@ -91,12 +84,10 @@ services: - JIBRI_XMPP_PASSWORD - JIBRI_RECORDER_USER - JIBRI_RECORDER_PASSWORD - # JWT (optional) - JWT_APP_ID - JWT_APP_SECRET - JWT_ACCEPTED_ISSUERS - JWT_ACCEPTED_AUDIENCES - # Domain - XMPP_DOMAIN=meet.jitsi - XMPP_AUTH_DOMAIN=auth.meet.jitsi - XMPP_GUEST_DOMAIN=guest.meet.jitsi @@ -108,7 +99,6 @@ services: aliases: - xmpp.meet.jitsi - # Focus component jicofo: image: jitsi/jicofo:${JITSI_IMAGE_VERSION:-stable} restart: ${RESTART_POLICY:-unless-stopped} @@ -120,11 +110,7 @@ services: - ENABLE_AUTH=${ENABLE_AUTH:-0} - ENABLE_RECORDING - ENABLE_SCTP=1 - # Credentials - JICOFO_AUTH_PASSWORD - # JVB - - JVB_BREWERY_MUC=jvbbrewery@internal-muc.meet.jitsi - # Domain - XMPP_DOMAIN=meet.jitsi - XMPP_AUTH_DOMAIN=auth.meet.jitsi - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi @@ -135,35 +121,28 @@ services: depends_on: - prosody - # Video bridge - handles actual video/audio jvb: image: jitsi/jvb:${JITSI_IMAGE_VERSION:-stable} restart: ${RESTART_POLICY:-unless-stopped} ports: - # UDP for video bridge - MUST be directly exposed (using 10200 to avoid conflict with coturn) - - '10200:10200/udp' + - "10200:10200/udp" volumes: - ${CONFIG}/jvb:/config:Z environment: - TZ=${TZ:-UTC} - PUBLIC_URL=https://meet.jeffemmett.com - # Credentials - JVB_AUTH_USER - JVB_AUTH_PASSWORD - - JVB_BREWERY_MUC=jvbbrewery@internal-muc.meet.jitsi - # Network - IMPORTANT: Set to server's public IP + - JVB_BREWERY_MUC=jvbbrewery - JVB_ADVERTISE_IPS=${JVB_ADVERTISE_IPS} - JVB_PORT=10200 - JVB_STUN_SERVERS=meet-jit-si-turnrelay.jitsi.net:443 - # WebSocket - ENABLE_COLIBRI_WEBSOCKET=1 - JVB_WS_DOMAIN=meet.jeffemmett.com - JVB_WS_SERVER_ID=default-id - # Domain - XMPP_AUTH_DOMAIN=auth.meet.jitsi - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi - XMPP_SERVER=prosody - # Memory - VIDEOBRIDGE_MAX_MEMORY=${VIDEOBRIDGE_MAX_MEMORY:-3072m} networks: - meet.jitsi diff --git a/docker-compose.yml b/docker-compose.yml index da647c9..40ac80e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,510 +1,509 @@ services: - # Frontend - web: - image: jitsi/web:${JITSI_IMAGE_VERSION:-unstable} - restart: ${RESTART_POLICY:-unless-stopped} - ports: - - '${HTTP_PORT}:80' - - '${HTTPS_PORT}:443' - volumes: - - ${CONFIG}/web:/config:Z - - ${CONFIG}/web/crontabs:/var/spool/cron/crontabs:Z - - ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z - - ${CONFIG}/web/load-test:/usr/share/jitsi-meet/load-test:Z - labels: - service: "jitsi-web" - environment: - - AMPLITUDE_ID - - ANALYTICS_SCRIPT_URLS - - ANALYTICS_WHITELISTED_EVENTS - - AUDIO_QUALITY_OPUS_BITRATE - - AUTO_CAPTION_ON_RECORD - - BRANDING_DATA_URL - - BWE_ESTIMATOR_ENGINE - - BOSH_RELATIVE - - CHROME_EXTENSION_BANNER_JSON - - CODEC_ORDER_JVB - - CODEC_ORDER_JVB_MOBILE - - CODEC_ORDER_P2P - - CODEC_ORDER_P2P_MOBILE - - COLIBRI_WEBSOCKET_PORT - - COLIBRI_WEBSOCKET_JVB_LOOKUP_NAME - - COLIBRI_WEBSOCKET_REGEX - - CONFCODE_URL - - CORS_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN - - DEFAULT_LANGUAGE - - DEPLOYMENTINFO_ENVIRONMENT - - DEPLOYMENTINFO_ENVIRONMENT_TYPE - - DEPLOYMENTINFO_REGION - - DEPLOYMENTINFO_SHARD - - DESKTOP_SHARING_FRAMERATE_AUTO - - DESKTOP_SHARING_FRAMERATE_MIN - - DESKTOP_SHARING_FRAMERATE_MAX - - DIALIN_NUMBERS_URL - - DIALOUT_AUTH_URL - - DIALOUT_CODES_URL - - DISABLE_AUDIO_LEVELS - - DISABLE_COLIBRI_WEBSOCKET_JVB_LOOKUP - - DISABLE_DEEP_LINKING - - DISABLE_GRANT_MODERATOR - - DISABLE_HTTPS - - DISABLE_KICKOUT - - DISABLE_LOCAL_RECORDING - - DISABLE_POLLS - - DISABLE_PRIVATE_CHAT - - DISABLE_PROFILE - - DISABLE_REACTIONS - - DISABLE_REMOTE_VIDEO_MENU - - DISABLE_START_FOR_ALL - - DROPBOX_APPKEY - - DROPBOX_REDIRECT_URI - - DYNAMIC_BRANDING_URL - - ENABLE_ADAPTIVE_MODE - - ENABLE_AUDIO_PROCESSING - - ENABLE_AUTOMATIC_GAIN_CONTROL - - ENABLE_AUTH - - ENABLE_AUTH_DOMAIN - - ENABLE_BREAKOUT_ROOMS - - ENABLE_CALENDAR - - ENABLE_COLIBRI_WEBSOCKET - - ENABLE_COLIBRI_WEBSOCKET_UNSAFE_REGEX - - ENABLE_E2EPING - - ENABLE_FILE_RECORDING_SHARING - - ENABLE_GUESTS - - ENABLE_HSTS - - ENABLE_HTTP_REDIRECT - - ENABLE_IPV6 - - ENABLE_LETSENCRYPT - - ENABLE_NO_AUDIO_DETECTION - - ENABLE_NOISY_MIC_DETECTION - - ENABLE_OCTO - - ENABLE_OPUS_RED - - ENABLE_PREJOIN_PAGE - - ENABLE_P2P - - ENABLE_WELCOME_PAGE - - ENABLE_CLOSE_PAGE - - ENABLE_LIVESTREAMING - - ENABLE_LIVESTREAMING_DATA_PRIVACY_LINK - - ENABLE_LIVESTREAMING_HELP_LINK - - ENABLE_LIVESTREAMING_TERMS_LINK - - ENABLE_LIVESTREAMING_VALIDATOR_REGEXP_STRING - - ENABLE_LOAD_TEST_CLIENT - - ENABLE_LOCAL_RECORDING_NOTIFY_ALL_PARTICIPANT - - ENABLE_LOCAL_RECORDING_SELF_START - - ENABLE_RECORDING - - ENABLE_REMB - - ENABLE_REQUIRE_DISPLAY_NAME - - ENABLE_SERVICE_RECORDING - - ENABLE_SIMULCAST - - ENABLE_STATS_ID - - ENABLE_STEREO - - ENABLE_SUBDOMAINS - - ENABLE_TALK_WHILE_MUTED - - ENABLE_TCC - - ENABLE_TRANSCRIPTIONS - - ENABLE_VLA - - ENABLE_XMPP_WEBSOCKET - - ENABLE_JAAS_COMPONENTS - - ETHERPAD_PUBLIC_URL - - ETHERPAD_URL_BASE - - E2EPING_NUM_REQUESTS - - E2EPING_MAX_CONFERENCE_SIZE - - E2EPING_MAX_MESSAGE_PER_SECOND - - GOOGLE_ANALYTICS_ID - - GOOGLE_API_APP_CLIENT_ID - - HIDE_PREMEETING_BUTTONS - - HIDE_PREJOIN_DISPLAY_NAME - - HIDE_PREJOIN_EXTRA_BUTTONS - - INVITE_SERVICE_URL - - JVB_PREFER_SCTP - - LETSENCRYPT_DOMAIN - - LETSENCRYPT_EMAIL - - LETSENCRYPT_USE_STAGING - - LETSENCRYPT_ACME_SERVER - - MATOMO_ENDPOINT - - MATOMO_SITE_ID - - MICROSOFT_API_APP_CLIENT_ID - - NGINX_KEEPALIVE_TIMEOUT - - NGINX_RESOLVER - - NGINX_WORKER_PROCESSES - - NGINX_WORKER_CONNECTIONS - - PEOPLE_SEARCH_URL - - PREFERRED_LANGUAGE - - PUBLIC_URL - - P2P_PREFERRED_CODEC - - P2P_STUN_SERVERS - - RESOLUTION - - RESOLUTION_MIN - - RESOLUTION_WIDTH - - RESOLUTION_WIDTH_MIN - - START_AUDIO_MUTED - - START_AUDIO_ONLY - - START_SILENT - - START_WITH_AUDIO_MUTED - - START_VIDEO_MUTED - - START_WITH_VIDEO_MUTED - - TOKEN_AUTH_URL - - TOOLBAR_BUTTONS - - TRANSLATION_LANGUAGES - - TRANSLATION_LANGUAGES_HEAD - - TZ - - USE_APP_LANGUAGE - - VIDEOQUALITY_BITRATE_H264_LOW - - VIDEOQUALITY_BITRATE_H264_STANDARD - - VIDEOQUALITY_BITRATE_H264_HIGH - - VIDEOQUALITY_BITRATE_H264_FULL - - VIDEOQUALITY_BITRATE_H264_ULTRA - - VIDEOQUALITY_BITRATE_H264_SS_HIGH - - VIDEOQUALITY_BITRATE_VP8_LOW - - VIDEOQUALITY_BITRATE_VP8_STANDARD - - VIDEOQUALITY_BITRATE_VP8_HIGH - - VIDEOQUALITY_BITRATE_VP8_FULL - - VIDEOQUALITY_BITRATE_VP8_ULTRA - - VIDEOQUALITY_BITRATE_VP8_SS_HIGH - - VIDEOQUALITY_BITRATE_VP9_LOW - - VIDEOQUALITY_BITRATE_VP9_STANDARD - - VIDEOQUALITY_BITRATE_VP9_HIGH - - VIDEOQUALITY_BITRATE_VP9_FULL - - VIDEOQUALITY_BITRATE_VP9_ULTRA - - VIDEOQUALITY_BITRATE_VP9_SS_HIGH - - VIDEOQUALITY_BITRATE_AV1_LOW - - VIDEOQUALITY_BITRATE_AV1_STANDARD - - VIDEOQUALITY_BITRATE_AV1_HIGH - - VIDEOQUALITY_BITRATE_AV1_FULL - - VIDEOQUALITY_BITRATE_AV1_ULTRA - - VIDEOQUALITY_BITRATE_AV1_SS_HIGH - - VIDEOQUALITY_PREFERRED_CODEC - - XMPP_AUTH_DOMAIN - - XMPP_BOSH_URL_BASE - - XMPP_DOMAIN - - XMPP_GUEST_DOMAIN - - XMPP_MUC_DOMAIN - - XMPP_HIDDEN_DOMAIN - - XMPP_PORT - - XMPP_RECORDER_DOMAIN - - WHITEBOARD_COLLAB_SERVER_PUBLIC_URL - - WHITEBOARD_COLLAB_SERVER_URL_BASE - networks: - meet.jitsi: - depends_on: - - jvb - - # XMPP server - prosody: - image: jitsi/prosody:${JITSI_IMAGE_VERSION:-unstable} - restart: ${RESTART_POLICY:-unless-stopped} - expose: - - '${XMPP_PORT:-5222}' - - '${PROSODY_S2S_PORT:-5269}' - - '5347' - - '${PROSODY_HTTP_PORT:-5280}' - labels: - service: "jitsi-prosody" - volumes: - - ${CONFIG}/prosody/config:/config:Z - - ${CONFIG}/prosody/prosody-plugins-custom:/prosody-plugins-custom:Z - environment: - - AUTH_TYPE - - DISABLE_POLLS - - ENABLE_AUTH - - ENABLE_AV_MODERATION - - ENABLE_BREAKOUT_ROOMS - - ENABLE_END_CONFERENCE - - ENABLE_GUESTS - - ENABLE_IPV6 - - ENABLE_LOBBY - - ENABLE_RECORDING - - ENABLE_S2S - - ENABLE_TRANSCRIPTIONS - - ENABLE_VISITORS - - ENABLE_XMPP_WEBSOCKET - - ENABLE_JAAS_COMPONENTS - - GC_TYPE - - GC_INC_TH - - GC_INC_SPEED - - GC_INC_STEP_SIZE - - GC_GEN_MIN_TH - - GC_GEN_MAX_TH - - GLOBAL_CONFIG - - GLOBAL_MODULES - - JIBRI_RECORDER_USER - - JIBRI_RECORDER_PASSWORD - - JIBRI_SIP_BREWERY_MUC - - JIBRI_XMPP_USER - - JIBRI_XMPP_PASSWORD - - JICOFO_AUTH_PASSWORD - - JICOFO_COMPONENT_SECRET - - JIGASI_TRANSCRIBER_PASSWORD - - JIGASI_TRANSCRIBER_USER - - JIGASI_XMPP_USER - - JIGASI_XMPP_PASSWORD - - JVB_AUTH_USER - - JVB_AUTH_PASSWORD - - JWT_APP_ID - - JWT_APP_SECRET - - JWT_ACCEPTED_ISSUERS - - JWT_ACCEPTED_AUDIENCES - - JWT_ASAP_KEYSERVER - - JWT_ALLOW_EMPTY - - JWT_AUTH_TYPE - - JWT_ENABLE_DOMAIN_VERIFICATION - - JWT_SIGN_TYPE - - JWT_TOKEN_AUTH_MODULE - - MATRIX_UVS_URL - - MATRIX_UVS_ISSUER - - MATRIX_UVS_AUTH_TOKEN - - MATRIX_UVS_SYNC_POWER_LEVELS - - MATRIX_LOBBY_BYPASS - - LOG_LEVEL - - LDAP_AUTH_METHOD - - LDAP_BASE - - LDAP_BINDDN - - LDAP_BINDPW - - LDAP_FILTER - - LDAP_VERSION - - LDAP_TLS_CIPHERS - - LDAP_TLS_CHECK_PEER - - LDAP_TLS_CACERT_FILE - - LDAP_TLS_CACERT_DIR - - LDAP_START_TLS - - LDAP_URL - - LDAP_USE_TLS - - MAX_PARTICIPANTS - - PROSODY_ADMINS - - PROSODY_AUTH_TYPE - - PROSODY_C2S_LIMIT - - PROSODY_C2S_REQUIRE_ENCRYPTION - - PROSODY_RESERVATION_ENABLED - - PROSODY_RESERVATION_REST_BASE_URL - - PROSODY_DISABLE_C2S_LIMIT - - PROSODY_DISABLE_S2S_LIMIT - - PROSODY_ENABLE_FILTER_MESSAGES - - PROSODY_ENABLE_RATE_LIMITS - - PROSODY_ENABLE_RECORDING_METADATA - - PROSODY_ENABLE_STANZA_COUNTS - - PROSODY_ENABLE_S2S - - PROSODY_ENABLE_METRICS - - PROSODY_GUEST_AUTH_TYPE - - PROSODY_HTTP_PORT - - PROSODY_LOG_CONFIG - - PROSODY_METRICS_ALLOWED_CIDR - - PROSODY_MODE - - PROSODY_RATE_LIMIT_LOGIN_RATE - - PROSODY_RATE_LIMIT_SESSION_RATE - - PROSODY_RATE_LIMIT_TIMEOUT - - PROSODY_RATE_LIMIT_ALLOW_RANGES - - PROSODY_RATE_LIMIT_CACHE_SIZE - - PROSODY_S2S_LIMIT - - PROSODY_S2S_PORT - - PROSODY_TRUSTED_PROXIES - - PROSODY_VISITOR_INDEX - - PROSODY_VISITORS_MUC_PREFIX - - PROSODY_VISITORS_S2S_VHOSTS - - PUBLIC_URL - - STUN_HOST - - STUN_PORT - - TURN_CREDENTIALS - - TURN_USERNAME - - TURN_PASSWORD - - TURN_HOST - - TURNS_HOST - - TURN_PORT - - TURNS_PORT - - TURN_TRANSPORT - - TURN_TTL - - TZ - - VISITORS_MAX_VISITORS_PER_NODE - - VISITORS_XMPP_DOMAIN - - VISITORS_XMPP_SERVER - - VISITORS_XMPP_PORT - - WAIT_FOR_HOST_DISABLE_AUTO_OWNERS - - XMPP_BREAKOUT_MUC_MODULES - - XMPP_CONFIGURATION - - XMPP_DOMAIN - - XMPP_AUTH_DOMAIN - - XMPP_GUEST_DOMAIN - - XMPP_MUC_DOMAIN - - XMPP_INTERNAL_MUC_DOMAIN - - XMPP_LOBBY_MUC_MODULES - - XMPP_MODULES - - XMPP_MUC_MODULES - - XMPP_MUC_CONFIGURATION - - XMPP_INTERNAL_MUC_MODULES - - XMPP_HIDDEN_DOMAIN - - XMPP_PORT - - XMPP_RECORDER_DOMAIN - - XMPP_SERVER_S2S_PORT - - XMPP_SPEAKERSTATS_MODULES - networks: - meet.jitsi: - aliases: - - ${XMPP_SERVER:-xmpp.meet.jitsi} - - # Focus component - jicofo: - image: jitsi/jicofo:${JITSI_IMAGE_VERSION:-unstable} - restart: ${RESTART_POLICY:-unless-stopped} - ports: - - '127.0.0.1:${JICOFO_REST_PORT:-8888}:8888' - volumes: - - ${CONFIG}/jicofo:/config:Z - labels: - service: "jitsi-jicofo" - environment: - - AUTH_TYPE - - BRIDGE_AVG_PARTICIPANT_STRESS - - BRIDGE_STRESS_THRESHOLD - - ENABLE_AUTH - - ENABLE_AUTO_OWNER - - ENABLE_MODERATOR_CHECKS - - ENABLE_CODEC_VP8 - - ENABLE_CODEC_VP9 - - ENABLE_CODEC_AV1 - - ENABLE_CODEC_H264 - - ENABLE_CODEC_OPUS_RED - - ENABLE_JVB_XMPP_SERVER - - ENABLE_OCTO - - ENABLE_OCTO_SCTP - - ENABLE_RECORDING - - ENABLE_SCTP - - ENABLE_SHARED_DOCUMENT_RANDOM_NAME - - ENABLE_TRANSCRIPTIONS - - ENABLE_VISITORS - - ENABLE_AUTO_LOGIN - - JICOFO_AUTH_LIFETIME - - JICOFO_AUTH_PASSWORD - - JICOFO_AUTH_TYPE - - JICOFO_BRIDGE_REGION_GROUPS - - JICOFO_ENABLE_AUTH - - JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS - - JICOFO_CONF_INITIAL_PARTICIPANT_WAIT_TIMEOUT - - JICOFO_CONF_SINGLE_PARTICIPANT_TIMEOUT - - JICOFO_CONF_SOURCE_SIGNALING_DELAYS - - JICOFO_CONF_MAX_AUDIO_SENDERS - - JICOFO_CONF_MAX_VIDEO_SENDERS - - JICOFO_CONF_STRIP_SIMULCAST - - JICOFO_CONF_SSRC_REWRITING - - JICOFO_ENABLE_HEALTH_CHECKS - - JICOFO_ENABLE_ICE_FAILURE_DETECTION - - JICOFO_ENABLE_LOAD_REDISTRIBUTION - - JICOFO_ENABLE_REST - - JICOFO_HEALTH_CHECKS_USE_PRESENCE - - JICOFO_ICE_FAILURE_INTERVAL - - JICOFO_ICE_FAILURE_MIN_ENDPOINTS - - JICOFO_ICE_FAILURE_THRESHOLD - - JICOFO_MAX_MEMORY - - JICOFO_MULTI_STREAM_BACKWARD_COMPAT - - JICOFO_OCTO_REGION - - JICOFO_RESTART_REQUEST_MAX - - JICOFO_RESTART_REQUEST_INTERVAL - - JICOFO_TRUSTED_DOMAINS - - JIBRI_BREWERY_MUC - - JIBRI_REQUEST_RETRIES - - JIBRI_PENDING_TIMEOUT - - JIGASI_BREWERY_MUC - - JIGASI_SIP_URI - - JIGASI_TRUSTED_DOMAINS - - JVB_BREWERY_MUC - - JVB_XMPP_AUTH_DOMAIN - - JVB_XMPP_INTERNAL_MUC_DOMAIN - - JVB_XMPP_PORT - - JVB_XMPP_SERVER - - MAX_BRIDGE_PARTICIPANTS - - OCTO_BRIDGE_SELECTION_STRATEGY - - PROSODY_VISITORS_MUC_PREFIX - - SENTRY_DSN="${JICOFO_SENTRY_DSN:-0}" - - SENTRY_ENVIRONMENT - - SENTRY_RELEASE - - TZ - - VISITORS_MAX_PARTICIPANTS - - VISITORS_MAX_VISITORS_PER_NODE - - VISITORS_XMPP_AUTH_DOMAIN - - VISITORS_XMPP_SERVER - - VISITORS_XMPP_DOMAIN - - XMPP_DOMAIN - - XMPP_AUTH_DOMAIN - - XMPP_INTERNAL_MUC_DOMAIN - - XMPP_MUC_DOMAIN - - XMPP_HIDDEN_DOMAIN - - XMPP_SERVER - - XMPP_PORT - - XMPP_RECORDER_DOMAIN - - MAX_SSRCS_PER_USER - - MAX_SSRC_GROUPS_PER_USER - depends_on: - - prosody - networks: - meet.jitsi: - - # Video bridge - jvb: - image: jitsi/jvb:${JITSI_IMAGE_VERSION:-unstable} - restart: ${RESTART_POLICY:-unless-stopped} - ports: - - '${JVB_PORT:-10000}:${JVB_PORT:-10000}/udp' - - '127.0.0.1:${JVB_COLIBRI_PORT:-8080}:8080' - volumes: - - ${CONFIG}/jvb:/config:Z - labels: - service: "jitsi-jvb" - environment: - - AUTOSCALER_SIDECAR_KEY_FILE - - AUTOSCALER_SIDECAR_KEY_ID - - AUTOSCALER_SIDECAR_GROUP_NAME - - AUTOSCALER_SIDECAR_HOST_ID - - AUTOSCALER_SIDECAR_INSTANCE_ID - - AUTOSCALER_SIDECAR_PORT - - AUTOSCALER_SIDECAR_REGION - - AUTOSCALER_SIDECAR_SHUTDOWN_POLLING_INTERVAL - - AUTOSCALER_SIDECAR_STATS_POLLING_INTERVAL - - DISABLE_AWS_HARVESTER - - DOCKER_HOST_ADDRESS - - ENABLE_COLIBRI_WEBSOCKET - - ENABLE_JVB_XMPP_SERVER - - ENABLE_OCTO - - ENABLE_SCTP - - JVB_ADVERTISE_IPS - - JVB_ADVERTISE_PRIVATE_CANDIDATES - - JVB_AUTH_USER - - JVB_AUTH_PASSWORD - - JVB_BREWERY_MUC - - JVB_CC_TRUST_BWE - - JVB_DISABLE_STUN - - JVB_DISABLE_XMPP - - JVB_INSTANCE_ID - - JVB_PORT - - JVB_MUC_NICKNAME - - JVB_STUN_SERVERS - - JVB_LOG_FILE - - JVB_OCTO_BIND_ADDRESS - - JVB_OCTO_REGION - - JVB_OCTO_RELAY_ID - - JVB_REQUIRE_VALID_ADDRESS - - JVB_USE_USRSCTP - - JVB_WS_DOMAIN - - JVB_WS_SERVER_ID - - JVB_WS_TLS - - JVB_XMPP_AUTH_DOMAIN - - JVB_XMPP_INTERNAL_MUC_DOMAIN - - JVB_XMPP_PORT - - JVB_XMPP_SERVER - - PUBLIC_URL - - SENTRY_DSN="${JVB_SENTRY_DSN:-0}" - - SENTRY_ENVIRONMENT - - SENTRY_RELEASE - - COLIBRI_REST_ENABLED - - SHUTDOWN_REST_ENABLED - - TZ - - VIDEOBRIDGE_MAX_MEMORY - - XMPP_AUTH_DOMAIN - - XMPP_INTERNAL_MUC_DOMAIN - - XMPP_SERVER - - XMPP_PORT - depends_on: - - prosody - networks: - meet.jitsi: - -# Custom network so all services can communicate using a FQDN + web: + image: jeffsi-meet-web:latest + restart: ${RESTART_POLICY:-unless-stopped} + volumes: + - ${CONFIG}/web:/config:Z + - ${CONFIG}/web/crontabs:/var/spool/cron/crontabs:Z + - ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z + - ${CONFIG}/web/load-test:/usr/share/jitsi-meet/load-test:Z + - ${CONFIG}/../branding/body.html:/usr/share/jitsi-meet/body.html:ro + - ${CONFIG}/../branding/title.html:/usr/share/jitsi-meet/title.html:ro + - ${CONFIG}/../branding/images:/usr/share/jitsi-meet/images/custom:ro + - ${CONFIG}/../branding/welcome:/usr/share/jitsi-meet/custom:ro + labels: + service: jitsi-web + traefik.enable: 'true' + traefik.http.routers.jitsi.rule: Host(`meet.jeffemmett.com`) + traefik.http.routers.jitsi.entrypoints: web + traefik.http.services.jitsi.loadbalancer.server.port: '80' + environment: + - AMPLITUDE_ID + - ANALYTICS_SCRIPT_URLS + - ANALYTICS_WHITELISTED_EVENTS + - AUDIO_QUALITY_OPUS_BITRATE + - AUTO_CAPTION_ON_RECORD + - BRANDING_DATA_URL + - BWE_ESTIMATOR_ENGINE + - BOSH_RELATIVE + - CHROME_EXTENSION_BANNER_JSON + - CODEC_ORDER_JVB + - CODEC_ORDER_JVB_MOBILE + - CODEC_ORDER_P2P + - CODEC_ORDER_P2P_MOBILE + - COLIBRI_WEBSOCKET_PORT + - COLIBRI_WEBSOCKET_JVB_LOOKUP_NAME + - COLIBRI_WEBSOCKET_REGEX + - CONFCODE_URL + - CORS_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN + - DEFAULT_LANGUAGE + - DEPLOYMENTINFO_ENVIRONMENT + - DEPLOYMENTINFO_ENVIRONMENT_TYPE + - DEPLOYMENTINFO_REGION + - DEPLOYMENTINFO_SHARD + - DESKTOP_SHARING_FRAMERATE_AUTO + - DESKTOP_SHARING_FRAMERATE_MIN + - DESKTOP_SHARING_FRAMERATE_MAX + - DIALIN_NUMBERS_URL + - DIALOUT_AUTH_URL + - DIALOUT_CODES_URL + - DISABLE_AUDIO_LEVELS + - DISABLE_COLIBRI_WEBSOCKET_JVB_LOOKUP + - DISABLE_DEEP_LINKING + - DISABLE_GRANT_MODERATOR + - DISABLE_HTTPS + - DISABLE_KICKOUT + - DISABLE_LOCAL_RECORDING + - DISABLE_POLLS + - DISABLE_PRIVATE_CHAT + - DISABLE_PROFILE + - DISABLE_REACTIONS + - DISABLE_REMOTE_VIDEO_MENU + - DISABLE_START_FOR_ALL + - DROPBOX_APPKEY + - DROPBOX_REDIRECT_URI + - DYNAMIC_BRANDING_URL + - ENABLE_ADAPTIVE_MODE + - ENABLE_AUDIO_PROCESSING + - ENABLE_AUTOMATIC_GAIN_CONTROL + - ENABLE_AUTH + - ENABLE_AUTH_DOMAIN + - ENABLE_BREAKOUT_ROOMS + - ENABLE_CALENDAR + - ENABLE_COLIBRI_WEBSOCKET + - ENABLE_COLIBRI_WEBSOCKET_UNSAFE_REGEX + - ENABLE_E2EPING + - ENABLE_FILE_RECORDING_SHARING + - ENABLE_GUESTS + - ENABLE_HSTS + - ENABLE_HTTP_REDIRECT + - ENABLE_IPV6 + - ENABLE_LETSENCRYPT + - ENABLE_NO_AUDIO_DETECTION + - ENABLE_NOISY_MIC_DETECTION + - ENABLE_OCTO + - ENABLE_OPUS_RED + - ENABLE_PREJOIN_PAGE + - ENABLE_P2P + - ENABLE_WELCOME_PAGE + - ENABLE_CLOSE_PAGE + - ENABLE_LIVESTREAMING + - ENABLE_LIVESTREAMING_DATA_PRIVACY_LINK + - ENABLE_LIVESTREAMING_HELP_LINK + - ENABLE_LIVESTREAMING_TERMS_LINK + - ENABLE_LIVESTREAMING_VALIDATOR_REGEXP_STRING + - ENABLE_LOAD_TEST_CLIENT + - ENABLE_LOCAL_RECORDING_NOTIFY_ALL_PARTICIPANT + - ENABLE_LOCAL_RECORDING_SELF_START + - ENABLE_RECORDING + - ENABLE_REMB + - ENABLE_REQUIRE_DISPLAY_NAME + - ENABLE_SERVICE_RECORDING + - ENABLE_SIMULCAST + - ENABLE_STATS_ID + - ENABLE_STEREO + - ENABLE_SUBDOMAINS + - ENABLE_TALK_WHILE_MUTED + - ENABLE_TCC + - ENABLE_TRANSCRIPTIONS + - ENABLE_VLA + - ENABLE_XMPP_WEBSOCKET + - ENABLE_JAAS_COMPONENTS + - ETHERPAD_PUBLIC_URL + - ETHERPAD_URL_BASE + - E2EPING_NUM_REQUESTS + - E2EPING_MAX_CONFERENCE_SIZE + - E2EPING_MAX_MESSAGE_PER_SECOND + - GOOGLE_ANALYTICS_ID + - GOOGLE_API_APP_CLIENT_ID + - HIDE_PREMEETING_BUTTONS + - HIDE_PREJOIN_DISPLAY_NAME + - HIDE_PREJOIN_EXTRA_BUTTONS + - INVITE_SERVICE_URL + - JVB_PREFER_SCTP + - LETSENCRYPT_DOMAIN + - LETSENCRYPT_EMAIL + - LETSENCRYPT_USE_STAGING + - LETSENCRYPT_ACME_SERVER + - MATOMO_ENDPOINT + - MATOMO_SITE_ID + - MICROSOFT_API_APP_CLIENT_ID + - NGINX_KEEPALIVE_TIMEOUT + - NGINX_RESOLVER + - NGINX_WORKER_PROCESSES + - NGINX_WORKER_CONNECTIONS + - PEOPLE_SEARCH_URL + - PREFERRED_LANGUAGE + - PUBLIC_URL + - P2P_PREFERRED_CODEC + - P2P_STUN_SERVERS + - RESOLUTION + - RESOLUTION_MIN + - RESOLUTION_WIDTH + - RESOLUTION_WIDTH_MIN + - START_AUDIO_MUTED + - START_AUDIO_ONLY + - START_SILENT + - START_WITH_AUDIO_MUTED + - START_VIDEO_MUTED + - START_WITH_VIDEO_MUTED + - TOKEN_AUTH_URL + - TOOLBAR_BUTTONS + - TRANSLATION_LANGUAGES + - TRANSLATION_LANGUAGES_HEAD + - TZ + - USE_APP_LANGUAGE + - VIDEOQUALITY_BITRATE_H264_LOW + - VIDEOQUALITY_BITRATE_H264_STANDARD + - VIDEOQUALITY_BITRATE_H264_HIGH + - VIDEOQUALITY_BITRATE_H264_FULL + - VIDEOQUALITY_BITRATE_H264_ULTRA + - VIDEOQUALITY_BITRATE_H264_SS_HIGH + - VIDEOQUALITY_BITRATE_VP8_LOW + - VIDEOQUALITY_BITRATE_VP8_STANDARD + - VIDEOQUALITY_BITRATE_VP8_HIGH + - VIDEOQUALITY_BITRATE_VP8_FULL + - VIDEOQUALITY_BITRATE_VP8_ULTRA + - VIDEOQUALITY_BITRATE_VP8_SS_HIGH + - VIDEOQUALITY_BITRATE_VP9_LOW + - VIDEOQUALITY_BITRATE_VP9_STANDARD + - VIDEOQUALITY_BITRATE_VP9_HIGH + - VIDEOQUALITY_BITRATE_VP9_FULL + - VIDEOQUALITY_BITRATE_VP9_ULTRA + - VIDEOQUALITY_BITRATE_VP9_SS_HIGH + - VIDEOQUALITY_BITRATE_AV1_LOW + - VIDEOQUALITY_BITRATE_AV1_STANDARD + - VIDEOQUALITY_BITRATE_AV1_HIGH + - VIDEOQUALITY_BITRATE_AV1_FULL + - VIDEOQUALITY_BITRATE_AV1_ULTRA + - VIDEOQUALITY_BITRATE_AV1_SS_HIGH + - VIDEOQUALITY_PREFERRED_CODEC + - XMPP_AUTH_DOMAIN + - XMPP_BOSH_URL_BASE + - XMPP_DOMAIN + - XMPP_GUEST_DOMAIN + - XMPP_MUC_DOMAIN + - XMPP_HIDDEN_DOMAIN + - XMPP_PORT + - XMPP_RECORDER_DOMAIN + - WHITEBOARD_COLLAB_SERVER_PUBLIC_URL + - WHITEBOARD_COLLAB_SERVER_URL_BASE + networks: + meet.jitsi: null + traefik-public: null + depends_on: + - jvb + prosody: + image: jitsi/prosody:${JITSI_IMAGE_VERSION:-unstable} + restart: ${RESTART_POLICY:-unless-stopped} + expose: + - ${XMPP_PORT:-5222} + - ${PROSODY_S2S_PORT:-5269} + - '5347' + - ${PROSODY_HTTP_PORT:-5280} + labels: + service: jitsi-prosody + volumes: + - ${CONFIG}/prosody/config:/config:Z + - ${CONFIG}/prosody/prosody-plugins-custom:/prosody-plugins-custom:Z + environment: + - AUTH_TYPE + - DISABLE_POLLS + - ENABLE_AUTH + - ENABLE_AV_MODERATION + - ENABLE_BREAKOUT_ROOMS + - ENABLE_END_CONFERENCE + - ENABLE_GUESTS + - ENABLE_IPV6 + - ENABLE_LOBBY + - ENABLE_RECORDING + - ENABLE_S2S + - ENABLE_TRANSCRIPTIONS + - ENABLE_VISITORS + - ENABLE_XMPP_WEBSOCKET + - ENABLE_JAAS_COMPONENTS + - GC_TYPE + - GC_INC_TH + - GC_INC_SPEED + - GC_INC_STEP_SIZE + - GC_GEN_MIN_TH + - GC_GEN_MAX_TH + - GLOBAL_CONFIG + - GLOBAL_MODULES + - JIBRI_RECORDER_USER + - JIBRI_RECORDER_PASSWORD + - JIBRI_SIP_BREWERY_MUC + - JIBRI_XMPP_USER + - JIBRI_XMPP_PASSWORD + - JICOFO_AUTH_PASSWORD + - JICOFO_COMPONENT_SECRET + - JIGASI_TRANSCRIBER_PASSWORD + - JIGASI_TRANSCRIBER_USER + - JIGASI_XMPP_USER + - JIGASI_XMPP_PASSWORD + - JVB_AUTH_USER + - JVB_AUTH_PASSWORD + - JWT_APP_ID + - JWT_APP_SECRET + - JWT_ACCEPTED_ISSUERS + - JWT_ACCEPTED_AUDIENCES + - JWT_ASAP_KEYSERVER + - JWT_ALLOW_EMPTY + - JWT_AUTH_TYPE + - JWT_ENABLE_DOMAIN_VERIFICATION + - JWT_SIGN_TYPE + - JWT_TOKEN_AUTH_MODULE + - MATRIX_UVS_URL + - MATRIX_UVS_ISSUER + - MATRIX_UVS_AUTH_TOKEN + - MATRIX_UVS_SYNC_POWER_LEVELS + - MATRIX_LOBBY_BYPASS + - LOG_LEVEL + - LDAP_AUTH_METHOD + - LDAP_BASE + - LDAP_BINDDN + - LDAP_BINDPW + - LDAP_FILTER + - LDAP_VERSION + - LDAP_TLS_CIPHERS + - LDAP_TLS_CHECK_PEER + - LDAP_TLS_CACERT_FILE + - LDAP_TLS_CACERT_DIR + - LDAP_START_TLS + - LDAP_URL + - LDAP_USE_TLS + - MAX_PARTICIPANTS + - PROSODY_ADMINS + - PROSODY_AUTH_TYPE + - PROSODY_C2S_LIMIT + - PROSODY_C2S_REQUIRE_ENCRYPTION + - PROSODY_RESERVATION_ENABLED + - PROSODY_RESERVATION_REST_BASE_URL + - PROSODY_DISABLE_C2S_LIMIT + - PROSODY_DISABLE_S2S_LIMIT + - PROSODY_ENABLE_FILTER_MESSAGES + - PROSODY_ENABLE_RATE_LIMITS + - PROSODY_ENABLE_RECORDING_METADATA + - PROSODY_ENABLE_STANZA_COUNTS + - PROSODY_ENABLE_S2S + - PROSODY_ENABLE_METRICS + - PROSODY_GUEST_AUTH_TYPE + - PROSODY_HTTP_PORT + - PROSODY_LOG_CONFIG + - PROSODY_METRICS_ALLOWED_CIDR + - PROSODY_MODE + - PROSODY_RATE_LIMIT_LOGIN_RATE + - PROSODY_RATE_LIMIT_SESSION_RATE + - PROSODY_RATE_LIMIT_TIMEOUT + - PROSODY_RATE_LIMIT_ALLOW_RANGES + - PROSODY_RATE_LIMIT_CACHE_SIZE + - PROSODY_S2S_LIMIT + - PROSODY_S2S_PORT + - PROSODY_TRUSTED_PROXIES + - PROSODY_VISITOR_INDEX + - PROSODY_VISITORS_MUC_PREFIX + - PROSODY_VISITORS_S2S_VHOSTS + - PUBLIC_URL + - STUN_HOST + - STUN_PORT + - TURN_CREDENTIALS + - TURN_USERNAME + - TURN_PASSWORD + - TURN_HOST + - TURNS_HOST + - TURN_PORT + - TURNS_PORT + - TURN_TRANSPORT + - TURN_TTL + - TZ + - VISITORS_MAX_VISITORS_PER_NODE + - VISITORS_XMPP_DOMAIN + - VISITORS_XMPP_SERVER + - VISITORS_XMPP_PORT + - WAIT_FOR_HOST_DISABLE_AUTO_OWNERS + - XMPP_BREAKOUT_MUC_MODULES + - XMPP_CONFIGURATION + - XMPP_DOMAIN + - XMPP_AUTH_DOMAIN + - XMPP_GUEST_DOMAIN + - XMPP_MUC_DOMAIN + - XMPP_INTERNAL_MUC_DOMAIN + - XMPP_LOBBY_MUC_MODULES + - XMPP_MODULES + - XMPP_MUC_MODULES + - XMPP_MUC_CONFIGURATION + - XMPP_INTERNAL_MUC_MODULES + - XMPP_HIDDEN_DOMAIN + - XMPP_PORT + - XMPP_RECORDER_DOMAIN + - XMPP_SERVER_S2S_PORT + - XMPP_SPEAKERSTATS_MODULES + networks: + meet.jitsi: + aliases: + - ${XMPP_SERVER:-xmpp.meet.jitsi} + jicofo: + image: jitsi/jicofo:${JITSI_IMAGE_VERSION:-unstable} + restart: ${RESTART_POLICY:-unless-stopped} + ports: + - 127.0.0.1:${JICOFO_REST_PORT:-8888}:8888 + volumes: + - ${CONFIG}/jicofo:/config:Z + labels: + service: jitsi-jicofo + environment: + - AUTH_TYPE + - BRIDGE_AVG_PARTICIPANT_STRESS + - BRIDGE_STRESS_THRESHOLD + - ENABLE_AUTH + - ENABLE_AUTO_OWNER + - ENABLE_MODERATOR_CHECKS + - ENABLE_CODEC_VP8 + - ENABLE_CODEC_VP9 + - ENABLE_CODEC_AV1 + - ENABLE_CODEC_H264 + - ENABLE_CODEC_OPUS_RED + - ENABLE_JVB_XMPP_SERVER + - ENABLE_OCTO + - ENABLE_OCTO_SCTP + - ENABLE_RECORDING + - ENABLE_SCTP + - ENABLE_SHARED_DOCUMENT_RANDOM_NAME + - ENABLE_TRANSCRIPTIONS + - ENABLE_VISITORS + - ENABLE_AUTO_LOGIN + - JICOFO_AUTH_LIFETIME + - JICOFO_AUTH_PASSWORD + - JICOFO_AUTH_TYPE + - JICOFO_BRIDGE_REGION_GROUPS + - JICOFO_ENABLE_AUTH + - JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS + - JICOFO_CONF_INITIAL_PARTICIPANT_WAIT_TIMEOUT + - JICOFO_CONF_SINGLE_PARTICIPANT_TIMEOUT + - JICOFO_CONF_SOURCE_SIGNALING_DELAYS + - JICOFO_CONF_MAX_AUDIO_SENDERS + - JICOFO_CONF_MAX_VIDEO_SENDERS + - JICOFO_CONF_STRIP_SIMULCAST + - JICOFO_CONF_SSRC_REWRITING + - JICOFO_ENABLE_HEALTH_CHECKS + - JICOFO_ENABLE_ICE_FAILURE_DETECTION + - JICOFO_ENABLE_LOAD_REDISTRIBUTION + - JICOFO_ENABLE_REST + - JICOFO_HEALTH_CHECKS_USE_PRESENCE + - JICOFO_ICE_FAILURE_INTERVAL + - JICOFO_ICE_FAILURE_MIN_ENDPOINTS + - JICOFO_ICE_FAILURE_THRESHOLD + - JICOFO_MAX_MEMORY + - JICOFO_MULTI_STREAM_BACKWARD_COMPAT + - JICOFO_OCTO_REGION + - JICOFO_RESTART_REQUEST_MAX + - JICOFO_RESTART_REQUEST_INTERVAL + - JICOFO_TRUSTED_DOMAINS + - JIBRI_BREWERY_MUC + - JIBRI_REQUEST_RETRIES + - JIBRI_PENDING_TIMEOUT + - JIGASI_BREWERY_MUC + - JIGASI_SIP_URI + - JIGASI_TRUSTED_DOMAINS + - JVB_BREWERY_MUC + - JVB_XMPP_AUTH_DOMAIN + - JVB_XMPP_INTERNAL_MUC_DOMAIN + - JVB_XMPP_PORT + - JVB_XMPP_SERVER + - MAX_BRIDGE_PARTICIPANTS + - OCTO_BRIDGE_SELECTION_STRATEGY + - PROSODY_VISITORS_MUC_PREFIX + - SENTRY_DSN="${JICOFO_SENTRY_DSN:-0}" + - SENTRY_ENVIRONMENT + - SENTRY_RELEASE + - TZ + - VISITORS_MAX_PARTICIPANTS + - VISITORS_MAX_VISITORS_PER_NODE + - VISITORS_XMPP_AUTH_DOMAIN + - VISITORS_XMPP_SERVER + - VISITORS_XMPP_DOMAIN + - XMPP_DOMAIN + - XMPP_AUTH_DOMAIN + - XMPP_INTERNAL_MUC_DOMAIN + - XMPP_MUC_DOMAIN + - XMPP_HIDDEN_DOMAIN + - XMPP_SERVER + - XMPP_PORT + - XMPP_RECORDER_DOMAIN + - MAX_SSRCS_PER_USER + - MAX_SSRC_GROUPS_PER_USER + depends_on: + - prosody + networks: + meet.jitsi: null + jvb: + image: jitsi/jvb:${JITSI_IMAGE_VERSION:-unstable} + restart: ${RESTART_POLICY:-unless-stopped} + ports: + - ${JVB_PORT:-10000}:${JVB_PORT:-10000}/udp + - 127.0.0.1:${JVB_COLIBRI_PORT:-8080}:8080 + volumes: + - ${CONFIG}/jvb:/config:Z + labels: + service: jitsi-jvb + environment: + - AUTOSCALER_SIDECAR_KEY_FILE + - AUTOSCALER_SIDECAR_KEY_ID + - AUTOSCALER_SIDECAR_GROUP_NAME + - AUTOSCALER_SIDECAR_HOST_ID + - AUTOSCALER_SIDECAR_INSTANCE_ID + - AUTOSCALER_SIDECAR_PORT + - AUTOSCALER_SIDECAR_REGION + - AUTOSCALER_SIDECAR_SHUTDOWN_POLLING_INTERVAL + - AUTOSCALER_SIDECAR_STATS_POLLING_INTERVAL + - DISABLE_AWS_HARVESTER + - DOCKER_HOST_ADDRESS + - ENABLE_COLIBRI_WEBSOCKET + - ENABLE_JVB_XMPP_SERVER + - ENABLE_OCTO + - ENABLE_SCTP + - JVB_ADVERTISE_IPS + - JVB_ADVERTISE_PRIVATE_CANDIDATES + - JVB_AUTH_USER + - JVB_AUTH_PASSWORD + - JVB_BREWERY_MUC + - JVB_CC_TRUST_BWE + - JVB_DISABLE_STUN + - JVB_DISABLE_XMPP + - JVB_INSTANCE_ID + - JVB_PORT + - JVB_MUC_NICKNAME + - JVB_STUN_SERVERS + - JVB_LOG_FILE + - JVB_OCTO_BIND_ADDRESS + - JVB_OCTO_REGION + - JVB_OCTO_RELAY_ID + - JVB_REQUIRE_VALID_ADDRESS + - JVB_USE_USRSCTP + - JVB_WS_DOMAIN + - JVB_WS_SERVER_ID + - JVB_WS_TLS + - JVB_XMPP_AUTH_DOMAIN + - JVB_XMPP_INTERNAL_MUC_DOMAIN + - JVB_XMPP_PORT + - JVB_XMPP_SERVER + - PUBLIC_URL + - SENTRY_DSN="${JVB_SENTRY_DSN:-0}" + - SENTRY_ENVIRONMENT + - SENTRY_RELEASE + - COLIBRI_REST_ENABLED + - SHUTDOWN_REST_ENABLED + - TZ + - VIDEOBRIDGE_MAX_MEMORY + - XMPP_AUTH_DOMAIN + - XMPP_INTERNAL_MUC_DOMAIN + - XMPP_SERVER + - XMPP_PORT + depends_on: + - prosody + networks: + meet.jitsi: null networks: - meet.jitsi: + meet.jitsi: null + traefik-public: + external: true