# jitsi
services:
web:
image: jitsi/web:latest
container_name: jitsi
network_mode: bridge
restart: unless-stopped
ports:
- "1180:80"
- "10443:443"
- "11443:8443"
volumes:
- ./web:/config
- ./letsencrypt:/etc/letsencrypt
environment:
- PUBLIC_URL=https://meet.example.com
- ENABLE_AUTH=0
- ENABLE_RECORDING=1
- ENABLE_XMPP_WEBSOCKET=1
- ENABLE_TURN=1
- TURN_CREDENTIALS=your_turn_credentials
- TURN_SERVER=turn:turn.example.com
- TZ=Asia/Shanghai
depends_on:
- prosody
- jicofo
- jvb
prosody:
image: jitsi/prosody:latest
volumes:
- ./prosody:/config
- ./prosody/certs:/prosody/certs
environment:
- XMPP_DOMAIN=meet.example.com
- XMPP_AUTH_DOMAIN=auth.meet.example.com
- XMPP_MODULES=mod_roster,mod_mam,mod_websocket
- PROSODY_SSL_CERT=/prosody/certs/fullchain.pem
- PROSODY_SSL_KEY=/prosody/certs/privkey.pem
jicofo:
image: jitsi/jicofo:latest
volumes:
- ./jicofo:/config
environment:
- XMPP_DOMAIN=meet.example.com
- XMPP_SERVER=prosody
- XMPP_SECRET=your_jicofo_secret
- JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS=1
jvb:
image: jitsi/jvb:latest
ports:
- "10000:10000/udp"
volumes:
- ./jvb:/config
environment:
- DOCKER_HOST_ADDRESS=your_server_ip
- XMPP_SERVER=prosody
- JVB_PORT=10000
privileged: true
volumes:
web:
prosody:
jicofo:
jvb:
letsencrypt: