Docker-jitsi-meet: Traefik Deployment questions

Created on 18 Mar 2020  路  25Comments  路  Source: jitsi/docker-jitsi-meet

Hello 馃槂

I am looking into deploying Jitsi using Traefik. I am looking for basic audio and video call functionality.

For this, do I need to deploy jigasi ?

Furthermore:

  1. If using Traefik, do I need to uncomment the PUBLIC_URL environment variable?
  2. I don't require any recording/streaming of calls/video etc, how do I ensure this is disabled?

I assume I will need to ensure the relevant ports are open and forwarded correctly too.

Thanks in advance :-)

Most helpful comment

Hi, working example(at least for me) with traefik.

  • Remove the port-bindings for the web service.
  • Add your external network (e.g. web) in the network-sections
  • Add your labels.

I've added comments to the relevant parts, otherwise it's the default.
Make sure to uncomment and add your host ip in .env :
DOCKER_HOST_ADDRESS=1.2.3.4
Example docker-compose.yml with traefik(still running on traefik 1.7).
````
version: '3'

services:
# Frontend
web:
image: jitsi/web
#traefik
#ports:
# - '${HTTP_PORT}:80'
# - '${HTTPS_PORT}:443'
#traefik end
volumes:
- ${CONFIG}/web:/config
- ${CONFIG}/web/letsencrypt:/etc/letsencrypt
- ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts
environment:
- ENABLE_AUTH
- ENABLE_GUESTS
- ENABLE_LETSENCRYPT
- ENABLE_HTTP_REDIRECT
- ENABLE_TRANSCRIPTIONS
- DISABLE_HTTPS
- JICOFO_AUTH_USER
- LETSENCRYPT_DOMAIN
- LETSENCRYPT_EMAIL
- PUBLIC_URL
- XMPP_DOMAIN
- XMPP_AUTH_DOMAIN
- XMPP_BOSH_URL_BASE
- XMPP_GUEST_DOMAIN
- XMPP_MUC_DOMAIN
- XMPP_RECORDER_DOMAIN
- ETHERPAD_URL_BASE
- TZ
- JIBRI_BREWERY_MUC
- JIBRI_PENDING_TIMEOUT
- JIBRI_XMPP_USER
- JIBRI_XMPP_PASSWORD
- JIBRI_RECORDER_USER
- JIBRI_RECORDER_PASSWORD
- ENABLE_RECORDING
networks:
#traefik
web:
#traefik end
meet.jitsi:
aliases:
- ${XMPP_DOMAIN}
#traefik
labels:
- "traefik.docker.network=web"
- "traefik.enable=true"
- "traefik.backend=jc_backend"
- "traefik.basic.frontend.rule=Host:your.host.name"
- "traefik.basic.port=80"
#traefik end

# XMPP server
prosody:
    image: jitsi/prosody
    expose:
        - '5222'
        - '5347'
        - '5280'
    volumes:
        - ${CONFIG}/prosody:/config
    environment:
        - AUTH_TYPE
        - ENABLE_AUTH
        - ENABLE_GUESTS
        - GLOBAL_MODULES
        - GLOBAL_CONFIG
        - LDAP_URL
        - LDAP_BASE
        - LDAP_BINDDN
        - LDAP_BINDPW
        - LDAP_FILTER
        - LDAP_AUTH_METHOD
        - LDAP_VERSION
        - LDAP_USE_TLS
        - LDAP_TLS_CIPHERS
        - LDAP_TLS_CHECK_PEER
        - LDAP_TLS_CACERT_FILE
        - LDAP_TLS_CACERT_DIR
        - LDAP_START_TLS
        - XMPP_DOMAIN
        - XMPP_AUTH_DOMAIN
        - XMPP_GUEST_DOMAIN
        - XMPP_MUC_DOMAIN
        - XMPP_INTERNAL_MUC_DOMAIN
        - XMPP_MODULES
        - XMPP_MUC_MODULES
        - XMPP_INTERNAL_MUC_MODULES
        - XMPP_RECORDER_DOMAIN
        - JICOFO_COMPONENT_SECRET
        - JICOFO_AUTH_USER
        - JICOFO_AUTH_PASSWORD
        - JVB_AUTH_USER
        - JVB_AUTH_PASSWORD
        - JIGASI_XMPP_USER
        - JIGASI_XMPP_PASSWORD
        - JIBRI_XMPP_USER
        - JIBRI_XMPP_PASSWORD
        - JIBRI_RECORDER_USER
        - JIBRI_RECORDER_PASSWORD
        - JWT_APP_ID
        - JWT_APP_SECRET
        - JWT_ACCEPTED_ISSUERS
        - JWT_ACCEPTED_AUDIENCES
        - JWT_ASAP_KEYSERVER
        - JWT_ALLOW_EMPTY
        - JWT_AUTH_TYPE
        - JWT_TOKEN_AUTH_MODULE
        - LOG_LEVEL
        - TZ
    networks:
        meet.jitsi:
            aliases:
                - ${XMPP_SERVER}

# Focus component
jicofo:
    image: jitsi/jicofo
    volumes:
        - ${CONFIG}/jicofo:/config
    environment:
        - ENABLE_AUTH
        - XMPP_DOMAIN
        - XMPP_AUTH_DOMAIN
        - XMPP_INTERNAL_MUC_DOMAIN
        - XMPP_SERVER
        - JICOFO_COMPONENT_SECRET
        - JICOFO_AUTH_USER
        - JICOFO_AUTH_PASSWORD
        - JICOFO_RESERVATION_REST_BASE_URL
        - JVB_BREWERY_MUC
        - JIGASI_BREWERY_MUC
        - JIBRI_BREWERY_MUC
        - JIBRI_PENDING_TIMEOUT
        - TZ
    depends_on:
        - prosody
    networks:
        meet.jitsi:

# Video bridge
jvb:
    image: jitsi/jvb
    ports:
        - '${JVB_PORT}:${JVB_PORT}/udp'
        - '${JVB_TCP_PORT}:${JVB_TCP_PORT}'
    volumes:
        - ${CONFIG}/jvb:/config
    environment:
        - DOCKER_HOST_ADDRESS
        - XMPP_AUTH_DOMAIN
        - XMPP_INTERNAL_MUC_DOMAIN
        - XMPP_SERVER
        - JVB_AUTH_USER
        - JVB_AUTH_PASSWORD
        - JVB_BREWERY_MUC
        - JVB_PORT
        - JVB_TCP_HARVESTER_DISABLED
        - JVB_TCP_PORT
        - JVB_STUN_SERVERS
        - JVB_ENABLE_APIS
        - TZ
    depends_on:
        - prosody
    networks:
        meet.jitsi:

Custom network so all services can communicate using a FQDN

networks:
meet.jitsi:
#traefik
web:
external: true
#traefik end
````

All 25 comments

Hey! I don't know if you got your setup running and just what to get more into it - or you seek help getting your setup running. If it is the latter, I can give you my jitsi + traefik setup as example how it works for me.

From the perspective of my experience and not being an expert, regarding your questions:

  • I don't run jigasi. In fact, I didn't know what it was until now, because I just used the basic docker-compose file provided here.
  • I uncommented and added my value to the PUBLIC_URL in the .env file. But I'm not sure if it really is necessary.
  • I would say, make sure ENABLE_RECORDING stays commented (i.e. not set to 1) and you don't accidentally deploy jibri. Again, this is not the case if you only the the basic docker-compose file.

Hi @jakesmolka,

Thanks for replying. Would you able to share your example please?

Thanks.

We have an examples directory in the dev branch, you are welcome to contribute your config with a PR so we can add it there!

Hi, working example(at least for me) with traefik.

  • Remove the port-bindings for the web service.
  • Add your external network (e.g. web) in the network-sections
  • Add your labels.

I've added comments to the relevant parts, otherwise it's the default.
Make sure to uncomment and add your host ip in .env :
DOCKER_HOST_ADDRESS=1.2.3.4
Example docker-compose.yml with traefik(still running on traefik 1.7).
````
version: '3'

services:
# Frontend
web:
image: jitsi/web
#traefik
#ports:
# - '${HTTP_PORT}:80'
# - '${HTTPS_PORT}:443'
#traefik end
volumes:
- ${CONFIG}/web:/config
- ${CONFIG}/web/letsencrypt:/etc/letsencrypt
- ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts
environment:
- ENABLE_AUTH
- ENABLE_GUESTS
- ENABLE_LETSENCRYPT
- ENABLE_HTTP_REDIRECT
- ENABLE_TRANSCRIPTIONS
- DISABLE_HTTPS
- JICOFO_AUTH_USER
- LETSENCRYPT_DOMAIN
- LETSENCRYPT_EMAIL
- PUBLIC_URL
- XMPP_DOMAIN
- XMPP_AUTH_DOMAIN
- XMPP_BOSH_URL_BASE
- XMPP_GUEST_DOMAIN
- XMPP_MUC_DOMAIN
- XMPP_RECORDER_DOMAIN
- ETHERPAD_URL_BASE
- TZ
- JIBRI_BREWERY_MUC
- JIBRI_PENDING_TIMEOUT
- JIBRI_XMPP_USER
- JIBRI_XMPP_PASSWORD
- JIBRI_RECORDER_USER
- JIBRI_RECORDER_PASSWORD
- ENABLE_RECORDING
networks:
#traefik
web:
#traefik end
meet.jitsi:
aliases:
- ${XMPP_DOMAIN}
#traefik
labels:
- "traefik.docker.network=web"
- "traefik.enable=true"
- "traefik.backend=jc_backend"
- "traefik.basic.frontend.rule=Host:your.host.name"
- "traefik.basic.port=80"
#traefik end

