docker/docker-compose.tmpl.yml

424 lines
11 KiB
YAML
Raw Normal View History

{{/* if you read this, you can ignore the following lines */}}
# auto generated by ./scripts/generate
# don't edit this directly.
{{/* -------- */}}
2020-04-09 15:43:58 +02:00
version: '3.6'
2020-04-09 08:48:47 +02:00
# html5 templates
x-html5-backend: &html5backend
build: mod/html5
image: bbb-html5
restart: unless-stopped
depends_on:
- redis
- mongodb
- etherpad
environment: &html5backend-env
DOMAIN: ${DOMAIN}
CLIENT_TITLE: ${CLIENT_TITLE}
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
DISABLE_VIDEO_PREVIEW: ${DISABLE_VIDEO_PREVIEW:-false}
CHAT_ENABLED: ${CHAT_ENABLED:-true}
CHAT_START_CLOSED: ${CHAT_START_CLOSED:-false}
BREAKOUTROOM_LIMIT: ${BREAKOUTROOM_LIMIT:-8}
DEV_MODE: ${DEV_MODE:-}
BBB_HTML5_ROLE: backend
x-html5-frontend: &html5frontend
<<: *html5backend
volumes:
- html5-static:/html5-static:rw
environment: &html5frontend-env
<<: *html5backend-env
BBB_HTML5_ROLE: frontend
# =========================
2019-12-09 04:34:03 +01:00
services:
bbb-web:
build: mod/bbb-web
restart: unless-stopped
2020-04-11 10:43:25 +02:00
depends_on:
- redis
2021-02-22 16:43:17 +01:00
healthcheck:
test: wget --no-proxy --no-verbose --tries=1 --spider http://10.7.7.2:8090/bigbluebutton/api || exit 1
2021-02-22 16:43:17 +01:00
start_period: 2m
2019-12-09 04:34:03 +01:00
environment:
2020-07-22 00:39:28 +02:00
DEV_MODE: ${DEV_MODE:-}
DOMAIN: ${DOMAIN}
ENABLE_RECORDING: ${ENABLE_RECORDING:-false}
SHARED_SECRET: ${SHARED_SECRET}
WELCOME_MESSAGE: ${WELCOME_MESSAGE:-}
WELCOME_FOOTER: ${WELCOME_FOOTER}
2020-05-15 23:21:03 +02:00
STUN_SERVER: stun:${STUN_IP}:${STUN_PORT}
TURN_SERVER: ${TURN_SERVER:-}
TURN_SECRET: ${TURN_SECRET:-}
ENABLE_LEARNING_DASHBOARD: ${ENABLE_LEARNING_DASHBOARD:-true}
NUMBER_OF_BACKEND_NODEJS_PROCESSES: {{ .Env.NUMBER_OF_BACKEND_NODEJS_PROCESSES }}
2019-12-09 04:34:03 +01:00
volumes:
2020-08-27 10:46:16 +02:00
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- vol-kurento:/var/kurento
2020-05-15 21:13:59 +02:00
networks:
bbb-net:
ipv4_address: 10.7.7.2
2020-04-09 08:48:47 +02:00
{{ range $i := loop 0 (atoi .Env.NUMBER_OF_BACKEND_NODEJS_PROCESSES) }}
html5-backend-{{ add $i 1 }}:
<<: *html5backend
environment:
<<: *html5backend-env
INSTANCE_ID: {{ add $i 1 }}
PORT: {{ add 4000 $i }}
networks:
bbb-net:
ipv4_address: 10.7.7.{{ add 100 $i }}
{{end}}
{{ range $i := loop 0 (atoi .Env.NUMBER_OF_FRONTEND_NODEJS_PROCESSES) }}
html5-frontend-{{ add $i 1 }}:
<<: *html5frontend
environment:
<<: *html5frontend-env
INSTANCE_ID: {{ add $i 1 }}
PORT: {{ add 4100 $i }}
networks:
bbb-net:
ipv4_address: 10.7.7.{{ add 200 $i }}
{{end}}
2020-05-14 15:21:21 +02:00
freeswitch:
build: mod/freeswitch
2020-06-06 20:06:28 +02:00
restart: unless-stopped
2020-05-14 15:21:21 +02:00
cap_add:
- IPC_LOCK
- NET_ADMIN
- NET_RAW
- NET_BROADCAST
- SYS_NICE
- SYS_RESOURCE
environment:
DOMAIN: ${DOMAIN}
2020-07-12 19:15:40 +02:00
EXTERNAL_IPv4: ${EXTERNAL_IPv4}
2020-07-13 17:40:55 +02:00
EXTERNAL_IPv6: ${EXTERNAL_IPv6:-::1}
SIP_IP_ALLOWLIST: ${SIP_IP_ALLOWLIST:-}
DISABLE_SOUND_MUTED: ${DISABLE_SOUND_MUTED:-false}
DISABLE_SOUND_ALONE: ${DISABLE_SOUND_ALONE:-false}
SOUNDS_LANGUAGE: ${SOUNDS_LANGUAGE:-en-us-callie}
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
2020-05-14 15:21:21 +02:00
volumes:
- ./conf/sip_profiles:/etc/freeswitch/sip_profiles/external
- ./conf/dialplan_public:/etc/freeswitch/dialplan/public_docker
- vol-freeswitch:/var/freeswitch/meetings
2020-05-14 15:21:21 +02:00
network_mode: host
2020-04-09 08:48:47 +02:00
nginx:
build: mod/nginx
restart: unless-stopped
2020-04-09 18:15:06 +02:00
depends_on:
- etherpad
- webrtc-sfu
- html5-backend-1
2020-04-09 08:48:47 +02:00
volumes:
2020-08-27 10:46:16 +02:00
- bigbluebutton:/var/bigbluebutton
2020-12-22 00:41:01 +01:00
- html5-static:/html5-static:ro
- ${DEFAULT_PRESENTATION:-/dev/null}:/www/default.pdf
2020-07-12 19:15:40 +02:00
network_mode: host
2020-04-09 08:48:47 +02:00
extra_hosts:
- "host.docker.internal:10.7.7.1"
2021-04-17 18:24:00 +02:00
- "bbb-web:10.7.7.2"
2020-07-12 19:15:40 +02:00
- "etherpad:10.7.7.4"
- "webrtc-sfu:10.7.7.10"
- "html5:10.7.7.11"
2020-04-09 08:48:47 +02:00
2020-04-09 15:43:58 +02:00
etherpad:
build: mod/etherpad
restart: unless-stopped
2020-04-09 18:15:06 +02:00
depends_on:
- redis
2020-04-09 15:43:58 +02:00
environment:
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
networks:
2020-04-12 16:01:57 +02:00
bbb-net:
2020-04-09 15:43:58 +02:00
ipv4_address: 10.7.7.4
2020-04-09 08:48:47 +02:00
2020-04-09 15:43:58 +02:00
redis:
2021-04-10 11:48:01 +02:00
image: redis:6.2-alpine
restart: unless-stopped
2021-02-17 23:30:48 +01:00
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 1s
timeout: 3s
retries: 30
2020-04-09 15:43:58 +02:00
networks:
2020-04-12 16:01:57 +02:00
bbb-net:
ipv4_address: 10.7.7.5
2020-04-09 18:13:18 +02:00
2020-04-09 18:27:47 +02:00
mongodb:
2020-12-23 23:58:24 +01:00
image: mongo:4.4
2020-06-06 20:06:28 +02:00
restart: unless-stopped
volumes:
- ./mod/mongo/mongod.conf:/etc/mongod.conf
- ./mod/mongo/init-replica.sh:/docker-entrypoint-initdb.d/init-replica.sh
tmpfs:
- /data/configdb
- /data/db
command: mongod --config /etc/mongod.conf --oplogSize 8 --replSet rs0 --noauth
2021-02-22 16:34:40 +01:00
healthcheck:
test: bash -c "if mongo --eval 'quit(db.runCommand({ ping':' 1 }).ok ? 0 ':' 2)'; then exit 0; fi; exit 1;"
2020-04-09 18:27:47 +02:00
networks:
2020-04-12 16:01:57 +02:00
bbb-net:
2020-04-09 18:27:47 +02:00
ipv4_address: 10.7.7.6
2020-04-09 18:13:18 +02:00
kurento:
2021-04-10 11:48:01 +02:00
image: kurento/kurento-media-server:6.16
restart: unless-stopped
environment:
2020-04-10 13:29:06 +02:00
KMS_STUN_IP: ${STUN_IP}
KMS_STUN_PORT: ${STUN_PORT}
2020-04-09 18:13:18 +02:00
KMS_MIN_PORT: 24577
KMS_MAX_PORT: 32768
KMS_TURN_URL:
KMS_NETWORK_INTERFACES: ${NETWORK_INTERFACE:-}
2020-09-29 20:24:00 +02:00
GST_DEBUG: 3,Kurento*:4,kms*:4,KurentoWebSocketTransport:5
2020-04-09 18:15:06 +02:00
network_mode: host
volumes:
- vol-kurento:/var/kurento
2020-04-09 18:15:06 +02:00
webrtc-sfu:
2021-02-11 20:17:42 +01:00
build: mod/webrtc-sfu
restart: unless-stopped
2020-04-09 18:15:06 +02:00
depends_on:
- redis
- kurento
environment:
CLIENT_HOST: 0.0.0.0
KURENTO_NAME: kurento
REDIS_HOST: redis
FREESWITCH_IP: host.docker.internal
2020-07-12 19:15:40 +02:00
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
2020-04-09 18:15:06 +02:00
ESL_IP: host.docker.internal
2021-04-30 20:20:40 +02:00
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
2020-04-11 10:43:25 +02:00
LOG_LEVEL: info
2020-07-12 19:15:40 +02:00
NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IPv4}","url":"ws://kurento:8888/kurento"}]}'
2020-04-09 18:15:06 +02:00
ports:
- "127.0.0.1:3008:3008"
extra_hosts:
- host.docker.internal:10.7.7.1
- kurento:10.7.7.1
networks:
bbb-net:
ipv4_address: 10.7.7.10
2020-04-09 18:15:06 +02:00
2020-07-12 15:30:16 +02:00
fsesl-akka:
build: mod/fsesl-akka
restart: unless-stopped
2020-12-23 23:58:24 +01:00
depends_on:
- redis
environment:
FSESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
2020-07-12 15:30:16 +02:00
networks:
bbb-net:
ipv4_address: 10.7.7.14
2020-10-27 19:55:43 +01:00
apps-akka:
build: mod/apps-akka
restart: unless-stopped
2020-12-23 23:58:24 +01:00
depends_on:
- redis
2020-10-27 19:55:43 +01:00
environment:
DOMAIN: ${DOMAIN}
SHARED_SECRET: ${SHARED_SECRET}
volumes:
- vol-freeswitch:/var/freeswitch/meetings
networks:
bbb-net:
ipv4_address: 10.7.7.15
2021-04-02 18:23:05 +02:00
jodconverter:
2021-04-28 16:07:22 +02:00
build: mod/jodconverter
2020-09-06 22:02:22 +02:00
restart: unless-stopped
2021-04-02 18:23:05 +02:00
deploy:
resources:
limits:
memory: 512M
2020-09-06 22:02:22 +02:00
networks:
bbb-net:
2021-04-02 18:23:05 +02:00
ipv4_address: 10.7.7.20
2020-05-22 14:56:45 +02:00
periodic:
build: mod/periodic
restart: unless-stopped
depends_on:
- mongodb
volumes:
- /var/run/docker.sock:/var/run/docker.sock
2020-08-27 10:46:16 +02:00
- bigbluebutton:/var/bigbluebutton
2021-10-17 20:26:26 +02:00
tmpfs:
- /var/log/bigbluebutton
environment:
ENABLE_RECORDING: ${ENABLE_RECORDING}
REMOVE_OLD_RECORDING: ${REMOVE_OLD_RECORDING}
RECORDING_MAX_AGE_DAYS: ${RECORDING_MAX_AGE_DAYS}
2020-05-22 14:56:45 +02:00
networks:
bbb-net:
ipv4_address: 10.7.7.12
2020-05-22 14:56:45 +02:00
{{ if isTrue .Env.ENABLE_RECORDING }}
# recordings
recordings:
build: mod/recordings
restart: unless-stopped
depends_on:
- redis
environment:
DOMAIN: ${DOMAIN}
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- vol-kurento:/var/kurento
tmpfs:
- /var/log/bigbluebutton
- /tmp
networks:
bbb-net:
ipv4_address: 10.7.7.16
{{end}}
{{ if isTrue .Env.ENABLE_WEBHOOKS }}
# webhooks
webhooks:
build: mod/webhooks
restart: unless-stopped
environment:
DOMAIN: ${DOMAIN}
SHARED_SECRET: ${SHARED_SECRET}
depends_on:
- redis
networks:
bbb-net:
ipv4_address: 10.7.7.17
{{end}}
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
# https
https_proxy:
image: valian/docker-nginx-auto-ssl
restart: unless-stopped
volumes:
- ssl_data:/etc/resty-auto-ssl
{{ if .Env.EXTERNAL_IPv6 }}
- ./mod/https/site.conf:/etc/nginx/conf.d/bbb-docker.conf
{{else}}
- ./mod/https/site-ipv4only.conf:/etc/nginx/conf.d/bbb-docker.conf
{{end}}
environment:
{{ if isTrue .Env.DEV_MODE }}
ALLOWED_DOMAINS: ""
{{else}}
ALLOWED_DOMAINS: ${DOMAIN}
{{end}}
network_mode: host
{{end}}
{{ if isTrue .Env.ENABLE_COTURN }}
# coturn
coturn:
image: instrumentisto/coturn:4.5
restart: unless-stopped
command:
- "--external-ip=${EXTERNAL_IPv4}/${EXTERNAL_IPv4}"
- "--external-ip=${EXTERNAL_IPv6:-::1}/${EXTERNAL_IPv6:-::1}"
- "--static-auth-secret=${TURN_SECRET}"
volumes:
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
- ssl_data:/etc/resty-auto-ssl
{{else}}
- ${COTURN_TLS_CERT_PATH}:/tmp/cert.pem
- ${COTURN_TLS_KEY_PATH}:/tmp/key.pem
{{end}}
- ./mod/coturn/entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
- ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf
environment:
ENABLE_HTTPS_PROXY:
network_mode: host
{{end}}
{{ if isTrue .Env.ENABLE_GREENLIGHT }}
# greenlight
greenlight:
image: bigbluebutton/greenlight:v2
restart: unless-stopped
env_file: .env
environment:
DB_ADAPTER: postgresql
DB_HOST: postgres
DB_NAME: greenlight
DB_USERNAME: postgres
DB_PASSWORD: ${POSTGRESQL_SECRET:-password}
{{ if isTrue .Env.DEV_MODE }}
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1:8080/bigbluebutton/api/
{{else}}
BIGBLUEBUTTON_ENDPOINT: https://${DOMAIN}/bigbluebutton/api/
{{end}}
BIGBLUEBUTTON_SECRET: ${SHARED_SECRET}
SECRET_KEY_BASE: ${RAILS_SECRET}
ports:
- 10.7.7.1:5000:80
postgres:
image: postgres:12-alpine
restart: unless-stopped
environment:
POSTGRES_DB: greenlight
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRESQL_SECRET:-password}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./postgres-data:/var/lib/postgresql/data
{{end}}
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
# prometheus
prometheus-exporter:
image: greenstatic/bigbluebutton-exporter:v0.7.0-preview2
restart: unless-stopped
environment:
API_BASE_URL: http://10.7.7.1:8080/bigbluebutton/api/
API_SECRET: ${SHARED_SECRET}
2021-11-27 12:31:26 +01:00
RECORDINGS_METRICS_READ_FROM_DISK: "${ENABLE_PROMETHEUS_EXPORTER_OPTIMIZATION:-false}"
networks:
bbb-net:
ipv4_address: 10.7.7.33
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER_OPTIMIZATION }}
volumes:
- bigbluebutton:/var/bigbluebutton:ro
{{end}}
{{end}}
2020-04-11 11:29:50 +02:00
volumes:
bigbluebutton:
vol-freeswitch:
vol-kurento:
2020-12-22 00:41:01 +01:00
html5-static:
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
ssl_data:
{{end}}
2020-04-11 11:29:50 +02:00
2020-04-09 08:48:47 +02:00
networks:
2020-04-12 16:01:57 +02:00
bbb-net:
2020-04-09 08:48:47 +02:00
ipam:
2020-04-09 15:43:58 +02:00
driver: default
config:
- subnet: "10.7.7.0/24"