|
1 | | -# Lab 02 — External Dependencies: jitsi with external PostgreSQL and Redis |
2 | | ---- |
| 1 | +# ============================================================================= |
| 2 | +# IT-Stack — Jitsi — Lab 02: External Dependencies |
| 3 | +# ============================================================================= |
| 4 | +# Adds a coturn TURN/STUN server to the 4-container Jitsi stack. |
| 5 | +# The TURN server enables NAT traversal for clients behind firewalls/NAT, |
| 6 | +# which is required in any real LAN or internet deployment. |
| 7 | +# |
| 8 | +# Services: |
| 9 | +# coturn — coturn 4.6 TURN/STUN server (:3478 TCP/UDP, :5349 TLS) |
| 10 | +# prosody — XMPP server (xmpp.meet.jitsi alias) |
| 11 | +# jicofo — conference focus |
| 12 | +# jvb — video bridge with TURN config (:10000/udp, :4443) |
| 13 | +# web — Jitsi Web (:8443 HTTPS, :8180 HTTP) |
| 14 | +# |
| 15 | +# Usage: |
| 16 | +# docker compose -f docker/docker-compose.lan.yml up -d |
| 17 | +# docker compose -f docker/docker-compose.lan.yml down -v |
| 18 | +# ============================================================================= |
| 19 | + |
| 20 | +networks: |
| 21 | + jitsi-net: |
| 22 | + driver: bridge |
| 23 | + turn-net: |
| 24 | + driver: bridge |
| 25 | + |
| 26 | +volumes: |
| 27 | + jitsi-lan-prosody-config: |
| 28 | + jitsi-lan-prosody-plugins: |
| 29 | + jitsi-lan-jicofo-config: |
| 30 | + jitsi-lan-jvb-config: |
| 31 | + jitsi-lan-web-config: |
| 32 | + |
3 | 33 | services: |
4 | | - jitsi: |
5 | | - image: jitsi/web:stable |
6 | | - container_name: it-stack-jitsi |
7 | | - restart: unless-stopped |
| 34 | + |
| 35 | + coturn: |
| 36 | + image: coturn/coturn:4.6 |
| 37 | + container_name: jitsi-lan-coturn |
8 | 38 | ports: |
9 | | - - "443:$firstPort" |
| 39 | + - "3478:3478/tcp" |
| 40 | + - "3478:3478/udp" |
| 41 | + - "5349:5349/tcp" |
| 42 | + - "5349:5349/udp" |
| 43 | + command: > |
| 44 | + --listening-port=3478 |
| 45 | + --tls-listening-port=5349 |
| 46 | + --min-port=49152 |
| 47 | + --max-port=49200 |
| 48 | + --lt-cred-mech |
| 49 | + --fingerprint |
| 50 | + --realm=lab.local |
| 51 | + --user=jitsi:TurnPass1! |
| 52 | + --log-file=stdout |
| 53 | + --no-cli |
| 54 | + networks: |
| 55 | + - turn-net |
| 56 | + - jitsi-net |
| 57 | + restart: unless-stopped |
| 58 | + |
| 59 | + prosody: |
| 60 | + image: jitsi/prosody:stable-9753 |
| 61 | + container_name: jitsi-lan-prosody |
10 | 62 | environment: |
11 | | - - IT_STACK_ENV=lab-02-lan |
12 | | - - DB_HOST= |
13 | | - - DB_PORT=5432 |
14 | | - - REDIS_HOST= |
| 63 | + AUTH_TYPE: internal |
| 64 | + ENABLE_AUTH: "1" |
| 65 | + ENABLE_GUESTS: "1" |
| 66 | + JICOFO_AUTH_PASSWORD: JicofoPass1! |
| 67 | + JVB_AUTH_PASSWORD: JvbPass1! |
| 68 | + JICOFO_COMPONENT_SECRET: JicofoSecret1! |
| 69 | + XMPP_DOMAIN: meet.jitsi |
| 70 | + XMPP_AUTH_DOMAIN: auth.meet.jitsi |
| 71 | + XMPP_GUEST_DOMAIN: guest.meet.jitsi |
| 72 | + XMPP_MUC_DOMAIN: muc.meet.jitsi |
| 73 | + XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi |
| 74 | + TURN_HOST: coturn |
| 75 | + TURN_PORT: "3478" |
| 76 | + TURN_CREDENTIALS: TurnPass1! |
| 77 | + TZ: UTC |
| 78 | + volumes: |
| 79 | + - jitsi-lan-prosody-config:/config |
| 80 | + - jitsi-lan-prosody-plugins:/prosody-plugins-custom |
15 | 81 | networks: |
16 | | - - it-stack-net |
| 82 | + jitsi-net: |
| 83 | + aliases: |
| 84 | + - xmpp.meet.jitsi |
| 85 | + restart: unless-stopped |
17 | 86 |
|
18 | | - # Lightweight local DB for lab (replace with lab-db1 in real env) |
19 | | - postgres: |
20 | | - image: postgres:16 |
21 | | - container_name: it-stack-jitsi-db |
| 87 | + jicofo: |
| 88 | + image: jitsi/jicofo:stable-9753 |
| 89 | + container_name: jitsi-lan-jicofo |
22 | 90 | environment: |
23 | | - POSTGRES_DB: jitsi_db |
24 | | - POSTGRES_USER: jitsi_user |
25 | | - POSTGRES_PASSWORD: jitsi_pass |
| 91 | + AUTH_TYPE: internal |
| 92 | + JICOFO_AUTH_PASSWORD: JicofoPass1! |
| 93 | + JICOFO_COMPONENT_SECRET: JicofoSecret1! |
| 94 | + XMPP_SERVER: xmpp.meet.jitsi |
| 95 | + XMPP_DOMAIN: meet.jitsi |
| 96 | + XMPP_AUTH_DOMAIN: auth.meet.jitsi |
| 97 | + XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi |
| 98 | + TZ: UTC |
26 | 99 | volumes: |
27 | | - - jitsi_pg_data:/var/lib/postgresql/data |
| 100 | + - jitsi-lan-jicofo-config:/config |
28 | 101 | networks: |
29 | | - - it-stack-net |
| 102 | + - jitsi-net |
| 103 | + depends_on: |
| 104 | + - prosody |
| 105 | + restart: unless-stopped |
30 | 106 |
|
31 | | -networks: |
32 | | - it-stack-net: |
33 | | - driver: bridge |
| 107 | + jvb: |
| 108 | + image: jitsi/jvb:stable-9753 |
| 109 | + container_name: jitsi-lan-jvb |
| 110 | + ports: |
| 111 | + - "10000:10000/udp" |
| 112 | + - "4443:4443" |
| 113 | + environment: |
| 114 | + JVB_AUTH_PASSWORD: JvbPass1! |
| 115 | + XMPP_SERVER: xmpp.meet.jitsi |
| 116 | + XMPP_DOMAIN: meet.jitsi |
| 117 | + XMPP_AUTH_DOMAIN: auth.meet.jitsi |
| 118 | + XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi |
| 119 | + DOCKER_HOST_ADDRESS: 127.0.0.1 |
| 120 | + # TURN configuration |
| 121 | + JVB_STUN_SERVERS: coturn:3478 |
| 122 | + TURN_HOST: coturn |
| 123 | + TURN_PORT: "3478" |
| 124 | + TURN_CREDENTIALS: TurnPass1! |
| 125 | + TZ: UTC |
| 126 | + volumes: |
| 127 | + - jitsi-lan-jvb-config:/config |
| 128 | + networks: |
| 129 | + - jitsi-net |
| 130 | + depends_on: |
| 131 | + - prosody |
| 132 | + restart: unless-stopped |
34 | 133 |
|
35 | | -volumes: |
36 | | - jitsi_pg_data: |
| 134 | + web: |
| 135 | + image: jitsi/web:stable-9753 |
| 136 | + container_name: jitsi-lan-web |
| 137 | + ports: |
| 138 | + - "8443:443" |
| 139 | + - "8180:80" |
| 140 | + environment: |
| 141 | + ENABLE_AUTH: "1" |
| 142 | + ENABLE_GUESTS: "1" |
| 143 | + PUBLIC_URL: https://localhost:8443 |
| 144 | + XMPP_SERVER: xmpp.meet.jitsi |
| 145 | + XMPP_BOSH_URL_BASE: http://xmpp.meet.jitsi:5280 |
| 146 | + XMPP_DOMAIN: meet.jitsi |
| 147 | + XMPP_AUTH_DOMAIN: auth.meet.jitsi |
| 148 | + XMPP_GUEST_DOMAIN: guest.meet.jitsi |
| 149 | + XMPP_MUC_DOMAIN: muc.meet.jitsi |
| 150 | + JVB_TCP_HARVESTER_DISABLED: "true" |
| 151 | + # TURN configuration for web clients |
| 152 | + TURN_HOST: coturn |
| 153 | + TURN_PORT: "3478" |
| 154 | + TURN_CREDENTIALS: TurnPass1! |
| 155 | + TZ: UTC |
| 156 | + volumes: |
| 157 | + - jitsi-lan-web-config:/config |
| 158 | + networks: |
| 159 | + - jitsi-net |
| 160 | + depends_on: |
| 161 | + - prosody |
| 162 | + - jicofo |
| 163 | + - jvb |
| 164 | + healthcheck: |
| 165 | + test: ["CMD-SHELL", "curl -sk https://localhost/ -o /dev/null -w '%{http_code}' | grep -E '^(200|301|302)$'"] |
| 166 | + interval: 30s |
| 167 | + timeout: 10s |
| 168 | + retries: 10 |
| 169 | + start_period: 60s |
| 170 | + restart: unless-stopped |
0 commit comments