# XMPP server
prosody:
    image: jitsi/prosody
    expose:
        - '5222'
        - '5347'
        - '5280'
    volumes:
        - ${CONFIG}/prosody:/config
    environment:
        - AUTH_TYPE
        - ENABLE_AUTH
        - ENABLE_GUESTS
        - GLOBAL_MODULES
        - GLOBAL_CONFIG
        - LDAP_URL
        - LDAP_BASE
        - LDAP_BINDDN
        - LDAP_BINDPW
        - LDAP_FILTER
        - LDAP_AUTH_METHOD
        - LDAP_VERSION
        - LDAP_USE_TLS
        - LDAP_TLS_CIPHERS
        - LDAP_TLS_CHECK_PEER
        - LDAP_TLS_CACERT_FILE
        - LDAP_TLS_CACERT_DIR
        - LDAP_START_TLS
        - XMPP_DOMAIN
        - XMPP_AUTH_DOMAIN
        - XMPP_GUEST_DOMAIN
        - XMPP_MUC_DOMAIN
        - XMPP_INTERNAL_MUC_DOMAIN
        - XMPP_MODULES
        - XMPP_MUC_MODULES
        - XMPP_INTERNAL_MUC_MODULES
        - XMPP_RECORDER_DOMAIN
        - JICOFO_COMPONENT_SECRET
        - JICOFO_AUTH_USER
        - JICOFO_AUTH_PASSWORD
        - JVB_AUTH_USER
        - JVB_AUTH_PASSWORD
        - JIGASI_XMPP_USER
        - JIGASI_XMPP_PASSWORD
        - JIBRI_XMPP_USER
        - JIBRI_XMPP_PASSWORD
        - JIBRI_RECORDER_USER
        - JIBRI_RECORDER_PASSWORD
        - JWT_APP_ID
        - JWT_APP_SECRET
        - JWT_ACCEPTED_ISSUERS
        - JWT_ACCEPTED_AUDIENCES
        - JWT_ASAP_KEYSERVER
        - JWT_ALLOW_EMPTY
        - JWT_AUTH_TYPE
        - JWT_TOKEN_AUTH_MODULE
        - LOG_LEVEL
        - TZ
    networks:
        meet.jitsi:
            aliases:
                - ${XMPP_SERVER}

# Focus component
jicofo:
    image: jitsi/jicofo
    volumes:
        - ${CONFIG}/jicofo:/config
    environment:
        - ENABLE_AUTH
        - XMPP_DOMAIN
        - XMPP_AUTH_DOMAIN
        - XMPP_INTERNAL_MUC_DOMAIN
        - XMPP_SERVER
        - JICOFO_COMPONENT_SECRET
        - JICOFO_AUTH_USER
        - JICOFO_AUTH_PASSWORD
        - JICOFO_RESERVATION_REST_BASE_URL
        - JVB_BREWERY_MUC
        - JIGASI_BREWERY_MUC
        - JIBRI_BREWERY_MUC
        - JIBRI_PENDING_TIMEOUT
        - TZ
    depends_on:
        - prosody
    networks:
        meet.jitsi:

# Video bridge
jvb:
    image: jitsi/jvb
    ports:
        - '${JVB_PORT}:${JVB_PORT}/udp'
        - '${JVB_TCP_PORT}:${JVB_TCP_PORT}'
    volumes:
        - ${CONFIG}/jvb:/config
    environment:
        - DOCKER_HOST_ADDRESS
        - XMPP_AUTH_DOMAIN
        - XMPP_INTERNAL_MUC_DOMAIN
        - XMPP_SERVER
        - JVB_AUTH_USER
        - JVB_AUTH_PASSWORD
        - JVB_BREWERY_MUC
        - JVB_PORT
        - JVB_TCP_HARVESTER_DISABLED
        - JVB_TCP_PORT
        - JVB_STUN_SERVERS
        - JVB_ENABLE_APIS
        - TZ
    depends_on:
        - prosody
    networks:
        meet.jitsi:

Custom network so all services can communicate using a FQDN

networks:
meet.jitsi:
#traefik
web:
external: true
#traefik end
````

Hi @SebastianKobs,

Thanks a lot for posting your traefik example! 馃憤馃徎I will try it ASAP!

Hey folks! Once you get it working what do you think about contributing the Traefik example to this excamples directory here: https://github.com/jitsi/docker-jitsi-meet/tree/master/examples

Cheers!

Hey folks! Once you get it working what do you think about contributing the Traefik example to this excamples directory here: https://github.com/jitsi/docker-jitsi-meet/tree/master/examples

Cheers!

I did https://github.com/jitsi/docker-jitsi-meet/pull/258

Oh! Merged, thank you!

Hey @SebastianKobs could you please provide the .env file you used in your deployment?

Also @saghul, if you don't mind me asking. By default many of the values in the .env file are commented out, can I leave these commented out and it will just use defaults?

Thanks.

EDIT: or does it ignore them entirely?

Here is the .env file I have currently.

#
# Basic configuration options
#

# Directory where all configuration will be stored.
CONFIG=~/.jitsi-meet-cfg

# Exposed HTTP port.
HTTP_PORT=80

# Exposed HTTPS port.
HTTPS_PORT=443

# System time zone.
TZ=Europe/Amsterdam

# Public URL for the web service.
#PUBLIC_URL=https://meet.example.com

# IP address of the Docker host. See the "Running on a LAN environment" section
# in the README.
DOCKER_HOST_ADDRESS=**mypubliciphere**


#
# Let's Encrypt configuration
#

# Enable Let's Encrypt certificate generation.
ENABLE_LETSENCRYPT=0

# Domain for which to generate the certificate.
#LETSENCRYPT_DOMAIN=meet.example.com

# E-Mail for receiving important account notifications (mandatory).
#[email protected]


#
# Etherpad integration (for document sharing)
#

# Set etherpad-lite URL (uncomment to enable).
#ETHERPAD_URL_BASE=http://etherpad.meet.jitsi:9001


#
# Basic Jigasi configuration options (needed for SIP gateway support)
#

# SIP URI for incoming / outgoing calls.
#[email protected]

# Password for the specified SIP account as a clear text
#JIGASI_SIP_PASSWORD=passw0rd

# SIP server (use the SIP account domain if in doubt).
#JIGASI_SIP_SERVER=sip2sip.info

# SIP server port
#JIGASI_SIP_PORT=5060

# SIP server transport
#JIGASI_SIP_TRANSPORT=UDP

#
# Authentication configuration (see README for details)
#

# Enable authentication.
ENABLE_AUTH=1

# Enable guest access.
ENABLE_GUESTS=1

# Select authentication type: internal, jwt or ldap
AUTH_TYPE=internal

# JWT auuthentication
#

# Application identifier.
#JWT_APP_ID=my_jitsi_app_id

# Application secret known only to your token.
#JWT_APP_SECRET=my_jitsi_app_secret

# (Optional) Set asap_accepted_issuers as a comma separated list.
#JWT_ACCEPTED_ISSUERS=my_web_client,my_app_client

# (Optional) Set asap_accepted_audiences as a comma separated list.
#JWT_ACCEPTED_AUDIENCES=my_server1,my_server2


# LDAP authentication (for more information see the Cyrus SASL saslauthd.conf man page)
#

# LDAP url for connection.
#LDAP_URL=ldaps://ldap.domain.com/

# LDAP base DN. Can be empty
#LDAP_BASE=DC=example,DC=domain,DC=com

# LDAP user DN. Do not specify this parameter for the anonymous bind.
#LDAP_BINDDN=CN=binduser,OU=users,DC=example,DC=domain,DC=com

# LDAP user password. Do not specify this parameter for the anonymous bind.
#LDAP_BINDPW=LdapUserPassw0rd

# LDAP filter. Tokens example:
# %1-9 - if the input key is [email protected], then %1 is com, %2 is domain and %3 is mail.
# %s - %s is replaced by the complete service string.
# %r - %r is replaced by the complete realm string.
#LDAP_FILTER=(sAMAccountName=%u)

# LDAP authentication method
#LDAP_AUTH_METHOD=bind

# LDAP version
#LDAP_VERSION=3

# LDAP TLS using
#LDAP_USE_TLS=1

# List of SSL/TLS ciphers to allow.
#LDAP_TLS_CIPHERS=SECURE256:SECURE128:!AES-128-CBC:!ARCFOUR-128:!CAMELLIA-128-CBC:!3DES-CBC:!CAMELLIA-128-CBC

