
Deploy Jitsi on Your Own Server
Free open-source video conferencing for web & mobile
Want to deploy Jitsi on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is Jitsi?
This one click app is based on Jitsi docker image.
Self-Host Jitsi
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
Deploy
Copy the configuration and run it on your server.
services:
jitsi-jicofo:
image: jitsi/jicofo:4416
environment:
HTTPS_PORT: "8443"
HTTP_PORT: "8000"
JIBRI_BREWERY_MUC: jibribrewery
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: /config/finalize.sh
JIBRI_LOGS_DIR: /config/logs
JIBRI_PENDING_TIMEOUT: "90"
JIBRI_RECORDER_PASSWORD: pass
JIBRI_RECORDER_USER: recorder
JIBRI_RECORDING_DIR: /config/recordings
JIBRI_STRIP_DOMAIN_JID: muc
JIBRI_XMPP_PASSWORD: pass
JIBRI_XMPP_USER: jibri
JICOFO_AUTH_PASSWORD: pass
JICOFO_AUTH_USER: focus
JICOFO_COMPONENT_SECRET: pass
JIGASI_BREWERY_MUC: jigasibrewery
JIGASI_PORT_MAX: "20050"
JIGASI_PORT_MIN: "20000"
JIGASI_XMPP_PASSWORD: pass
JIGASI_XMPP_USER: jigasi
JVB_AUTH_PASSWORD: pass
JVB_AUTH_USER: jvb
JVB_BREWERY_MUC: jvbbrewery
JVB_PORT: "10000"
JVB_STUN_SERVERS: meet-jit-si-turnrelay.jitsi.net:443
JVB_TCP_HARVESTER_DISABLED: "true"
JVB_TCP_PORT: "4443"
TZ: Europe/Amsterdam
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_BOSH_URL_BASE: http://jitsi-prosody:5280
XMPP_DOMAIN: meet.jitsi
XMPP_GUEST_DOMAIN: guest.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_INTERNAL_MUC_MODULES: ""
XMPP_MODULES: ""
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_MUC_MODULES: ""
XMPP_RECORDER_DOMAIN: recorder.meet.jitsi
XMPP_SERVER: jitsi-prosody
volumes:
- jitsi-jicofo:/config
depends_on:
- jitsi-prosody
jitsi-jvb:
image: jitsi/jvb:4416
environment:
HTTPS_PORT: "8443"
HTTP_PORT: "8000"
JIBRI_BREWERY_MUC: jibribrewery
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: /config/finalize.sh
JIBRI_LOGS_DIR: /config/logs
JIBRI_PENDING_TIMEOUT: "90"
JIBRI_RECORDER_PASSWORD: pass
JIBRI_RECORDER_USER: recorder
JIBRI_RECORDING_DIR: /config/recordings
JIBRI_STRIP_DOMAIN_JID: muc
JIBRI_XMPP_PASSWORD: pass
JIBRI_XMPP_USER: jibri
JICOFO_AUTH_PASSWORD: pass
JICOFO_AUTH_USER: focus
JICOFO_COMPONENT_SECRET: pass
JIGASI_BREWERY_MUC: jigasibrewery
JIGASI_PORT_MAX: "20050"
JIGASI_PORT_MIN: "20000"
JIGASI_XMPP_PASSWORD: pass
JIGASI_XMPP_USER: jigasi
JVB_AUTH_PASSWORD: pass
JVB_AUTH_USER: jvb
JVB_BREWERY_MUC: jvbbrewery
JVB_PORT: "10000"
JVB_STUN_SERVERS: meet-jit-si-turnrelay.jitsi.net:443
JVB_TCP_HARVESTER_DISABLED: "true"
JVB_TCP_PORT: "4443"
TZ: Europe/Amsterdam
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_BOSH_URL_BASE: http://jitsi-prosody:5280
XMPP_DOMAIN: meet.jitsi
XMPP_GUEST_DOMAIN: guest.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_INTERNAL_MUC_MODULES: ""
XMPP_MODULES: ""
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_MUC_MODULES: ""
XMPP_RECORDER_DOMAIN: recorder.meet.jitsi
XMPP_SERVER: jitsi-prosody
volumes:
- jitsi-jvb:/config
ports:
- $$cap_jvb_udp:$$cap_jvb_udp
- $$cap_jvb_tcp:$$cap_jvb_tcp
depends_on:
- jitsi-prosody
jitsi-prosody:
image: jitsi/prosody:4416
environment:
HTTPS_PORT: "8443"
HTTP_PORT: "8000"
JIBRI_BREWERY_MUC: jibribrewery
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: /config/finalize.sh
JIBRI_LOGS_DIR: /config/logs
JIBRI_PENDING_TIMEOUT: "90"
JIBRI_RECORDER_PASSWORD: pass
JIBRI_RECORDER_USER: recorder
JIBRI_RECORDING_DIR: /config/recordings
JIBRI_STRIP_DOMAIN_JID: muc
JIBRI_XMPP_PASSWORD: pass
JIBRI_XMPP_USER: jibri
JICOFO_AUTH_PASSWORD: pass
JICOFO_AUTH_USER: focus
JICOFO_COMPONENT_SECRET: pass
JIGASI_BREWERY_MUC: jigasibrewery
JIGASI_PORT_MAX: "20050"
JIGASI_PORT_MIN: "20000"
JIGASI_XMPP_PASSWORD: pass
JIGASI_XMPP_USER: jigasi
JVB_AUTH_PASSWORD: pass
JVB_AUTH_USER: jvb
JVB_BREWERY_MUC: jvbbrewery
JVB_PORT: "10000"
JVB_STUN_SERVERS: meet-jit-si-turnrelay.jitsi.net:443
JVB_TCP_HARVESTER_DISABLED: "true"
JVB_TCP_PORT: "4443"
TZ: Europe/Amsterdam
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_BOSH_URL_BASE: http://jitsi-prosody:5280
XMPP_DOMAIN: meet.jitsi
XMPP_GUEST_DOMAIN: guest.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_INTERNAL_MUC_MODULES: ""
XMPP_MODULES: ""
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_MUC_MODULES: ""
XMPP_RECORDER_DOMAIN: recorder.meet.jitsi
XMPP_SERVER: jitsi-prosody
volumes:
- jitsi-prosody:/config
jitsi-web:
image: jitsi/web:4416
environment:
HTTPS_PORT: "8443"
HTTP_PORT: "8000"
JIBRI_BREWERY_MUC: jibribrewery
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: /config/finalize.sh
JIBRI_LOGS_DIR: /config/logs
JIBRI_PENDING_TIMEOUT: "90"
JIBRI_RECORDER_PASSWORD: pass
JIBRI_RECORDER_USER: recorder
JIBRI_RECORDING_DIR: /config/recordings
JIBRI_STRIP_DOMAIN_JID: muc
JIBRI_XMPP_PASSWORD: pass
JIBRI_XMPP_USER: jibri
JICOFO_AUTH_PASSWORD: pass
JICOFO_AUTH_USER: focus
JICOFO_COMPONENT_SECRET: pass
JIGASI_BREWERY_MUC: jigasibrewery
JIGASI_PORT_MAX: "20050"
JIGASI_PORT_MIN: "20000"
JIGASI_XMPP_PASSWORD: pass
JIGASI_XMPP_USER: jigasi
JVB_AUTH_PASSWORD: pass
JVB_AUTH_USER: jvb
JVB_BREWERY_MUC: jvbbrewery
JVB_PORT: "10000"
JVB_STUN_SERVERS: meet-jit-si-turnrelay.jitsi.net:443
JVB_TCP_HARVESTER_DISABLED: "true"
JVB_TCP_PORT: "4443"
TZ: Europe/Amsterdam
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_BOSH_URL_BASE: http://jitsi-prosody:5280
XMPP_DOMAIN: meet.jitsi
XMPP_GUEST_DOMAIN: guest.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_INTERNAL_MUC_MODULES: ""
XMPP_MODULES: ""
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_MUC_MODULES: ""
XMPP_RECORDER_DOMAIN: recorder.meet.jitsi
XMPP_SERVER: jitsi-prosody
volumes:
- jitsi-web:/config
- jitsi-web-transcripts:/usr/share/jitsi-meet/transcripts
ports:
- $$cap_https_port:443
- $$cap_http_port:80
volumes:
jitsi-jicofo: {}
jitsi-jvb: {}
jitsi-prosody: {}
jitsi-web: {}
jitsi-web-transcripts: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:80
Why Self-Host Jitsi?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
jitsi/jicofo:${tag_version}Official Docs
github.comWant to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"