Dokploy

Jitsi Meet

Jitsi Meet is an open-source video conferencing platform for secure, self-hosted meetings.

Jitsi Meet logo

Configuration

services:
  web:
    image: jitsi/web:${JITSI_IMAGE_VERSION:-unstable}
    restart: unless-stopped
    depends_on:
      - prosody
    volumes:
      - jitsiWebConfig:/config
      - jitsiWebTranscripts:/usr/share/jitsi-meet/transcripts
    environment:
      - PUBLIC_URL
      - TZ
      - XMPP_DOMAIN
      - XMPP_AUTH_DOMAIN
      - XMPP_BOSH_URL_BASE
      - XMPP_MUC_DOMAIN
      - XMPP_GUEST_DOMAIN
      - XMPP_RECORDER_DOMAIN
      - ENABLE_AUTH
      - ENABLE_GUESTS
      - ENABLE_LETSENCRYPT
      - ENABLE_HTTP_REDIRECT
      - ENABLE_XMPP_WEBSOCKET
      - ENABLE_COLIBRI_WEBSOCKET
      - DISABLE_HTTPS
      - JICOFO_AUTH_USER
      - JVB_AUTH_USER
      - JICOFO_AUTH_PASSWORD
      - JVB_AUTH_PASSWORD

  prosody:
    image: jitsi/prosody:${JITSI_IMAGE_VERSION:-unstable}
    restart: unless-stopped
    volumes:
      - jitsiProsodyConfig:/config
      - jitsiProsodyPlugins:/prosody-plugins-custom
    environment:
      - TZ
      - XMPP_DOMAIN
      - XMPP_AUTH_DOMAIN
      - XMPP_MUC_DOMAIN
      - XMPP_GUEST_DOMAIN
      - XMPP_RECORDER_DOMAIN
      - JICOFO_AUTH_USER
      - JVB_AUTH_USER
      - JICOFO_AUTH_PASSWORD
      - JVB_AUTH_PASSWORD
      - JICOFO_COMPONENT_SECRET
      - JWT_APP_ID
      - JWT_APP_SECRET
      - ENABLE_AUTH
      - ENABLE_GUESTS

  jicofo:
    image: jitsi/jicofo:${JITSI_IMAGE_VERSION:-unstable}
    restart: unless-stopped
    depends_on:
      - prosody
    volumes:
      - jitsiJicofoConfig:/config
    environment:
      - TZ
      - XMPP_DOMAIN
      - XMPP_AUTH_DOMAIN
      - XMPP_MUC_DOMAIN
      - XMPP_INTERNAL_MUC_DOMAIN
      - JICOFO_AUTH_USER
      - JICOFO_AUTH_PASSWORD
      - JICOFO_COMPONENT_SECRET
      - JVB_BREWERY_MUC

  jvb:
    image: jitsi/jvb:${JITSI_IMAGE_VERSION:-unstable}
    restart: unless-stopped
    depends_on:
      - prosody
    ports:
      - 10000
    volumes:
      - jitsiJvbConfig:/config
    environment:
      - TZ
      - XMPP_AUTH_DOMAIN
      - XMPP_INTERNAL_MUC_DOMAIN
      - JVB_AUTH_USER
      - JVB_AUTH_PASSWORD
      - JVB_BREWERY_MUC
      - JVB_PORT
      - JVB_ADVERTISE_IPS
      - PUBLIC_URL

volumes:
  jitsiWebConfig:
    driver: local
  jitsiWebTranscripts:
    driver: local
  jitsiProsodyConfig:
    driver: local
  jitsiProsodyPlugins:
    driver: local
  jitsiJicofoConfig:
    driver: local
  jitsiJvbConfig:
    driver: local
[variables]
main_domain = "${domain}"
jitsi_image_version = "unstable"
jicofo_auth_password = "${password:32}"
jvb_auth_password = "${password:32}"
jicofo_component_secret = "${password:32}"

[config]
mounts = []