# Require and verify server certificate
#LDAP_TLS_CHECK_PEER=1

# Path to CA cert file. Used when server sertificate verify is enabled.
#LDAP_TLS_CACERT_FILE=/etc/ssl/certs/ca-certificates.crt

# Path to CA certs directory. Used when server sertificate verify is enabled.
#LDAP_TLS_CACERT_DIR=/etc/ssl/certs

# Wether to use starttls, implies LDAPv3 and requires ldap:// instead of ldaps://
# LDAP_START_TLS=1


#
# Advanced configuration options (you generally don't need to change these)
#

# Internal XMPP domain.
XMPP_DOMAIN=meet.jitsi

# Internal XMPP server
XMPP_SERVER=xmpp.meet.jitsi

# Internal XMPP server URL
XMPP_BOSH_URL_BASE=http://xmpp.meet.jitsi:5280

# Internal XMPP domain for authenticated services.
XMPP_AUTH_DOMAIN=auth.meet.jitsi

# XMPP domain for the MUC.
XMPP_MUC_DOMAIN=muc.meet.jitsi

# XMPP domain for the internal MUC used for jibri, jigasi and jvb pools.
XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi

# XMPP domain for unauthenticated users.
XMPP_GUEST_DOMAIN=guest.meet.jitsi

# Custom Prosody modules for XMPP_DOMAIN (comma separated)
XMPP_MODULES=

# Custom Prosody modules for MUC component (comma separated)
XMPP_MUC_MODULES=

# Custom Prosody modules for internal MUC component (comma separated)
XMPP_INTERNAL_MUC_MODULES=

# MUC for the JVB pool.
JVB_BREWERY_MUC=jvbbrewery

# XMPP user for JVB client connections.
JVB_AUTH_USER=jvb

# XMPP password for JVB client connections.
JVB_AUTH_PASSWORD=passw0rd

# STUN servers used to discover the server's public IP.
JVB_STUN_SERVERS=stun.l.google.com:19302,stun1.l.google.com:19302,stun2.l.google.com:19302

# Media port for the Jitsi Videobridge
JVB_PORT=10000

# TCP Fallback for Jitsi Videobridge for when UDP isn't available
JVB_TCP_HARVESTER_DISABLED=true
JVB_TCP_PORT=4443

# A comma separated list of APIs to enable when the JVB is started. The default is none.
# See https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest.md for more information
#JVB_ENABLE_APIS=rest,colibri

# XMPP component password for Jicofo.
JICOFO_COMPONENT_SECRET=s3cr37

# XMPP user for Jicofo client connections. NOTE: this option doesn't currently work due to a bug.
JICOFO_AUTH_USER=focus

# XMPP password for Jicofo client connections.
JICOFO_AUTH_PASSWORD=passw0rd

# Base URL of Jicofo's reservation REST API
#JICOFO_RESERVATION_REST_BASE_URL=http://reservation.example.com

# XMPP user for Jigasi MUC client connections.
JIGASI_XMPP_USER=jigasi

# XMPP password for Jigasi MUC client connections.
JIGASI_XMPP_PASSWORD=passw0rd

# MUC name for the Jigasi pool.
JIGASI_BREWERY_MUC=jigasibrewery

# Minimum port for media used by Jigasi.
JIGASI_PORT_MIN=20000

# Maximum port for media used by Jigasi.
JIGASI_PORT_MAX=20050

# Enable SDES srtp
#JIGASI_ENABLE_SDES_SRTP=1

# Keepalive method
#JIGASI_SIP_KEEP_ALIVE_METHOD=OPTIONS

# Health-check extension
#JIGASI_HEALTH_CHECK_SIP_URI=keepalive

# Health-check interval
#JIGASI_HEALTH_CHECK_INTERVAL=300000
#
# Enable Jigasi transcription.
ENABLE_TRANSCRIPTIONS=0

# Jigasi will recordord an audio when transcriber is on. Default false.
#JIGASI_TRANSCRIBER_RECORD_AUDIO=true

# Jigasi will send transcribed text to the chat when transcriber is on. Default false.
#JIGASI_TRANSCRIBER_SEND_TXT=true

# Jigasi post to the chat an url with transcription file. Default false.
#JIGASI_TRANSCRIBER_ADVERTISE_URL=true

# Credentials for connect to Cloud Google API from Jigasi
# Please read https://cloud.google.com/text-to-speech/docs/quickstart-protocol section "Before you begin" from 1 to 5 paragraph.
# Copy the values from the json to the related env vars
#GC_PROJECT_ID=
#GC_PRIVATE_KEY_ID=
#GC_PRIVATE_KEY=
#GC_CLIENT_EMAIL=
#GC_CLIENT_ID=
#GC_CLIENT_CERT_URL=

# Enable recording
ENABLE_RECORDING=0

# XMPP domain for the jibri recorder
XMPP_RECORDER_DOMAIN=recorder.meet.jitsi

# XMPP recorder user for Jibri client connections.
JIBRI_RECORDER_USER=recorder

# XMPP recorder password for Jibri client connections.
JIBRI_RECORDER_PASSWORD=passw0rd

# Directory for recordings inside Jibri container.
JIBRI_RECORDING_DIR=/config/recordings

# The finalizing script. Will run after recording is complete.
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh

# XMPP user for Jibri client connections.
JIBRI_XMPP_USER=jibri

# XMPP password for Jibri client connections.
JIBRI_XMPP_PASSWORD=passw0rd

# MUC name for the Jibri pool.
JIBRI_BREWERY_MUC=jibribrewery

# MUC connection timeout
JIBRI_PENDING_TIMEOUT=90

# When jibri gets a request to start a service for a room, the room
# jid will look like: [email protected]_domain
# We'll build the url for the call by transforming that into:
# https://xmpp_domain/subdomain/roomName
# So if there are any prefixes in the jid (like jitsi meet, which
# has its participants join a muc at conference.xmpp_domain) then
# list that prefix here so it can be stripped out to generate
# the call url correctly.
JIBRI_STRIP_DOMAIN_JID=muc

# Directory for logs inside Jibri container.
JIBRI_LOGS_DIR=/config/logs

# Disable HTTPS. This can be useful if TLS connections are going to be handled outside of this setup.
DISABLE_HTTPS=1

# Redirects HTTP traffic to HTTPS. Only works with the standard HTTPS port (443).
#ENABLE_HTTP_REDIRECT=1

@Dextroz sure
````bash
#

Basic configuration options

#

Directory where all configuration will be stored.

CONFIG=~/.jitsi-meet-cfg

Exposed HTTP port.

HTTP_PORT=8000

Exposed HTTPS port.

HTTPS_PORT=8443

System time zone.

TZ=Europe/Amsterdam

Public URL for the web service.

PUBLIC_URL="https://my.domain.tld"

IP address of the Docker host. See the "Running on a LAN environment" section

in the README. (your public ip)

DOCKER_HOST_ADDRESS=1.2.3.4

#

Let's Encrypt configuration

#

Enable Let's Encrypt certificate generation.

ENABLE_LETSENCRYPT=0

Domain for which to generate the certificate.

LETSENCRYPT_DOMAIN=meet.example.com

E-Mail for receiving important account notifications (mandatory).

[email protected]

#

Etherpad integration (for document sharing)

#

Set etherpad-lite URL (uncomment to enable).

ETHERPAD_URL_BASE=http://etherpad.meet.jitsi:9001

#

Basic Jigasi configuration options (needed for SIP gateway support)

#

SIP URI for incoming / outgoing calls.

[email protected]

Password for the specified SIP account as a clear text

JIGASI_SIP_PASSWORD=passw0rd

SIP server (use the SIP account domain if in doubt).

JIGASI_SIP_SERVER=sip2sip.info

SIP server port

JIGASI_SIP_PORT=5060

SIP server transport

JIGASI_SIP_TRANSPORT=UDP

#

Authentication configuration (see README for details)

#

Enable authentication.

ENABLE_AUTH=1

Enable guest access.

ENABLE_GUESTS=1

Select authentication type: internal, jwt or ldap

AUTH_TYPE=internal

JWT auuthentication

#

Application identifier.

JWT_APP_ID=my_jitsi_app_id

Application secret known only to your token.

JWT_APP_SECRET=my_jitsi_app_secret

(Optional) Set asap_accepted_issuers as a comma separated list.

JWT_ACCEPTED_ISSUERS=my_web_client,my_app_client

(Optional) Set asap_accepted_audiences as a comma separated list.

JWT_ACCEPTED_AUDIENCES=my_server1,my_server2

LDAP authentication (for more information see the Cyrus SASL saslauthd.conf man page)

#

LDAP url for connection.

LDAP_URL=ldaps://ldap.domain.com/

LDAP base DN. Can be empty

LDAP_BASE=DC=example,DC=domain,DC=com

LDAP user DN. Do not specify this parameter for the anonymous bind.

LDAP_BINDDN=CN=binduser,OU=users,DC=example,DC=domain,DC=com

