bigbluebutton / docker

Docker files for BigBlueButton
GNU Lesser General Public License v3.0
359 stars 240 forks source link

No Audio on fresh installation #199

Open btxtiger opened 2 years ago

btxtiger commented 2 years ago

I just did a fresh installation twice and always get the error code 1007 when trying to connect w/ audio.

From docker logs:

webrtc-sfu_1        | 2022-02-25T00:52:46.697Z - error: [mcs-freeswitch-esl-wrapper] FreeSWITCH ESL connection received error ETIMEDOUT errno=-110, code=ETIMEDOUT, syscall=connect, address=10.7.7.1, port=8021
fsesl-akka_1        | 2022-02-25T00:52:47.521Z INFO  o.b.f.v.f.ConnectionManager - Attempting to connect to FreeSWITCH ESL
fsesl-akka_1        | 2022-02-25T00:52:47.536Z WARN  o.f.e.c.i.InboundClientHandler - connection timed out
webrtc-sfu_1        | reconnect to server 2 200 undefined
fsesl-akka_1        | 2022-02-25T00:52:49.523Z ERROR o.b.f.v.f.ConnectionManager - Failed to connect to ESL
webrtc-sfu_1        | 2022-02-25T00:52:49.700Z - error: [mcs-balancer] Failed to connect to media server url=ws://kurento:8888/kurento, ip=94.16.105.26, mediaType=undefined, retries=23
...
html5-frontend-1_1  | info: Active connections
html5-frontend-2_1  | info: Active connections {"ae9665b978dcaef6b88ecd732391a8b24fab8908-1645750044462":{"w_e0zwtlz86wcq":["zpFZ8jiphdnwJCGAk"]}}
fsesl-akka_1        | 2022-02-25T00:52:52.521Z INFO  o.b.f.v.f.ConnectionManager - Attempting to connect to FreeSWITCH ESL
fsesl-akka_1        | 2022-02-25T00:52:52.536Z WARN  o.f.e.c.i.InboundClientHandler - connection timed out
fsesl-akka_1        | 2022-02-25T00:52:52.542Z DEBUG o.b.freeswitch.RxJsonMsgHdlrActor - handling to-voice-conf-redis-channel - {"envelope":{"name":"CheckRunningAndRecordingToVoiceConfSysMsg","routing":{"sender":"bbb-apps-akka"},"timestamp":1645750372540},"core":{"header":{"name":"CheckRunningAndRecordingToVoiceConfSysMsg","meetingId":"ae9665b978dcaef6b88ecd732391a8b24fab8908-1645750044462"},"body":{"voiceConf":"16938","meetingId":"ae9665b978dcaef6b88ecd732391a8b24fab8908-1645750044462"}}}
fsesl-akka_1        | 2022-02-25T00:52:52.543Z INFO  o.b.f.v.f.FreeswitchApplication - Queue message: conference 16938 xml_list
fsesl-akka_1        | 2022-02-25T00:52:52.544Z INFO  o.b.f.v.f.FreeswitchApplication - Sending message: conference 16938 xml_list
webrtc-sfu_1        | 2022-02-25T00:52:52.841Z - error: [mcs-freeswitch-esl-wrapper] FreeSWITCH ESL connection received error ETIMEDOUT errno=-110, code=ETIMEDOUT, syscall=connect, address=10.7.7.1, port=8021
fsesl-akka_1        | 2022-02-25T00:52:54.523Z ERROR o.b.f.v.f.ConnectionManager - Failed to connect to ESL

Docker is running as reverse proxy, cert paths passed to coturn. The host runs Ubuntu 20.04 LTS, but this usually shouldn't matter w/ docker.

Anth0rx commented 1 year ago

I receive a similar error from fsesl-akka_1 complaining about not being able to connect to FreeSWITCH at 10.7.7.1:8021:

2023-02-07T12:13:20.458Z ERROR o.b.f.v.f.ConnectionManager - Failed to connect to ESL
2023-02-07T12:13:20.458Z WARN  o.f.e.c.i.InboundClientHandler - No route to host
2023-02-07T12:13:25.454Z INFO  o.b.f.v.f.ConnectionManager - Attempting to connect to FreeSWITCH ESL
2023-02-07T12:13:25.457Z WARN  o.f.esl.client.inbound.Client - Failed to connect to [10.7.7.1:8021]
2023-02-07T12:13:25.458Z WARN  o.f.esl.client.inbound.Client -   * reason: {}
java.net.NoRouteToHostException: No route to host
    at java.base/sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(Unknown Source)
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:401)
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:370)
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:292)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
2023-02-07T12:13:25.459Z WARN  o.f.e.c.i.InboundClientHandler - No route to host
2023-02-07T12:13:25.459Z ERROR o.b.f.v.f.ConnectionManager - Failed to connect to ESL

My docker-compose.yml looks like this:

# auto generated by ./scripts/generate
# don't edit this directly.

version: '3.6'

# html5 templates
x-html5-backend: &html5backend
  build: 
    context: mod/html5
    args:
      BBB_BUILD_TAG: v2022-03-30
      TAG_HTML5: v2.5.7
  image: alangecker/bbb-docker-html5:v2.5.7
  restart: unless-stopped
  depends_on:
    - redis
    - mongodb
    - etherpad
  environment: &html5backend-env
    DOMAIN: ${DOMAIN}
    CLIENT_TITLE: ${CLIENT_TITLE}
    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
# =========================

services:
  bbb-web:
    build: 
      context: mod/bbb-web
      args:
        BBB_BUILD_TAG: v2022-03-30
        TAG_COMMON_MESSAGE: v2.5.7
        TAG_BBB_WEB: v2.5.8
    image: alangecker/bbb-docker-web:v2.5.8
    restart: unless-stopped
    depends_on:
        - redis
        - etherpad
    healthcheck:
      test: wget --no-proxy --no-verbose --tries=1 --spider http://10.7.7.2:8090/bigbluebutton/api || exit 1
      start_period: 2m
    environment:
      DEV_MODE: ${DEV_MODE:-}
      DOMAIN: ${DOMAIN}
      ENABLE_RECORDING: ${ENABLE_RECORDING:-false}
      SHARED_SECRET: ${SHARED_SECRET}
      WELCOME_MESSAGE: ${WELCOME_MESSAGE:-}
      WELCOME_FOOTER: ${WELCOME_FOOTER}
      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: 2
    volumes:
      - bigbluebutton:/var/bigbluebutton
      - vol-freeswitch:/var/freeswitch/meetings
    networks:
      bbb-net:
        ipv4_address: 10.7.7.2

  html5-backend-1:
    <<: *html5backend
    environment:
      <<: *html5backend-env
      INSTANCE_ID: 1
      PORT: 4000
    networks:
      bbb-net:
        ipv4_address: 10.7.7.100

  html5-backend-2:
    <<: *html5backend
    environment:
      <<: *html5backend-env
      INSTANCE_ID: 2
      PORT: 4001
    networks:
      bbb-net:
        ipv4_address: 10.7.7.101

  html5-frontend-1:
    <<: *html5frontend
    environment:
      <<: *html5frontend-env
      INSTANCE_ID: 1
      PORT: 4100
    networks:
      bbb-net:
        ipv4_address: 10.7.7.200

  html5-frontend-2:
    <<: *html5frontend
    environment:
      <<: *html5frontend-env
      INSTANCE_ID: 2
      PORT: 4101
    networks:
      bbb-net:
        ipv4_address: 10.7.7.201

  freeswitch:
    container_name: bbb-freeswitch
    build: 
      context: mod/freeswitch
      args:
        TAG_FS_CONFIG: v2.5.7
    image: alangecker/bbb-docker-freeswitch:v2.5.7
    restart: unless-stopped
    cap_add:
      - IPC_LOCK
      - NET_ADMIN
      - NET_RAW
      - NET_BROADCAST
      - SYS_NICE
      - SYS_RESOURCE
    environment:
      DOMAIN: ${DOMAIN}
      EXTERNAL_IPv4: ${EXTERNAL_IPv4}
      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}
    volumes:
      - ./conf/sip_profiles:/etc/freeswitch/sip_profiles/external
      - ./conf/dialplan_public:/etc/freeswitch/dialplan/public_docker
      - vol-freeswitch:/var/freeswitch/meetings
    network_mode: host

  nginx:
    build:
      context: mod/nginx
      args:
        TAG_LEARNING_DASHBOARD: v2.5.5
    image: alangecker/bbb-docker-nginx:1.21-v4.0.0-v2.5.5
    restart: unless-stopped
    depends_on:
      - etherpad
      - webrtc-sfu
      - html5-backend-1
    volumes:
      - bigbluebutton:/var/bigbluebutton
      - html5-static:/html5-static:ro
      - ${DEFAULT_PRESENTATION:-/dev/null}:/www/default.pdf
    network_mode: host
    extra_hosts:
      - "host.docker.internal:10.7.7.1"
      - "bbb-web:10.7.7.2"
      - "etherpad:10.7.7.4"
      - "webrtc-sfu:10.7.7.1"
      - "html5:10.7.7.11"

  etherpad:
    build: mod/etherpad
    image: alangecker/bbb-docker-etherpad:1.8.18-3
    restart: unless-stopped
    depends_on:
      - redis
    environment:
      ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
    networks:
      bbb-net:
        ipv4_address: 10.7.7.4

  bbb-pads:
    build: mod/bbb-pads
    image: alangecker/bbb-docker-pads:v1.2.2
    restart: unless-stopped
    depends_on:
      - redis
      - etherpad
    environment:
      ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
    networks:
      bbb-net:
        ipv4_address: 10.7.7.18

  redis:
    image: redis:7.0-alpine
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 1s
      timeout: 3s
      retries: 30
    networks:
      bbb-net:
        ipv4_address: 10.7.7.5

  mongodb:
    container_name: bbb-mongodb
    image: mongo:4.4
    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
    healthcheck:
      test: bash -c "if mongo --eval 'quit(db.runCommand({ ping':' 1 }).ok ? 0 ':' 2)'; then exit 0; fi; exit 1;"
    networks:
      bbb-net:
        ipv4_address: 10.7.7.6

  #  TODO: remove as soon as not required anymore by webrtc-sfu
  kurento:
    image: kurento/kurento-media-server:6.18
    restart: unless-stopped
    network_mode: host
    volumes:
      - vol-kurento:/var/kurento

  webrtc-sfu:
    build: 
      context: mod/webrtc-sfu
      args:
        BBB_BUILD_TAG: v2022-03-30
    image: alangecker/bbb-docker-webrtc-sfu:v2.8.6
    restart: unless-stopped
    depends_on:
      - redis
      - freeswitch
    environment:
      CLIENT_HOST: 10.7.7.1
      REDIS_HOST: 10.7.7.5
      FREESWITCH_IP: 10.7.7.1
      FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
      ESL_IP: 10.7.7.1
      ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
      # TODO: add mediasoup IPv6
      # TODO: can listen to 0.0.0.0 for nat support? https://github.com/versatica/mediasoup/issues/487

      MS_WEBRTC_LISTEN_IPS: '[{"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'

      MS_RTP_LISTEN_IP: '{"ip":"0.0.0.0", "announcedIp":"${EXTERNAL_IPv4}"}'
    volumes:
      - vol-mediasoup:/var/mediasoup
    tmpfs:
      - /var/log/bbb-webrtc-sfu
    network_mode: host

  fsesl-akka:
    build: 
      context: mod/fsesl-akka
      args:
        BBB_BUILD_TAG: v2022-03-30
        TAG_COMMON_MESSAGE: v2.5.7
        TAG_FSESL_AKKA: v2.5.7
    image: alangecker/bbb-docker-fsesl-akka:v2.5.7
    restart: unless-stopped
    depends_on:
      - redis
      - freeswitch
    environment:
      FSESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
    networks:
      bbb-net:
        ipv4_address: 10.7.7.14

  apps-akka:
    build: 
      context: mod/apps-akka
      args:
        BBB_BUILD_TAG: v2022-03-30
        TAG_COMMON_MESSAGE: v2.5.7
        TAG_APPS_AKKA: v2.5.7
    image: alangecker/bbb-docker-apps-akka:v2.5.7
    restart: unless-stopped
    depends_on:
      - redis
    environment:
      DOMAIN: ${DOMAIN}
      SHARED_SECRET: ${SHARED_SECRET}
    volumes:
      - vol-freeswitch:/var/freeswitch/meetings
    networks:
      bbb-net:
        ipv4_address: 10.7.7.15

  jodconverter:
    build: mod/jodconverter
    image: alangecker/bbb-docker-jodconverter:latest
    security_opt:
      - 'no-new-privileges:true'
    restart: unless-stopped
    tmpfs:
      - /tmp
    deploy:
      resources:
        limits:
          memory: 512M
    networks:
      bbb-net:
        ipv4_address: 10.7.7.20

  periodic:
    build: mod/periodic
    image: alangecker/bbb-docker-periodic:v2.5.0-rc.1
    restart: unless-stopped
    depends_on:
      - mongodb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - bigbluebutton:/var/bigbluebutton
      - vol-mediasoup:/var/mediasoup
    tmpfs:
      - /var/log/bigbluebutton
    environment:
      ENABLE_RECORDING: ${ENABLE_RECORDING}
      REMOVE_OLD_RECORDING: ${REMOVE_OLD_RECORDING}
      RECORDING_MAX_AGE_DAYS: ${RECORDING_MAX_AGE_DAYS}
    networks:
      bbb-net:
        ipv4_address: 10.7.7.12

  # recordings
  recordings:
    build: 
      context: mod/recordings
      args:
        BBB_BUILD_TAG: v2022-03-30
        TAG_RECORDINGS: v2.5.7
    image: alangecker/bbb-docker-recordings:v2.5.7
    restart: unless-stopped
    depends_on:
      - redis
      - bbb-pads
    environment:
      DOMAIN: ${DOMAIN}
    volumes:
      - bigbluebutton:/var/bigbluebutton
      - vol-freeswitch:/var/freeswitch/meetings
      - vol-mediasoup:/var/mediasoup
      - vol-kurento:/var/kurento
    tmpfs:
      - /var/log/bigbluebutton
      - /tmp
    networks:
      bbb-net:
        ipv4_address: 10.7.7.16

  # coturn
  coturn:
    image: coturn/coturn:4.6-alpine
    restart: unless-stopped
    command:
      - "--external-ip=${EXTERNAL_IPv4}/${EXTERNAL_IPv4}"
      - "--external-ip=${EXTERNAL_IPv6:-::1}/${EXTERNAL_IPv6:-::1}"
      - "--static-auth-secret=${TURN_SECRET}"
    volumes:

      - ${COTURN_TLS_CERT_PATH}:/tmp/cert.pem
      - ${COTURN_TLS_KEY_PATH}:/tmp/key.pem

      - ./mod/coturn/entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
      - ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf
    environment:
      ENABLE_HTTPS_PROXY:
    user: root
    network_mode: host

volumes:
  bigbluebutton:
  vol-freeswitch:
  vol-kurento:
  vol-mediasoup:
  html5-static:

networks:
  bbb-net:
    ipam:
      driver: default
      config:
        - subnet: "10.7.7.0/24"
rocheston commented 1 year ago

I have the same problem too. No audio.

EpicJosch commented 1 year ago

Same problem