[[config.domains]]
serviceName = "web"
port = 8_000
host = "${main_domain}"

[config.env]
PUBLIC_URL = "https://${main_domain}"
TZ = "UTC"
JITSI_IMAGE_VERSION = "${jitsi_image_version}"
XMPP_DOMAIN = "meet.jitsi"
XMPP_AUTH_DOMAIN = "auth.meet.jitsi"
XMPP_BOSH_URL_BASE = "http://prosody:5280"
XMPP_MUC_DOMAIN = "muc.meet.jitsi"
XMPP_INTERNAL_MUC_DOMAIN = "internal-muc.meet.jitsi"
XMPP_GUEST_DOMAIN = "guest.meet.jitsi"
XMPP_RECORDER_DOMAIN = "recorder.meet.jitsi"
ENABLE_AUTH = "0"
ENABLE_GUESTS = "1"
ENABLE_LETSENCRYPT = "0"
ENABLE_HTTP_REDIRECT = "0"
ENABLE_XMPP_WEBSOCKET = "1"
ENABLE_COLIBRI_WEBSOCKET = "1"
DISABLE_HTTPS = "1"
JICOFO_AUTH_USER = "focus"
JVB_AUTH_USER = "jvb"
JICOFO_AUTH_PASSWORD = "${jicofo_auth_password}"
JVB_AUTH_PASSWORD = "${jvb_auth_password}"
JICOFO_COMPONENT_SECRET = "${jicofo_component_secret}"
JVB_BREWERY_MUC = "jvbbrewery"
JVB_PORT = "10000"
JVB_ADVERTISE_IPS = ""
JWT_APP_ID = ""
JWT_APP_SECRET = ""

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICB3ZWI6XG4gICAgaW1hZ2U6IGppdHNpL3dlYjoke0pJVFNJX0lNQUdFX1ZFUlNJT046LXVuc3RhYmxlfVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcHJvc29keVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGppdHNpV2ViQ29uZmlnOi9jb25maWdcbiAgICAgIC0gaml0c2lXZWJUcmFuc2NyaXB0czovdXNyL3NoYXJlL2ppdHNpLW1lZXQvdHJhbnNjcmlwdHNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUFVCTElDX1VSTFxuICAgICAgLSBUWlxuICAgICAgLSBYTVBQX0RPTUFJTlxuICAgICAgLSBYTVBQX0FVVEhfRE9NQUlOXG4gICAgICAtIFhNUFBfQk9TSF9VUkxfQkFTRVxuICAgICAgLSBYTVBQX01VQ19ET01BSU5cbiAgICAgIC0gWE1QUF9HVUVTVF9ET01BSU5cbiAgICAgIC0gWE1QUF9SRUNPUkRFUl9ET01BSU5cbiAgICAgIC0gRU5BQkxFX0FVVEhcbiAgICAgIC0gRU5BQkxFX0dVRVNUU1xuICAgICAgLSBFTkFCTEVfTEVUU0VOQ1JZUFRcbiAgICAgIC0gRU5BQkxFX0hUVFBfUkVESVJFQ1RcbiAgICAgIC0gRU5BQkxFX1hNUFBfV0VCU09DS0VUXG4gICAgICAtIEVOQUJMRV9DT0xJQlJJX1dFQlNPQ0tFVFxuICAgICAgLSBESVNBQkxFX0hUVFBTXG4gICAgICAtIEpJQ09GT19BVVRIX1VTRVJcbiAgICAgIC0gSlZCX0FVVEhfVVNFUlxuICAgICAgLSBKSUNPRk9fQVVUSF9QQVNTV09SRFxuICAgICAgLSBKVkJfQVVUSF9QQVNTV09SRFxuXG4gIHByb3NvZHk6XG4gICAgaW1hZ2U6IGppdHNpL3Byb3NvZHk6JHtKSVRTSV9JTUFHRV9WRVJTSU9OOi11bnN0YWJsZX1cbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIGppdHNpUHJvc29keUNvbmZpZzovY29uZmlnXG4gICAgICAtIGppdHNpUHJvc29keVBsdWdpbnM6L3Byb3NvZHktcGx1Z2lucy1jdXN0b21cbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gVFpcbiAgICAgIC0gWE1QUF9ET01BSU5cbiAgICAgIC0gWE1QUF9BVVRIX0RPTUFJTlxuICAgICAgLSBYTVBQX01VQ19ET01BSU5cbiAgICAgIC0gWE1QUF9HVUVTVF9ET01BSU5cbiAgICAgIC0gWE1QUF9SRUNPUkRFUl9ET01BSU5cbiAgICAgIC0gSklDT0ZPX0FVVEhfVVNFUlxuICAgICAgLSBKVkJfQVVUSF9VU0VSXG4gICAgICAtIEpJQ09GT19BVVRIX1BBU1NXT1JEXG4gICAgICAtIEpWQl9BVVRIX1BBU1NXT1JEXG4gICAgICAtIEpJQ09GT19DT01QT05FTlRfU0VDUkVUXG4gICAgICAtIEpXVF9BUFBfSURcbiAgICAgIC0gSldUX0FQUF9TRUNSRVRcbiAgICAgIC0gRU5BQkxFX0FVVEhcbiAgICAgIC0gRU5BQkxFX0dVRVNUU1xuXG4gIGppY29mbzpcbiAgICBpbWFnZTogaml0c2kvamljb2ZvOiR7SklUU0lfSU1BR0VfVkVSU0lPTjotdW5zdGFibGV9XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBwcm9zb2R5XG4gICAgdm9sdW1lczpcbiAgICAgIC0gaml0c2lKaWNvZm9Db25maWc6L2NvbmZpZ1xuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBUWlxuICAgICAgLSBYTVBQX0RPTUFJTlxuICAgICAgLSBYTVBQX0FVVEhfRE9NQUlOXG4gICAgICAtIFhNUFBfTVVDX0RPTUFJTlxuICAgICAgLSBYTVBQX0lOVEVSTkFMX01VQ19ET01BSU5cbiAgICAgIC0gSklDT0ZPX0FVVEhfVVNFUlxuICAgICAgLSBKSUNPRk9fQVVUSF9QQVNTV09SRFxuICAgICAgLSBKSUNPRk9fQ09NUE9ORU5UX1NFQ1JFVFxuICAgICAgLSBKVkJfQlJFV0VSWV9NVUNcblxuICBqdmI6XG4gICAgaW1hZ2U6IGppdHNpL2p2Yjoke0pJVFNJX0lNQUdFX1ZFUlNJT046LXVuc3RhYmxlfVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcHJvc29keVxuICAgIHBvcnRzOlxuICAgICAgLSAxMDAwMFxuICAgIHZvbHVtZXM6XG4gICAgICAtIGppdHNpSnZiQ29uZmlnOi9jb25maWdcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gVFpcbiAgICAgIC0gWE1QUF9BVVRIX0RPTUFJTlxuICAgICAgLSBYTVBQX0lOVEVSTkFMX01VQ19ET01BSU5cbiAgICAgIC0gSlZCX0FVVEhfVVNFUlxuICAgICAgLSBKVkJfQVVUSF9QQVNTV09SRFxuICAgICAgLSBKVkJfQlJFV0VSWV9NVUNcbiAgICAgIC0gSlZCX1BPUlRcbiAgICAgIC0gSlZCX0FEVkVSVElTRV9JUFNcbiAgICAgIC0gUFVCTElDX1VSTFxuXG52b2x1bWVzOlxuICBqaXRzaVdlYkNvbmZpZzpcbiAgICBkcml2ZXI6IGxvY2FsXG4gIGppdHNpV2ViVHJhbnNjcmlwdHM6XG4gICAgZHJpdmVyOiBsb2NhbFxuICBqaXRzaVByb3NvZHlDb25maWc6XG4gICAgZHJpdmVyOiBsb2NhbFxuICBqaXRzaVByb3NvZHlQbHVnaW5zOlxuICAgIGRyaXZlcjogbG9jYWxcbiAgaml0c2lKaWNvZm9Db25maWc6XG4gICAgZHJpdmVyOiBsb2NhbFxuICBqaXRzaUp2YkNvbmZpZzpcbiAgICBkcml2ZXI6IGxvY2FsXG5cbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5qaXRzaV9pbWFnZV92ZXJzaW9uID0gXCJ1bnN0YWJsZVwiXG5qaWNvZm9fYXV0aF9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuanZiX2F1dGhfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmppY29mb19jb21wb25lbnRfc2VjcmV0ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5tb3VudHMgPSBbXVxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJ3ZWJcIlxucG9ydCA9IDhfMDAwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG5cbltjb25maWcuZW52XVxuUFVCTElDX1VSTCA9IFwiaHR0cHM6Ly8ke21haW5fZG9tYWlufVwiXG5UWiA9IFwiVVRDXCJcbkpJVFNJX0lNQUdFX1ZFUlNJT04gPSBcIiR7aml0c2lfaW1hZ2VfdmVyc2lvbn1cIlxuWE1QUF9ET01BSU4gPSBcIm1lZXQuaml0c2lcIlxuWE1QUF9BVVRIX0RPTUFJTiA9IFwiYXV0aC5tZWV0LmppdHNpXCJcblhNUFBfQk9TSF9VUkxfQkFTRSA9IFwiaHR0cDovL3Byb3NvZHk6NTI4MFwiXG5YTVBQX01VQ19ET01BSU4gPSBcIm11Yy5tZWV0LmppdHNpXCJcblhNUFBfSU5URVJOQUxfTVVDX0RPTUFJTiA9IFwiaW50ZXJuYWwtbXVjLm1lZXQuaml0c2lcIlxuWE1QUF9HVUVTVF9ET01BSU4gPSBcImd1ZXN0Lm1lZXQuaml0c2lcIlxuWE1QUF9SRUNPUkRFUl9ET01BSU4gPSBcInJlY29yZGVyLm1lZXQuaml0c2lcIlxuRU5BQkxFX0FVVEggPSBcIjBcIlxuRU5BQkxFX0dVRVNUUyA9IFwiMVwiXG5FTkFCTEVfTEVUU0VOQ1JZUFQgPSBcIjBcIlxuRU5BQkxFX0hUVFBfUkVESVJFQ1QgPSBcIjBcIlxuRU5BQkxFX1hNUFBfV0VCU09DS0VUID0gXCIxXCJcbkVOQUJMRV9DT0xJQlJJX1dFQlNPQ0tFVCA9IFwiMVwiXG5ESVNBQkxFX0hUVFBTID0gXCIxXCJcbkpJQ09GT19BVVRIX1VTRVIgPSBcImZvY3VzXCJcbkpWQl9BVVRIX1VTRVIgPSBcImp2YlwiXG5KSUNPRk9fQVVUSF9QQVNTV09SRCA9IFwiJHtqaWNvZm9fYXV0aF9wYXNzd29yZH1cIlxuSlZCX0FVVEhfUEFTU1dPUkQgPSBcIiR7anZiX2F1dGhfcGFzc3dvcmR9XCJcbkpJQ09GT19DT01QT05FTlRfU0VDUkVUID0gXCIke2ppY29mb19jb21wb25lbnRfc2VjcmV0fVwiXG5KVkJfQlJFV0VSWV9NVUMgPSBcImp2YmJyZXdlcnlcIlxuSlZCX1BPUlQgPSBcIjEwMDAwXCJcbkpWQl9BRFZFUlRJU0VfSVBTID0gXCJcIlxuSldUX0FQUF9JRCA9IFwiXCJcbkpXVF9BUFBfU0VDUkVUID0gXCJcIlxuIgp9

Tags

video-conferencing, meetings, self-hosted, webrtc


Version: 1.0.0

On this page