LDAP user password. Do not specify this parameter for the anonymous bind.

LDAP_BINDPW=LdapUserPassw0rd

LDAP filter. Tokens example:

%1-9 - if the input key is [email protected], then %1 is com, %2 is domain and %3 is mail.

%s - %s is replaced by the complete service string.

%r - %r is replaced by the complete realm string.

LDAP_FILTER=(sAMAccountName=%u)

LDAP authentication method

LDAP_AUTH_METHOD=bind

LDAP version

LDAP_VERSION=3

LDAP TLS using

LDAP_USE_TLS=1

List of SSL/TLS ciphers to allow.

LDAP_TLS_CIPHERS=SECURE256:SECURE128:!AES-128-CBC:!ARCFOUR-128:!CAMELLIA-128-CBC:!3DES-CBC:!CAMELLIA-128-CBC

Require and verify server certificate

LDAP_TLS_CHECK_PEER=1

Path to CA cert file. Used when server sertificate verify is enabled.

LDAP_TLS_CACERT_FILE=/etc/ssl/certs/ca-certificates.crt

Path to CA certs directory. Used when server sertificate verify is enabled.

LDAP_TLS_CACERT_DIR=/etc/ssl/certs

Wether to use starttls, implies LDAPv3 and requires ldap:// instead of ldaps://

LDAP_START_TLS=1

#

