{
    "captainVersion": "2",
    "documentation": "https://github.com/jitsi/docker-jitsi-meet",
    "displayName": "Jitsi",
    "description": "Free open-source video conferencing for web & mobile",
    "dockerCompose": {
        "version": "3",
        "services": {
            "$$cap_appname-web": {
                "image": "jitsi/web:$$cap_tag_version",
                "restart": "unless-stopped",
                "ports": ["$$cap_https_port:443", "$$cap_http_port:80"],
                "volumes": [
                    "$$cap_appname-web:/config",
                    "$$cap_appname-web-transcripts:/usr/share/jitsi-meet/transcripts"
                ],
                "environment": {
                    "JICOFO_COMPONENT_SECRET": "$$cap_password",
                    "JICOFO_AUTH_PASSWORD": "$$cap_password",
                    "JVB_AUTH_PASSWORD": "$$cap_password",
                    "JIGASI_XMPP_PASSWORD": "$$cap_password",
                    "JIBRI_RECORDER_PASSWORD": "$$cap_password",
                    "JIBRI_XMPP_PASSWORD": "$$cap_password",
                    "HTTP_PORT": "$$cap_http_port",
                    "HTTPS_PORT": "$$cap_https_port",
                    "TZ": "$$cap_timezone",
                    "XMPP_DOMAIN": "meet.jitsi",
                    "XMPP_SERVER": "srv-captain--$$cap_appname-prosody",
                    "XMPP_BOSH_URL_BASE": "http://srv-captain--$$cap_appname-prosody:5280",
                    "XMPP_AUTH_DOMAIN": "auth.meet.jitsi",
                    "XMPP_MUC_DOMAIN": "muc.meet.jitsi",
                    "XMPP_INTERNAL_MUC_DOMAIN": "internal-muc.meet.jitsi",
                    "XMPP_GUEST_DOMAIN": "guest.meet.jitsi",
                    "XMPP_MODULES": "",
                    "XMPP_MUC_MODULES": "",
                    "XMPP_INTERNAL_MUC_MODULES": "",
                    "JVB_BREWERY_MUC": "jvbbrewery",
                    "JVB_AUTH_USER": "jvb",
                    "JVB_STUN_SERVERS": "meet-jit-si-turnrelay.jitsi.net:443",
                    "JVB_PORT": "$$cap_jvb_udp",
                    "JVB_TCP_HARVESTER_DISABLED": "true",
                    "JVB_TCP_PORT": "$$cap_jvb_tcp",
                    "JICOFO_AUTH_USER": "focus",
                    "JIGASI_XMPP_USER": "jigasi",
                    "JIGASI_BREWERY_MUC": "jigasibrewery",
                    "JIGASI_PORT_MIN": "20000",
                    "JIGASI_PORT_MAX": "20050",
                    "XMPP_RECORDER_DOMAIN": "recorder.meet.jitsi",
                    "JIBRI_RECORDER_USER": "recorder",
                    "JIBRI_RECORDING_DIR": "/config/recordings",
                    "JIBRI_FINALIZE_RECORDING_SCRIPT_PATH": "/config/finalize.sh",
                    "JIBRI_XMPP_USER": "jibri",
                    "JIBRI_BREWERY_MUC": "jibribrewery",
                    "JIBRI_PENDING_TIMEOUT": "90",
                    "JIBRI_STRIP_DOMAIN_JID": "muc",
                    "JIBRI_LOGS_DIR": "/config/logs"
                }
            },
            "$$cap_appname-prosody": {
                "image": "jitsi/prosody:$$cap_tag_version",
                "notExposeAsWebApp": "true",
                "restart": "unless-stopped",
                "expose": ["5222", "5347", "5280"],
                "volumes": ["$$cap_appname-prosody:/config"],
                "environment": {
                    "JICOFO_COMPONENT_SECRET": "$$cap_password",
                    "JICOFO_AUTH_PASSWORD": "$$cap_password",
                    "JVB_AUTH_PASSWORD": "$$cap_password",
                    "JIGASI_XMPP_PASSWORD": "$$cap_password",
                    "JIBRI_RECORDER_PASSWORD": "$$cap_password",
                    "JIBRI_XMPP_PASSWORD": "$$cap_password",
                    "HTTP_PORT": "$$cap_http_port",
                    "HTTPS_PORT": "$$cap_https_port",
                    "TZ": "$$cap_timezone",
                    "XMPP_DOMAIN": "meet.jitsi",
                    "XMPP_SERVER": "srv-captain--$$cap_appname-prosody",
                    "XMPP_BOSH_URL_BASE": "http://srv-captain--$$cap_appname-prosody:5280",
                    "XMPP_AUTH_DOMAIN": "auth.meet.jitsi",
                    "XMPP_MUC_DOMAIN": "muc.meet.jitsi",
                    "XMPP_INTERNAL_MUC_DOMAIN": "internal-muc.meet.jitsi",
                    "XMPP_GUEST_DOMAIN": "guest.meet.jitsi",
                    "XMPP_MODULES": "",
                    "XMPP_MUC_MODULES": "",
                    "XMPP_INTERNAL_MUC_MODULES": "",
                    "JVB_BREWERY_MUC": "jvbbrewery",
                    "JVB_AUTH_USER": "jvb",
                    "JVB_STUN_SERVERS": "meet-jit-si-turnrelay.jitsi.net:443",
                    "JVB_PORT": "$$cap_jvb_udp",
                    "JVB_TCP_HARVESTER_DISABLED": "true",
                    "JVB_TCP_PORT": "$$cap_jvb_tcp",
                    "JICOFO_AUTH_USER": "focus",
                    "JIGASI_XMPP_USER": "jigasi",
                    "JIGASI_BREWERY_MUC": "jigasibrewery",
                    "JIGASI_PORT_MIN": "20000",
                    "JIGASI_PORT_MAX": "20050",
                    "XMPP_RECORDER_DOMAIN": "recorder.meet.jitsi",
                    "JIBRI_RECORDER_USER": "recorder",
                    "JIBRI_RECORDING_DIR": "/config/recordings",
                    "JIBRI_FINALIZE_RECORDING_SCRIPT_PATH": "/config/finalize.sh",
                    "JIBRI_XMPP_USER": "jibri",
                    "JIBRI_BREWERY_MUC": "jibribrewery",
                    "JIBRI_PENDING_TIMEOUT": "90",
                    "JIBRI_STRIP_DOMAIN_JID": "muc",
                    "JIBRI_LOGS_DIR": "/config/logs"
                }
            },
            "$$cap_appname-jicofo": {
                "image": "jitsi/jicofo:$$cap_tag_version",
                "notExposeAsWebApp": "true",
                "restart": "unless-stopped",
                "volumes": ["$$cap_appname-jicofo:/config"],
                "environment": {
                    "JICOFO_COMPONENT_SECRET": "$$cap_password",
                    "JICOFO_AUTH_PASSWORD": "$$cap_password",
                    "JVB_AUTH_PASSWORD": "$$cap_password",
                    "JIGASI_XMPP_PASSWORD": "$$cap_password",
                    "JIBRI_RECORDER_PASSWORD": "$$cap_password",
                    "JIBRI_XMPP_PASSWORD": "$$cap_password",
                    "HTTP_PORT": "$$cap_http_port",
                    "HTTPS_PORT": "$$cap_https_port",
                    "TZ": "$$cap_timezone",
                    "XMPP_DOMAIN": "meet.jitsi",
                    "XMPP_SERVER": "srv-captain--$$cap_appname-prosody",
                    "XMPP_BOSH_URL_BASE": "http://srv-captain--$$cap_appname-prosody:5280",
                    "XMPP_AUTH_DOMAIN": "auth.meet.jitsi",
                    "XMPP_MUC_DOMAIN": "muc.meet.jitsi",
                    "XMPP_INTERNAL_MUC_DOMAIN": "internal-muc.meet.jitsi",
                    "XMPP_GUEST_DOMAIN": "guest.meet.jitsi",
                    "XMPP_MODULES": "",
                    "XMPP_MUC_MODULES": "",
                    "XMPP_INTERNAL_MUC_MODULES": "",
                    "JVB_BREWERY_MUC": "jvbbrewery",
                    "JVB_AUTH_USER": "jvb",
                    "JVB_STUN_SERVERS": "meet-jit-si-turnrelay.jitsi.net:443",
                    "JVB_PORT": "$$cap_jvb_udp",
                    "JVB_TCP_HARVESTER_DISABLED": "true",
                    "JVB_TCP_PORT": "$$cap_jvb_tcp",
                    "JICOFO_AUTH_USER": "focus",
                    "JIGASI_XMPP_USER": "jigasi",
                    "JIGASI_BREWERY_MUC": "jigasibrewery",
                    "JIGASI_PORT_MIN": "20000",
                    "JIGASI_PORT_MAX": "20050",
                    "XMPP_RECORDER_DOMAIN": "recorder.meet.jitsi",
                    "JIBRI_RECORDER_USER": "recorder",
                    "JIBRI_RECORDING_DIR": "/config/recordings",
                    "JIBRI_FINALIZE_RECORDING_SCRIPT_PATH": "/config/finalize.sh",
                    "JIBRI_XMPP_USER": "jibri",
                    "JIBRI_BREWERY_MUC": "jibribrewery",
                    "JIBRI_PENDING_TIMEOUT": "90",
                    "JIBRI_STRIP_DOMAIN_JID": "muc",
                    "JIBRI_LOGS_DIR": "/config/logs"
                },
                "depends_on": ["$$cap_appname-prosody"]
            },
            "$$cap_appname-jvb": {
                "image": "jitsi/jvb:$$cap_tag_version",
                "notExposeAsWebApp": "true",
                "restart": "unless-stopped",
                "ports": [
                    "$$cap_jvb_udp:$$cap_jvb_udp",
                    "$$cap_jvb_tcp:$$cap_jvb_tcp"
                ],
                "volumes": ["$$cap_appname-jvb:/config"],
                "environment": {
                    "JICOFO_COMPONENT_SECRET": "$$cap_password",
                    "JICOFO_AUTH_PASSWORD": "$$cap_password",
                    "JVB_AUTH_PASSWORD": "$$cap_password",
                    "JIGASI_XMPP_PASSWORD": "$$cap_password",
                    "JIBRI_RECORDER_PASSWORD": "$$cap_password",
                    "JIBRI_XMPP_PASSWORD": "$$cap_password",
                    "HTTP_PORT": "$$cap_http_port",
                    "HTTPS_PORT": "$$cap_https_port",
                    "TZ": "$$cap_timezone",
                    "XMPP_DOMAIN": "meet.jitsi",
                    "XMPP_SERVER": "srv-captain--$$cap_appname-prosody",
                    "XMPP_BOSH_URL_BASE": "http://srv-captain--$$cap_appname-prosody:5280",
                    "XMPP_AUTH_DOMAIN": "auth.meet.jitsi",
                    "XMPP_MUC_DOMAIN": "muc.meet.jitsi",
                    "XMPP_INTERNAL_MUC_DOMAIN": "internal-muc.meet.jitsi",
                    "XMPP_GUEST_DOMAIN": "guest.meet.jitsi",
                    "XMPP_MODULES": "",
                    "XMPP_MUC_MODULES": "",
                    "XMPP_INTERNAL_MUC_MODULES": "",
                    "JVB_BREWERY_MUC": "jvbbrewery",
                    "JVB_AUTH_USER": "jvb",
                    "JVB_STUN_SERVERS": "meet-jit-si-turnrelay.jitsi.net:443",
                    "JVB_PORT": "$$cap_jvb_udp",
                    "JVB_TCP_HARVESTER_DISABLED": "true",
                    "JVB_TCP_PORT": "$$cap_jvb_tcp",
                    "JICOFO_AUTH_USER": "focus",
                    "JIGASI_XMPP_USER": "jigasi",
                    "JIGASI_BREWERY_MUC": "jigasibrewery",
                    "JIGASI_PORT_MIN": "20000",
                    "JIGASI_PORT_MAX": "20050",
                    "XMPP_RECORDER_DOMAIN": "recorder.meet.jitsi",
                    "JIBRI_RECORDER_USER": "recorder",
                    "JIBRI_RECORDING_DIR": "/config/recordings",
                    "JIBRI_FINALIZE_RECORDING_SCRIPT_PATH": "/config/finalize.sh",
                    "JIBRI_XMPP_USER": "jibri",
                    "JIBRI_BREWERY_MUC": "jibribrewery",
                    "JIBRI_PENDING_TIMEOUT": "90",
                    "JIBRI_STRIP_DOMAIN_JID": "muc",
                    "JIBRI_LOGS_DIR": "/config/logs"
                },
                "depends_on": ["$$cap_appname-prosody"]
            }
        }
    },
    "instructions": {
        "end": "Containers were created successfully. You should wait for a few minutes before enter to Jitsi Web.",
        "start": "This one click app is based on Jitsi docker image."
    },
    "variables": [
        {
            "label": "Docker tag version",
            "description": "You can check the version in Docker Hub: https://hub.docker.com/r/jitsi/web/tags",
            "defaultValue": "4416",
            "id": "$$cap_tag_version"
        },
        {
            "label": "HTTP Port",
            "description": "This is the HTTP port to access Jitsi",
            "defaultValue": "8000",
            "id": "$$cap_http_port"
        },
        {
            "label": "HTTPS Port",
            "description": "This is the HTTPS port to access Jitsi",
            "defaultValue": "8443",
            "id": "$$cap_https_port"
        },
        {
            "label": "Timezone",
            "description": "This is the timezone for Jitsi",
            "defaultValue": "Europe/Amsterdam",
            "id": "$$cap_timezone"
        },
        {
            "label": "JVB TCP Port",
            "description": "TCP Port for JVB service",
            "defaultValue": "4443",
            "id": "$$cap_jvb_tcp"
        },
        {
            "label": "JVB UDP Port",
            "description": "UDP Port for JVB service",
            "defaultValue": "10000",
            "id": "$$cap_jvb_udp"
        },
        {
            "label": "Password",
            "description": "This is the password for Jitsi's services",
            "defaultValue": "pass",
            "id": "$$cap_password"
        }
    ]
}