Advanced configuration options (you generally don't need to change these)

#

Internal XMPP domain.

XMPP_DOMAIN=meet.jitsi

Internal XMPP server

XMPP_SERVER=xmpp.meet.jitsi

Internal XMPP server URL

XMPP_BOSH_URL_BASE=http://xmpp.meet.jitsi:5280

Internal XMPP domain for authenticated services.

XMPP_AUTH_DOMAIN=auth.meet.jitsi

XMPP domain for the MUC.

XMPP_MUC_DOMAIN=muc.meet.jitsi

XMPP domain for the internal MUC used for jibri, jigasi and jvb pools.

XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi

XMPP domain for unauthenticated users.

XMPP_GUEST_DOMAIN=guest.meet.jitsi

Custom Prosody modules for XMPP_DOMAIN (comma separated)

XMPP_MODULES=

Custom Prosody modules for MUC component (comma separated)

XMPP_MUC_MODULES=

Custom Prosody modules for internal MUC component (comma separated)

XMPP_INTERNAL_MUC_MODULES=

MUC for the JVB pool.

JVB_BREWERY_MUC=jvbbrewery

XMPP user for JVB client connections.

JVB_AUTH_USER=jvb

XMPP password for JVB client connections.

JVB_AUTH_PASSWORD=passw0rd

STUN servers used to discover the server's public IP.

JVB_STUN_SERVERS=stun.l.google.com:19302,stun1.l.google.com:19302,stun2.l.google.com:19302

Media port for the Jitsi Videobridge

JVB_PORT=10000

TCP Fallback for Jitsi Videobridge for when UDP isn't available

JVB_TCP_HARVESTER_DISABLED=true
JVB_TCP_PORT=4443

A comma separated list of APIs to enable when the JVB is started. The default is none.

See https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest.md for more information

JVB_ENABLE_APIS=rest,colibri

XMPP component password for Jicofo.

JICOFO_COMPONENT_SECRET=s3cr37

XMPP user for Jicofo client connections. NOTE: this option doesn't currently work due to a bug.

JICOFO_AUTH_USER=focus

XMPP password for Jicofo client connections.

JICOFO_AUTH_PASSWORD=passw0rd

Base URL of Jicofo's reservation REST API

JICOFO_RESERVATION_REST_BASE_URL=http://reservation.example.com

XMPP user for Jigasi MUC client connections.

JIGASI_XMPP_USER=jigasi

XMPP password for Jigasi MUC client connections.

JIGASI_XMPP_PASSWORD=passw0rd

MUC name for the Jigasi pool.

JIGASI_BREWERY_MUC=jigasibrewery

Minimum port for media used by Jigasi.

JIGASI_PORT_MIN=20000

Maximum port for media used by Jigasi.

JIGASI_PORT_MAX=20050

Enable SDES srtp

JIGASI_ENABLE_SDES_SRTP=1

Keepalive method

JIGASI_SIP_KEEP_ALIVE_METHOD=OPTIONS

Health-check extension

JIGASI_HEALTH_CHECK_SIP_URI=keepalive

Health-check interval

JIGASI_HEALTH_CHECK_INTERVAL=300000

#

Enable Jigasi transcription.

ENABLE_TRANSCRIPTIONS=1

Jigasi will recordord an audio when transcriber is on. Default false.

JIGASI_TRANSCRIBER_RECORD_AUDIO=true

Jigasi will send transcribed text to the chat when transcriber is on. Default false.

JIGASI_TRANSCRIBER_SEND_TXT=true

Jigasi post to the chat an url with transcription file. Default false.

JIGASI_TRANSCRIBER_ADVERTISE_URL=true

Credentials for connect to Cloud Google API from Jigasi. Path located inside the container.

Please read https://cloud.google.com/text-to-speech/docs/quickstart-protocol

section "Before you begin" from 1 to 5 paragraph. Copy the key on

the docker host to ${CONFIG}/jigasi/key.json and to enable this setting:

GOOGLE_APPLICATION_CREDENTIALS=/config/key.json

Enable recording

ENABLE_RECORDING=1

XMPP domain for the jibri recorder

XMPP_RECORDER_DOMAIN=recorder.meet.jitsi

XMPP recorder user for Jibri client connections.

JIBRI_RECORDER_USER=recorder

XMPP recorder password for Jibri client connections.

JIBRI_RECORDER_PASSWORD=passw0rd

Directory for recordings inside Jibri container.

JIBRI_RECORDING_DIR=/config/recordings

The finalizing script. Will run after recording is complete.

JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh

XMPP user for Jibri client connections.

JIBRI_XMPP_USER=jibri

XMPP password for Jibri client connections.

JIBRI_XMPP_PASSWORD=passw0rd

MUC name for the Jibri pool.

JIBRI_BREWERY_MUC=jibribrewery

MUC connection timeout

JIBRI_PENDING_TIMEOUT=90

When jibri gets a request to start a service for a room, the room

jid will look like: [email protected]_domain

We'll build the url for the call by transforming that into:

https://xmpp_domain/subdomain/roomName

So if there are any prefixes in the jid (like jitsi meet, which

has its participants join a muc at conference.xmpp_domain) then

list that prefix here so it can be stripped out to generate

the call url correctly.

JIBRI_STRIP_DOMAIN_JID=muc

Directory for logs inside Jibri container.

JIBRI_LOGS_DIR=/config/logs

Disable HTTPS. This can be useful if TLS connections are going to be handled outside of this setup.

DISABLE_HTTPS=1

Redirects HTTP traffic to HTTPS. Only works with the standard HTTPS port (443).

ENABLE_HTTP_REDIRECT=1

````

I do ssl via traefik. comment out and set the public url.

@SebastianKobs the only differences I can see between our two .env files are:

  • I have DISABLE_HTTPS=1 uncommented as I want traefik to handle HTTPS.
  • Docker host addr.
  • HTTP(s) ports.
  • I haven't uncommented PUBLIC_URL; should probably do that 馃槃 ...

You can ignore the DISABLE_HTTPS setting(i did). Traefik is bound to port 80. The ports are irrelevant too, no host binds needed for traefik. It will be the public url. Mandatory if not in private space. The README is not clear at all with the distinction between local and public hosting. and the naming is a bit iffy on DOCKER_HOST_ADDRESS me thinks. Will propably file another pull request for that, if I find some time.

Ok thanks @SebastianKobs. I have set them to the ports I am using just in-case anyways.
EDIT: I see now. The traefik compose file you created, doesn't use the .env files for the ports.

If you change the .env, remove the config directory ~/.jitsi-meet-cfg otherwise it won't pick up your changes. Just in case you've missed that step in the readme ;)

@SebastianKobs Don't I do that only if I make changes once I have deployed Jitsi?

@Dextroz I assumed you did for testing your setup. config gets written on docker-compose up -d, if not present, afterwards it stays the same.

Going to attempt the deployment now.

Deployment was successful. Thanks @SebastianKobs 馃槃

Hello,
Sorry:) can you help with traefik configuration? Which ports should be exposed on traefik? Could you pose traefik docker-compose.yml

@levasc On the traefik container itself?

The example compose file which @SebastianKobs made can be found here
This compose setup assumes you already have Traefik deployed.

If you need information about deploying Traefik itself, I found this guide from digitalocean most useful. Obviously, you don't have to follow all of the steps in this guide as they are not a nessesity, for example, exposing the Traefik dashboard.

Thank you :) Yes, the traefik container itself. For example, according to this example:
https://docs.traefik.io/user-guides/docker-compose/basic-example/
Which ports should be opened on the traefic container itself (sections ports and entrypoints) for jitsi-meet to work

now that Traefik supports UDP, do we need to expose 10000/udp as well?

Was this page helpful?
0 / 5 - 0 ratings