alangecker / bigbluebutton-docker Goto Github PK
View Code? Open in Web Editor NEWThis project forked from bigbluebutton/docker
merged into https://github.com/bigbluebutton/docker
License: GNU Lesser General Public License v3.0
This project forked from bigbluebutton/docker
merged into https://github.com/bigbluebutton/docker
License: GNU Lesser General Public License v3.0
currently IPv6 is disabled in all components since I didn't manage to make it work.
If anyone feels a little bit more skilled with IPv6 than me it would be great if you could work on that! :)
This is merely a suggestion, since it can be expected of admins to figure out the appropriate configs files by reading the BBB docs and maintaining a separate branch or writing script to re-apply their configuration after updating the the local checkout.
However the comprehensive .env file that @alangecker provided, already includes a lot of settings and I'd like to discuss, if it would make sense to include a few more, that may be of interest for "bbb-beginners" (like me ^^) and eventually make a BBB-conference feel a bit more like a Jitsi-conference (in terms of UX), while remaining more compatible to most devices than the latter ;)
Also if BBB decides to merge this repo and provide images on dockerhub the .env file might be the most accessible way to configure most non-ui settings persistently.
Proposals:
mod/core/web/bigbluebutton.properties
Setting defaultWelcomeMessage
/usr/share/freeswitch/sounds/en/us/callie/conference/*/*.wav
mod/html5/settings.yml
Setting skipCheck: true
mod/html5/settings.yml
Setting listenOnlyMode: false
mod/html5/settings.yml
Setting autoShareWebcam: true
I followed your installation instruction on a new and empty Debian buster on a VM directly connected to the Internet.
First everything looks fine. I was able to log into Greenlight and start a conference with another person. Audio is working fine, also the presentation is visible on the other side and both can "scrible" on it.
But neither screen sharing nor Video is working. I can see myself in the browser, but nobody else can see themself nor me.
Using the "full installation" of bbb-install.sh on the same machine shows video too. So it must something within the docker environment or a missing port.
~/bbb-docker# ./scripts/compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------
bbb-docker_core_1 /entrypoint.sh Up
bbb-docker_coturn_1 docker-entrypoint.sh --ext ... Up
bbb-docker_etherpad_1 /entrypoint.sh Up 9001/tcp
bbb-docker_freeswitch_1 /bin/sh -c /entrypoint.sh Up
bbb-docker_html5_1 /entrypoint.sh Up
bbb-docker_https_proxy_1 /entrypoint.sh /usr/local/ ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
bbb-docker_kurento_1 /entrypoint.sh Up (healthy)
bbb-docker_mongodb_1 docker-entrypoint.sh mongod Up 27017/tcp
bbb-docker_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8080->80/tcp
bbb-docker_periodic_1 /entrypoint.sh Up
bbb-docker_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
bbb-docker_redis_1 docker-entrypoint.sh redis ... Up 127.0.0.1:6379->6379/tcp
bbb-docker_webrtc-sfu_1 ./docker-entrypoint.sh npm ... Up 127.0.0.1:3008->3008/tcp
greenlight bin/start Up 10.7.7.1:5000->80/tcp
When I have a look at the bare metal installation, I can see:
Netid Local Address:Port
udp <external-ipv4>:5060 users:(("freeswitch",pid=27594,fd=29))
udp <external-ipv4>:5090 users:(("freeswitch",pid=27594,fd=48))
udp *:1337 users:(("freeswitch",pid=27594,fd=60))
udp *:68 users:(("dhclient",pid=931,fd=6))
udp <external-ipv6>:5060 users:(("freeswitch",pid=27594,fd=36))
udp :::5070 users:(("java",pid=27548,fd=264))
udp <external-ipv6>:5090 users:(("freeswitch",pid=27594,fd=43))
tcp *:80 users:(("nginx",pid=27797,fd=7),("nginx",pid=27796,fd=7),("nginx",pid=27787,fd=7))
tcp <external-ipv4>:8081 users:(("freeswitch",pid=27594,fd=58))
tcp <external-ipv4>:8082 users:(("freeswitch",pid=27594,fd=59))
tcp <external-ipv4>:7443 users:(("freeswitch",pid=27594,fd=32))
tcp *:22 users:(("sshd",pid=15296,fd=3))
tcp 127.0.0.1:5432 users:(("docker-proxy",pid=1572,fd=4))
tcp *:3000 users:(("node",pid=28125,fd=16))
tcp *:443 users:(("nginx",pid=27797,fd=9),("nginx",pid=27796,fd=9),("nginx",pid=27787,fd=9))
tcp 127.0.0.1:3008 users:(("node",pid=7778,fd=15))
tcp 127.0.0.1:3010 users:(("node",pid=7801,fd=13))
tcp <external-ipv4>:5090 users:(("freeswitch",pid=27594,fd=49))
tcp 127.0.0.1:8100 users:(("soffice.bin",pid=29040,fd=13))
tcp <external-ipv4>:5060 users:(("freeswitch",pid=27594,fd=30))
tcp 127.0.0.1:8101 users:(("soffice.bin",pid=29113,fd=13))
tcp 127.0.0.1:8102 users:(("soffice.bin",pid=29181,fd=13))
tcp 127.0.0.1:8103 users:(("soffice.bin",pid=29259,fd=13))
tcp 127.0.0.1:5000 users:(("docker-proxy",pid=1701,fd=4))
tcp 127.0.0.1:8104 users:(("soffice.bin",pid=29335,fd=13))
tcp 127.0.0.1:9001 users:(("node",pid=27556,fd=12))
tcp 127.0.1.1:27017 users:(("mongod",pid=27677,fd=8))
tcp <external-ipv4>:5066 users:(("freeswitch",pid=27594,fd=31))
tcp 127.0.0.1:6379 users:(("redis-server",pid=27739,fd=4))
tcp :::5070 users:(("java",pid=27548,fd=265))
tcp :::9999 users:(("java",pid=27548,fd=127))
tcp :::1935 users:(("java",pid=27548,fd=111))
tcp :::8080 users:(("java",pid=27809,fd=53))
tcp :::80 users:(("nginx",pid=27797,fd=8),("nginx",pid=27796,fd=8),("nginx",pid=27787,fd=8))
tcp <external-ipv6>:8081 users:(("freeswitch",pid=27594,fd=55))
tcp <external-ipv6>:8082 users:(("freeswitch",pid=27594,fd=56))
tcp <external-ipv6>:7443 users:(("freeswitch",pid=27594,fd=39))
tcp :::8021 users:(("freeswitch",pid=27594,fd=65))
tcp :::22 users:(("sshd",pid=15296,fd=4))
tcp :::8888 users:(("kurento-media-s",pid=7777,fd=9))
tcp :::5080 users:(("java",pid=27548,fd=114))
tcp ::ffff:127.0.0.1:8090 users:(("java",pid=27577,fd=401))
tcp :::443 users:(("nginx",pid=27797,fd=10),("nginx",pid=27796,fd=10),("nginx",pid=27787,fd=10))
tcp <external-ipv6>:5090 users:(("freeswitch",pid=27594,fd=44))
tcp ::ffff:127.0.0.1:8900 users:(("java",pid=27686,fd=93))
tcp <external-ipv6>:5060 users:(("freeswitch",pid=27594,fd=37))
tcp ::ffff:127.0.0.1:8005 users:(("java",pid=27809,fd=55))
tcp <external-ipv6>:5066 users:(("freeswitch",pid=27594,fd=38))
So, there are ports open for freeswitch. I don't know enough about freeswitch and if it is necessary to transfer the video. Maybe it's because of COTURN (I've enabled it, but there is no open port for it) - i'm absolutly not sure what is the reason and I'm not sure, if the log will help you:
webrtc-sfu_1 | 2020-07-29T12:21:06.872Z - info: [mcs-controller] User morning-field-BX5RK~L joined room 15984 as SFU
webrtc-sfu_1 | 2020-07-29T12:21:06.874Z - info: [mcs-controller] Publish from user morning-field-BX5RK~L in room 15984
webrtc-sfu_1 | 2020-07-29T12:21:06.877Z - info: [mcs-sdp-session] New session created {"type":"WebRtcEndpoint","memberType":"mediaSession","mediaSessionId":"dawn-haze-5oBkRDL","mediaId":"dawn-haze-5oBkRDL","medias":[],"roomId":"15984","userId":"morning-field-BX5RK~L","name":"bigbluebutton|publish|video|w_2s1izzsom1a3|15984","mediaTypes":{"video":false,"audio":false,"text":false,"content":false,"application":false,"message":false},"isMuted":false,"volume":50,"strategy":"freewill"}
webrtc-sfu_1 | 2020-07-29T12:21:06.878Z - info: [mcs-sfu-user] Added new SDP session dawn-haze-5oBkRDL to user morning-field-BX5RK~L
webrtc-sfu_1 | 2020-07-29T12:21:06.880Z - info: [mcs-sdp-media] New media created {"type":"WebRtcEndpoint","memberType":"media","mediaSessionId":"dawn-haze-5oBkRDL","mediaId":"lively-sea-NcBCG9V","roomId":"15984","userId":"morning-field-BX5RK~L","name":"bigbluebutton|publish|video|w_2s1izzsom1a3|15984","muted":false,"volume":50,"talking":false,"mediaTypes":{"video":"sendonly","audio":false,"text":false,"content":false,"application":false,"message":false},"subscribedTo":"","strategy":"freewill","adapterElementId":null}
webrtc-sfu_1 | 2020-07-29T12:21:06.880Z - info: [mcs-balancer] Getting host for mediaType: main
webrtc-sfu_1 | 2020-07-29T12:21:06.880Z - info: [mcs-balancer] Chosen host is {"id":"muddy-shape-4OZH35M","url":"ws://kurento:8888/kurento","ip":"aaa.bbb.ccc.ddd","mediaType":"all","medias":{"main":2,"content":0,"audio":0}}
kurento_1 | 0:43:03.718267058 1 0x7f992c001b30 INFO KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:104:remove_not_supported_codecs_from_array:<kmswebrtcendpoint10> Removing not supported codec 'AMR/8000'
kurento_1 | 0:43:03.718513902 1 0x7f992c001b30 INFO KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:516:WebRtcEndpointImpl: Predefined external IP address: aaa.bbb.ccc.ddd
kurento_1 | 0:43:03.718704653 1 0x7f992c001b30 INFO KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:551:WebRtcEndpointImpl: Using STUN reflexive server: aaa.bbb.ccc.ddd:3478
kurento_1 | 0:43:03.718738778 1 0x7f992c001b30 INFO KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:571:WebRtcEndpointImpl: TURN server not found in config; remember that NAT traversal requires STUN or TURN
webrtc-sfu_1 | 2020-07-29T12:21:06.886Z - info: [mcs-media] Tracking media UNIT events mediaId=lively-sea-NcBCG9V, mediaSessionId=dawn-haze-5oBkRDL, roomId=15984, adapterElementId=411e3bad-549a-44a9-99f6-cfb803200008_kurento.MediaPipeline/31809b8f-4a59-4636-92cd-c6206952f0d0_kurento.WebRtcEndpoint
kurento_1 | 0:43:03.729985118 1 0x7f99100016d0 FIXME basesink gstbasesink.c:3125:gst_base_sink_default_event:<nicesink10> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
kurento_1 | 0:43:03.731296013 1 0x7f993c016e30 INFO basertpendpoint kmsbasertpendpoint.c:1118:kms_base_rtp_endpoint_start_transport_send:<kmswebrtcendpoint10> Media 'video' has REMB
kurento_1 | 0:43:03.731349634 1 0x7f993c016e30 INFO basertpendpoint kmsbasertpendpoint.c:1064:kms_base_rtp_endpoint_create_remb_manager:<kmswebrtcendpoint10> Creating REMB for session ID 0 (kmswebrtcendpoint10-sess0) and remote video SSRC 3859184274
kurento_1 | 0:43:03.731363948 1 0x7f993c016e30 INFO basertpendpoint kmsbasertpendpoint.c:1075:kms_base_rtp_endpoint_create_remb_manager:<kmswebrtcendpoint10> REMB: Set RTCP min interval to 500 ms
kurento_1 | 0:43:03.732930434 1 0x7f9904007ca0 FIXME default gstutils.c:3766:gst_pad_create_stream_id_internal:<nicesrc10:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
webrtc-sfu_1 | 2020-07-29T12:21:06.900Z - info: [mcs-balancer] Host muddy-shape-4OZH35M main streams incremented {"main":3,"content":0,"audio":0}
webrtc-sfu_1 | 2020-07-29T12:21:06.902Z - info: [video] Set new source media at w_2s1izzsom1a3 cameraId=w_2s1izzsom1a3, mediaId=dawn-haze-5oBkRDL
webrtc-sfu_1 | 2020-07-29T12:21:06.903Z - info: [video] Video start succeeded userId=w_2s1izzsom1a3, roomId=15984, internalMeetingId=683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632, streamName=10w_2s1izzsom1a3-share, mediaId=dawn-haze-5oBkRDL, status=MEDIA_NEGOTIATED, role=share, cameraId=w_2s1izzsom1a3, connectionId=10, sessionId=10-w_2s1izzsom1a3-share
webrtc-sfu_1 | 2020-07-29T12:21:06.903Z - info: [VideoManager] Video session started sfuMessageId=start, connectionId=10, sessionId=10-w_2s1izzsom1a3-share, internalMeetingId=683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632, roomId=15984, userId=w_2s1izzsom1a3, role=share
html5_1 | info: {"logCode":"video_provider_start_response_success","logDescription":"Camera start request was accepted by SFU, processing response for w_2s1izzsom1a3","connectionId":"epbRKtQnDz2H8jxmi","extraInfo":{"sfuResponse":{"connectionId":10,"type":"video","role":"share","id":"startResponse","cameraId":"w_2s1izzsom1a3","sdpAnswer":"v=0\r\no=- 3805014066 3805014066 IN IP4 0.0.0.0\r\ns=Kurento Media Server\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=sendrecv\r\na=fingerprint:sha-256 2A:0A:12:75:94:5D:C3:BE:26:A5:B4:21:D2:1E:55:F1:22:B5:29:E0:11:58:C6:FA:46:D8:7F:74:75:65:14:A3\r\na=ice-options:trickle\r\na=msid-semantic: WMS *\r\na=group:BUNDLE 0\r\nm=video 1 UDP/TLS/RTP/SAVPF 120\r\nb=TIAS:200000\r\nb=AS:200\r\na=rtpmap:120 VP8/90000\r\na=fmtp:120 max-fs=12288;max-fr=60\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 goog-remb\r\na=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=setup:active\r\na=mid:0\r\na=recvonly\r\na=ice-ufrag:Educ\r\na=ice-pwd:WIT0EnTq8HiXRUP97TXG8X\r\na=fingerprint:sha-256 8E:D7:DE:DD:62:49:E0:66:58:9C:C7:69:AC:0C:05:77:A6:CB:AC:2A:DC:21:03:FE:60:DE:0F:11:06:5D:F0:3C\r\na=ssrc:4016346656 cname:user4093408363@host-867959ff\r\na=rtcp-mux\r\na=content:main\r\n"},"cameraId":"w_2s1izzsom1a3","clientURL":"https://ac-hcn0003.domain.net/html5client/join?sessionToken=lsf1qrtmvat4tj6h","validUser":"valid"},"userInfo":{"sessionToken":"lsf1qrtmvat4tj6h","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","requesterUserId":"w_2s1izzsom1a3","fullname":"Thoralf","confname":"Home Room","externUserID":"gl-guest-3f1af557c0187d0e60e5a8ce","uniqueClientSession":"lsf1qrtmvat4tj6h-tm2z7h"}}
webrtc-sfu_1 | 2020-07-29T12:21:09.048Z - info: [video] Video ICE gathering done userId=w_2s1izzsom1a3, roomId=15984, internalMeetingId=683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632, streamName=10w_2s1izzsom1a3-share, mediaId=dawn-haze-5oBkRDL, status=MEDIA_NEGOTIATED, role=share, cameraId=w_2s1izzsom1a3, connectionId=10, sessionId=10-w_2s1izzsom1a3-share, elementId=411e3bad-549a-44a9-99f6-cfb803200008_kurento.MediaPipeline/31809b8f-4a59-4636-92cd-c6206952f0d0_kurento.WebRtcEndpoint
kurento_1 | 0:43:12.130922361 1 0x7f9918003a30 INFO KurentoServerMethods ServerMethods.cpp:814:ping: WebSocket Ping/Pong with sessionId 82db4d6c-c34a-4aee-9eef-3f71bd7caea9
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:19.772Z INFO o.b.f.v.f.FreeswitchApplication - Queue message: conference 15984 xml_list
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:19.774Z INFO o.b.f.v.f.FreeswitchApplication - Sending message: conference 15984 xml_list
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:19.776Z DEBUG o.b.freeswitch.RxJsonMsgHdlrActor - handling to-voice-conf-redis-channel - {"envelope":{"name":"GetUsersStatusToVoiceConfSysMsg","routing":{"sender":"bbb-apps-akka"},"timestamp":1596025279761},"core":{"header":{"name":"GetUsersStatusToVoiceConfSysMsg","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632"},"body":{"voiceConf":"15984","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632"}}}
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:19.779Z INFO o.b.f.v.f.a.GetUsersStatusCommand - Conf user. uuid=2ae14c86-c3d0-4485-a241-1a6a9190aa66,caller=Administrator,clientSession=2,callerId=w_dlmx9fpktfni_2-bbbID-Administrator,conf=15984,muted=false,talking=false
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:21.775Z DEBUG o.b.freeswitch.RxJsonMsgHdlrActor - handling to-voice-conf-redis-channel - {"envelope":{"name":"CheckRunningAndRecordingToVoiceConfSysMsg","routing":{"sender":"bbb-apps-akka"},"timestamp":1596025281770},"core":{"header":{"name":"CheckRunningAndRecordingToVoiceConfSysMsg","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632"},"body":{"voiceConf":"15984","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632"}}}
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:21.781Z INFO o.b.f.v.f.FreeswitchApplication - Queue message: conference 15984 xml_list
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:21.783Z INFO o.b.f.v.f.FreeswitchApplication - Sending message: conference 15984 xml_list
core_1 | bbb-fsesl-akka | 2020-07-29T12:21:21.789Z WARN o.b.f.v.FreeswitchConferenceEventListener - Voice conf running but not recording. conf=15984,running=true,rec=false
webrtc-sfu_1 | 2020-07-29T12:21:21.850Z - info: [video] Stopping video session 10w_2s1izzsom1a3-share userId=w_2s1izzsom1a3, roomId=15984, internalMeetingId=683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632, streamName=10w_2s1izzsom1a3-share, mediaId=dawn-haze-5oBkRDL, status=MEDIA_NEGOTIATED, role=share, cameraId=w_2s1izzsom1a3, connectionId=10, sessionId=10-w_2s1izzsom1a3-share
webrtc-sfu_1 | 2020-07-29T12:21:21.854Z - info: [mcs-controller] Unpublishing media dawn-haze-5oBkRDL of user morning-field-BX5RK~L
webrtc-sfu_1 | 2020-07-29T12:21:21.855Z - info: [mcs-user] Stopping media session dawn-haze-5oBkRDL
html5_1 | error: {"logCode":"video_provider_camera_share_timeout","logDescription":"Camera SHARER has not succeeded in 15000 for w_2s1izzsom1a3","connectionId":"epbRKtQnDz2H8jxmi","extraInfo":{"cameraId":"w_2s1izzsom1a3","clientURL":"https://ac-hcn0003.domain.net/html5client/join?sessionToken=lsf1qrtmvat4tj6h","validUser":"valid"},"userInfo":{"sessionToken":"lsf1qrtmvat4tj6h","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","requesterUserId":"w_2s1izzsom1a3","fullname":"Thoralf","confname":"Home Room","externUserID":"gl-guest-3f1af557c0187d0e60e5a8ce","uniqueClientSession":"lsf1qrtmvat4tj6h-tm2z7h"}}
webrtc-sfu_1 | 2020-07-29T12:21:21.860Z - info: [mcs-balancer] Host muddy-shape-4OZH35M main streams decremented {"main":2,"content":0,"audio":0}
webrtc-sfu_1 | 2020-07-29T12:21:21.860Z - info: [mcs-media] Session lively-sea-NcBCG9V stopped with status STOPPED
webrtc-sfu_1 | 2020-07-29T12:21:21.860Z - info: [mcs-kurento-adapter] Releasing endpoint 411e3bad-549a-44a9-99f6-cfb803200008_kurento.MediaPipeline/31809b8f-4a59-4636-92cd-c6206952f0d0_kurento.WebRtcEndpoint from room 15984
webrtc-sfu_1 | 2020-07-29T12:21:21.861Z - info: [mcs-user] User's media session stopped due to an internal trigger. userId=morning-field-BX5RK~L, mediaSessionId=dawn-haze-5oBkRDL
webrtc-sfu_1 | 2020-07-29T12:21:21.863Z - info: [video] Remove source media from w_2s1izzsom1a3 cameraId=w_2s1izzsom1a3
webrtc-sfu_1 | 2020-07-29T12:21:21.863Z - info: [video] Stopped video session 10w_2s1izzsom1a3-share userId=w_2s1izzsom1a3, roomId=15984, internalMeetingId=683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632, streamName=10w_2s1izzsom1a3-share, mediaId=dawn-haze-5oBkRDL, status=MEDIA_STOPPED, role=share, cameraId=w_2s1izzsom1a3, connectionId=10, sessionId=10-w_2s1izzsom1a3-share
webrtc-sfu_1 | 2020-07-29T12:21:21.864Z - info: [VideoManager] Video session destroyed sfuMessageId=stop, connectionId=10, sessionId=10-w_2s1izzsom1a3-share, internalMeetingId=undefined, roomId=undefined, userId=undefined, role=share
html5_1 | info: {"logCode":"video_provider_unsharewebcam","logDescription":"Sending unshare webcam notification to meteor","connectionId":"epbRKtQnDz2H8jxmi","extraInfo":{"clientURL":"https://ac-hcn0003.domain.net/html5client/join?sessionToken=lsf1qrtmvat4tj6h","validUser":"valid"},"userInfo":{"sessionToken":"lsf1qrtmvat4tj6h","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","requesterUserId":"w_2s1izzsom1a3","fullname":"Thoralf","confname":"Home Room","externUserID":"gl-guest-3f1af557c0187d0e60e5a8ce","uniqueClientSession":"lsf1qrtmvat4tj6h-tm2z7h"}}
html5_1 | info: user unsharing webcam: 683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632 w_2s1izzsom1a3
core_1 | bbb-apps-akka | 2020-07-29T12:21:21.879Z INFO o.b.core2.AnalyticsActor - -- analytics -- {"envelope":{"name":"UserBroadcastCamStopMsg","routing":{"meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","userId":"w_2s1izzsom1a3"},"timestamp":1596025281876},"core":{"header":{"name":"UserBroadcastCamStopMsg","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","userId":"w_2s1izzsom1a3"},"body":{"stream":"w_2s1izzsom1a3"}}}
webrtc-sfu_1 | 2020-07-29T12:21:21.877Z - info: [mcs-kurento-adapter] Pipeline has a total of 2 active elements
html5_1 | info: {"logCode":"video_provider_stopping_webcam_sfu","logDescription":"Sending stop request to SFU. Camera: w_2s1izzsom1a3, role share and flag restarting false","connectionId":"epbRKtQnDz2H8jxmi","extraInfo":{"clientURL":"https://ac-hcn0003.domain.net/html5client/join?sessionToken=lsf1qrtmvat4tj6h","validUser":"valid"},"userInfo":{"sessionToken":"lsf1qrtmvat4tj6h","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","requesterUserId":"w_2s1izzsom1a3","fullname":"Thoralf","confname":"Home Room","externUserID":"gl-guest-3f1af557c0187d0e60e5a8ce","uniqueClientSession":"lsf1qrtmvat4tj6h-tm2z7h"}}
html5_1 | info: {"logCode":"video_provider_destroywebrtcpeer","logDescription":"Disposing WebRTC peer w_2s1izzsom1a3","connectionId":"epbRKtQnDz2H8jxmi","extraInfo":{"clientURL":"https://ac-hcn0003.domain.net/html5client/join?sessionToken=lsf1qrtmvat4tj6h","validUser":"valid"},"userInfo":{"sessionToken":"lsf1qrtmvat4tj6h","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","requesterUserId":"w_2s1izzsom1a3","fullname":"Thoralf","confname":"Home Room","externUserID":"gl-guest-3f1af557c0187d0e60e5a8ce","uniqueClientSession":"lsf1qrtmvat4tj6h-tm2z7h"}}
html5_1 | warn: {"logCode":"videolistitem_component_play_maybe_error","logDescription":"Could not play video tag due to AbortError","connectionId":"epbRKtQnDz2H8jxmi","extraInfo":{"error":{},"clientURL":"https://ac-hcn0003.domain.net/html5client/join?sessionToken=lsf1qrtmvat4tj6h","validUser":"valid"},"userInfo":{"sessionToken":"lsf1qrtmvat4tj6h","meetingId":"683aabace39823d14cdac6e193b8dcfc60b55bcd-1596025069632","requesterUserId":"w_2s1izzsom1a3","fullname":"Thoralf","confname":"Home Room","externUserID":"gl-guest-3f1af557c0187d0e60e5a8ce","uniqueClientSession":"lsf1qrtmvat4tj6h-tm2z7h"}}
The env settings:
# HTTPS Proxy
# fully automated Lets Encrypt certificates
ENABLE_HTTPS_PROXY=true
# coturn (a TURN Server)
# requires HTTPS Proxy to be enabled
ENABLE_COTURN=true
# Greenlight Frontend
# https://docs.bigbluebutton.org/greenlight/gl-overview.html
ENABLE_GREENLIGHT=true
# Enable Webhooks
# used by some integrations
#ENABLE_WEBHOOKS=true
....
I installed the bbb-docker successfully on a ubuntu 16.04 system, and then move the containers to a centos 8.2 system. But this error prevent me from using it, I printed the logs and found that the bbb-web is keeping restart. The useful logs are copied here.
core_1 | bbb-web | 03:28:44,912 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1961945640 - No compression will be used
core_1 | bbb-web | 03:28:44,914 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1961945640 - Will use the pattern /var/log/bigbluebutton/bbb-web.%d{yyyy-MM-dd}.log for the active file
core_1 | bbb-web | 03:28:44,926 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern '/var/log/bigbluebutton/bbb-web.%d{yyyy-MM-dd}.log'.
core_1 | bbb-web | 03:28:44,926 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
core_1 | bbb-web | 03:28:44,941 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Thu Aug 20 10:03:09 UTC 2020
core_1 | bbb-web | 03:28:44,944 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - This appender no longer admits a layout as a sub-component, set an encoder instead.
core_1 | bbb-web | 03:28:44,944 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
core_1 | bbb-web | 03:28:44,944 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
core_1 | bbb-web | 03:28:44,946 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: logs/bbb-web.log
core_1 | bbb-web | 03:28:44,946 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [logs/bbb-web.log]
core_1 | bbb-web | 03:28:44,948 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(logs/bbb-web.log,true) call failed. java.io.FileNotFoundException: logs/bbb-web.log (Permission denied)
core_1 | bbb-web | at java.io.FileNotFoundException: logs/bbb-web.log (Permission denied)
core_1 | bbb-web | at at java.io.FileOutputStream.open0(Native Method)
core_1 | bbb-web | at at java.io.FileOutputStream.open(FileOutputStream.java:270)
core_1 | bbb-web | at at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
core_1 | bbb-web | at at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:26)
core_1 | bbb-web | at at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:204)
core_1 | bbb-web | at at ch.qos.logback.core.FileAppender.start(FileAppender.java:127)
core_1 | bbb-web | at at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:100)
core_1 | bbb-web | at at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
core_1 | bbb-web | at at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
core_1 | bbb-web | at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
core_1 | bbb-web | at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
core_1 | bbb-web | at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
core_1 | bbb-web | at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
core_1 | bbb-web | at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
core_1 | bbb-web | at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
core_1 | bbb-web | at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
core_1 | bbb-web | at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
core_1 | bbb-web | at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
core_1 | bbb-web | at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
core_1 | bbb-web | at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
core_1 | bbb-web | at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
core_1 | bbb-web | at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
core_1 | bbb-web | at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
core_1 | bbb-web | at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
core_1 | bbb-web | at at org.slf4j.LoggerFactory$getLogger.call(Unknown Source)
core_1 | bbb-web | at at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
core_1 | bbb-web | at at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
core_1 | bbb-web | at at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
core_1 | bbb-web | at at org.bigbluebutton.web.Application.<clinit>(Application.groovy)
core_1 | bbb-web | at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
core_1 | bbb-web | at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
core_1 | bbb-web | at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
core_1 | bbb-web | at at java.lang.reflect.Method.invoke(Method.java:498)
core_1 | bbb-web | at at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
core_1 | bbb-web | at at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
core_1 | bbb-web | at at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
core_1 | bbb-web | at at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59)
I entered the core container, but only found this log file /var/log/bigbluebutton/bbb-web.log, and the file was empty, while the same file in ubuntu system's container was full of logs. I imagine that maybe some system settings prevent the file from using by java progress, but i can't figure it out any more , what may be the problem?
how can we help to add coturn support ?
In the documentation, there is a mention of forwarding all ports. However I'm a bit lost on that when it comes to having a TURN server. The turn server setup was supposed to avoid opening a range of UDP ports right?
Its very great to have components docker separated. I wonder if each of them can be put in an autoscaling tools like AWS ASG.
Anyone has idea on this?
Thanks
I modified the shared secret in the env file, is there anything else that I would need to modify in order to get this up and running?
Adding some more information to the documentation about the parameters that needs to be modified would be hugely helpful
Docker offers to monitor the health of containers.
this can be archived either by a HEALTHCHECK
command [1] in the Dockerfile
or via a healthcheck
property in the docker-compose file.
It can be really helpful for debugging some issues like #35, so I think we should add it.
[1] https://docs.docker.com/engine/reference/builder/#healthcheck
[2] https://docs.docker.com/compose/compose-file/#healthcheck
I can't find any icons for using shared notes / etherpad in the conference room. This is while shared notes are enabled in ./mod/html5/settings.yml file in the default settings and etherpad docker is also running, I can also browse /pad in my web browser however there is absolutely nowhere to activate or use shared notes.
This is a screenshot from bigbluebutton-docker:
And this is BigBlueButton on Ubuntu without docker:
I wonder why no Shared Notes icon is shown in bigbluebutton-docker while it is already enabled in all config files by default.
update:
I found the following errors in "docker-compose logs -f | grep -i error | grep -i "note|etherpad""
etherpad_1 | [2020-11-05 19:53:18.949] [ERROR] console - Failed to load '/opt/etherpad-lite/node_modules/ep_bigbluebutton_patches/index:init' for 'ep_bigbluebutton_patches/bbb_hooks/hooks/init_ep_bigbluebutton_patches': Not a function
etherpad_1 | [2020-11-05 19:53:18.976] [ERROR] console - Failed to load 'ep_bigbluebutton_patches/index:init' for 'ep_bigbluebutton_patches/bbb_hooks/hooks/init_ep_bigbluebutton_patches': Not a function
html5_1 | error: Could not create note for 2e7ab4c844291de8b2ee4a6f2fc4c1b462129613-1604606295658: Error: Request failed with status code 503
and here is the full log for etherpad docker:
etherpad_1 | All relative paths will be interpreted relative to the identified Etherpad base dir: /opt/etherpad-lite
etherpad_1 | Random string used for versioning assets: 327c303a
etherpad_1 | [2020-11-05 19:53:17.121] [DEBUG] AbsolutePaths - Relative path "settings.json" can be rewritten to "/opt/etherpad-lite/settings.json"
etherpad_1 | [2020-11-05 19:53:17.122] [DEBUG] AbsolutePaths - Relative path "credentials.json" can be rewritten to "/opt/etherpad-lite/credentials.json"
etherpad_1 | settings loaded from: /opt/etherpad-lite/settings.json
etherpad_1 | No credentials file found in /opt/etherpad-lite/credentials.json. Ignoring.
etherpad_1 | Unknown Setting: 'cookie'. This setting doesn't exist or it was removed
etherpad_1 | [2020-11-05 19:53:17.134] [INFO] console - Using skin "bigbluebutton" in dir: /opt/etherpad-lite/src/static/skins/bigbluebutton
etherpad_1 | [2020-11-05 19:53:17.134] [INFO] console - Session key file "/opt/etherpad-lite/SESSIONKEY.txt" not found. Creating with random contents.
etherpad_1 | [2020-11-05 19:53:18.765] [INFO] APIHandler - Api key file read from: "/tmp/apikey"
etherpad_1 | [2020-11-05 19:53:18.949] [ERROR] console - Failed to load '/opt/etherpad-lite/node_modules/ep_bigbluebutton_patches/index:init' for 'ep_bigbluebutton_patches/bbb_hooks/hooks/init_ep_bigbluebutton_patches': Not a function
etherpad_1 | [2020-11-05 19:53:18.972] [INFO] console - Installed plugins: [email protected], [email protected], [email protected]
etherpad_1 | [2020-11-05 19:53:18.976] [ERROR] console - Failed to load 'ep_bigbluebutton_patches/index:init' for 'ep_bigbluebutton_patches/bbb_hooks/hooks/init_ep_bigbluebutton_patches': Not a function
etherpad_1 | [2020-11-05 19:53:18.978] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issues
etherpad_1 | [2020-11-05 19:53:18.979] [INFO] console - Your Etherpad version is 1.8.6 (299bd96)
etherpad_1 | [2020-11-05 19:53:19.247] [INFO] console - You can access your Etherpad instance at http://0.0.0.0:9001/
etherpad_1 | [2020-11-05 19:53:19.247] [WARN] console - Admin username and password not set in settings.json. To access admin please uncomment and edit 'users' in settings.json
etherpad_1 | Node worker_threads not available. Trying to fall back to tiny-worker polyfill...
etherpad_1 | Node worker_threads not available. Trying to fall back to tiny-worker polyfill...
etherpad_1 | [2020-11-05 20:53:18.949] [INFO] console - New loop
etherpad_1 | [2020-11-05 21:53:18.951] [INFO] console - New loop
thanks for the owner, I got BBB 2.2.x up and running fine. Though I checked every container but I couldn't find the command bbb-conf
, which is required for obtaining secrets for API developing and such. So how can I run this command?
apparently there are issues with uploading images as presentation slides.
With a quick test I was able to confirm it, but didn't do further research yet.
Hi,
I'm interested in your attempt to dockerize BigBlueButton, then I tried to follow the installation guide on this repository, but I'm not an expert so I'd like to ask for some clarification.
Apache is running on my server, so in order to use the HTTPS proxy container I had to modify the file "docker-compose.https.yml" to map ports 80 and 443 in the container to other ports (9010 and 9011) on the host, since 80 and 443 are already used by Apache.
Then I created a virtual server on Apache whose server name was the same of the domain name I specified during the setup of your BigBlueButton dockerized version. For this virtual server I added some reverse proxy directives to map incoming requests to port 443 of the HTTPS proxy container (port 9011 of the host). After many attempts, I managed to make it work thanks to these directives:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost on
ProxyRequests off
ProxyPass / https://10.7.7.1:9011/
ProxyPassReverse / https://10.7.7.1:9011/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* wss://10.7.7.1:9011%{REQUEST_URI} [P]
I had to use the rewrite rule (last line) because the websocket connection failed when entering a BigBlueButton room without it (so there were no audio nor video).
Now BigBlueButton works (I can connect in listen mode and activate the webcam), except that when I try to enable the microphone I get the error ICE 1007. I checked in the browser console and I found that BigBlueButton tries to connect to the local turn server on port 465 (using the public domain name), but I don't know if it works and I don't even know if the problem is the turn server of something else.
All the docker containers are running properly.
How would you suggest to use this dockerized version when ports 80 and 443 are already occupied by a websever? I would be grateful for your help.
Thank you in advance.
When running for the first time the docker-compose command to build containers :
Step 11/37 : RUN LC_CTYPE=C.UTF-8 add-apt-repository ppa:bigbluebutton/support
---> Running in e112ad5ea21b
This PPA contains package builds that are not part of BigBlueButton itself, but
which are required to use all BigBlueButton features. This includes software not
packaged in Ubuntu and backports of newer packages.
Packages provided in this PPA are compiled with options suitable for use with
BigBlueButton, but might be missing features that other applications require.
More info: https://launchpad.net/~bigbluebutton/+archive/ubuntu/support
gpg: keyring /tmp/tmpn_4hd93d/secring.gpg' created gpg: keyring
/tmp/tmpn_4hd93d/pubring.gpg' created
gpg: requesting key E95B94BC from hkp server keyserver.ubuntu.com
Error: retrieving gpg key timed out.
gpgkeys: key 36A9CA9512E5F0A4BE549ACF2E1B01D0E95B94BC can't be retrieved
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
gpg: keyserver communications error: keyserver helper general error
gpg: keyserver communications error: unknown pubkey algorithm
gpg: keyserver receive failed: unknown pubkey algorithm
ERROR: Service 'core' failed to build: The command '/bin/sh -c LC_CTYPE=C.UTF-8 add-apt-repository ppa:bigbluebutton/support' returned a non-zero code: 1
At the beginng the core
contained the full bbb-install.sh
installation. After quite some work more and more components got isolated into individual containers.
This work is not finished yet. Core still consists out of multiple components:
bbb-web
bbb-apps-akka
bbb-fsesl-akka
bbb-transcode-akka
red5
how can we help for the recording ?
I think, your project is a much better approach to dockerize BBB or wait for a new BBB version that supports Ubuntu 18.04 or 20.04.
I think, the way, you integrate the optional nginx and coturn isn't ideal. I think, it would be "nicer" to have only the docker-compose.yml and (which is supported out of the box from docker-compose) an additional docker-compose.override.yml (see https://devilbox.readthedocs.io/en/latest/configuration-files/docker-compose-override-yml.html).
I would change the setup script in a way, that it cats/echos/pipes the content of the docker-compose.*.yml into the docker-compose.override.yml, when the user says 'y' in the script. So, instead of
if [ ! "$https_proxy" == "y" ]
then
sed -i "s/ENABLE_HTTPS_PROXY.*/#ENABLE_HTTPS_PROXY=true/" .env
fi
...
do a:
rm docker-compose.override.yml && touch docker-compose.override.yml
if [ "$https_proxy" == "y" ]
then
cat docker-compose.https.yml >> docker-compose.override.yml
fi
if [ "$greenlight" == "y" ]
then
cat docker-compose.greenlight.yml >> docker-compose.override.yml
fi
if [ "$coturn" == "y" ]
then
cat docker-compose.coturn.yml >> docker-compose.override.yml
fi
In that case a user can just use docker-compose
in the root directory of the project.
After reviewing the code, there are several other things to do:
compose
looks for the webhooks but that is only enabled manually.I'm switching (personally) to a Jinja template together with Ansible. That works too (because the script cannot be used easy in Ansible because of the question-answer-format without params).
cp: cannot stat 'config/default.example.yml': No such file or directory
where can I find such file?
thanks in advance !
My latest attempt to get this running fails with an error like this:
---> Using cache
---> b9e246ce5dbf
Step 6/10 : RUN cp config/default.example.yml config/production.yml && rm .git && npm install --unsafe-perm && npm cache clear --force
---> Running in abba0124a3e0
cp: can't stat 'config/default.example.yml': No such file or directory
ERROR: Service 'webrtc-sfu' failed to build: The command '/bin/sh -c cp config/default.example.yml config/production.yml && rm .git && npm install --unsafe-perm && npm cache clear --force' returned a non-zero code: 1
I've tried bundling the dockerized BBB version with a recent rocket.chat server (and their default integration for BBB). Unfortunately when clicking the "Start Meeting" button, nothing happens. For a lack of a bare metal BBB installation, I can't 100% confirm, that the issues related to the docker setup, but I haven't found a bug report for the default BBB / Rocket.Chat integration.
The Rocket.Chat HTML client shows this error message:
"Error: Internal server error [500]
at M._livedata_result (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:154:17753)
at M.onMessage (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:154:20094)
at https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:2680
at Array.forEach (<anonymous>)
at u.forEachCallback (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:3747)
at k.socket.onmessage (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:2650)
at k.r.dispatchEvent (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:6254)
at k._dispatchMessage (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:19887)
at k._didMessage (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:20789)
at WebSocket.o.ws.onmessage (https://chat.REDACTED.de/8ca65148339a2675449b4d7a6e2aecf29497c32b.js?meteor_js_resource=true:152:22942)"
Rocket.Chat Server Log states:
Exception while invoking method 'bbbJoin' Error: failed [404] <Map><timestamp>1593446906299</timestamp><status>404</status><error>Not Found</error><message>No message available</message><path>/bigbluebutton/api/hooks/create</path></Map>
at Object.exports.makeErrorByStatus (packages/http.js:176:10)
at Request._callback (packages/http.js:140:24)
at Request.self.callback (/app/bundle/programs/server/npm/node_modules/meteor/http/node_modules/request/request.js:185:22)
at Request.emit (events.js:311:20)
at Request.EventEmitter.emit (domain.js:482:12)
at Request.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/http/node_modules/request/request.js:1161:10)
at Request.emit (events.js:311:20)
at Request.EventEmitter.emit (domain.js:482:12)
at IncomingMessage.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/http/node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:417:28)
at IncomingMessage.emit (events.js:323:22)
at IncomingMessage.EventEmitter.emit (domain.js:482:12)
at endReadableNT (_stream_readable.js:1204:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
The BBB nginx log states:
2020/06/29 16:08:26 [error] 7#7: *1303 open() "/etc/nginx/html/client/conf/config.xml" failed (2: No such file or directory), client: 172.31.0.2, server: _, request: "GET /client/conf/config.xml HTTP/1.1", host: "konferenz.REDACTED.de"
Since the nginx error log displays the same message as in #20 , I assume it might be related.
Last night I've got an error after upgrading the BBB host. I'm not sure, but I think with docker-compose 1.27.4 there is an issue with the nginx-service definition.
# ./scripts/compose up -d
Creating network "si00066_default" with the default driver
Creating network "si00066_bbb-net" with the default driver
Creating si00066_mongodb_1 ... done
Creating si00066_freeswitch_1 ... done
Creating si00066_redis_1 ... done
Creating si00066_https_proxy_1 ... done
Creating si00066_postgres_1 ... done
Creating si00066_greenlight_1 ... done
Creating si00066_coturn_1 ... done
Creating si00066_kurento_1 ... done
Creating si00066_core_1 ... done
Creating si00066_etherpad_1 ... done
Creating si00066_webhooks_1 ... done
Creating si00066_periodic_1 ... done
Creating si00066_html5_1 ... done
Creating si00066_webrtc-sfu_1 ... done
Creating si00066_nginx_1 ...
ERROR: for si00066_nginx_1 "host" network_mode is incompatible with port_bindings
ERROR: for nginx "host" network_mode is incompatible with port_bindings
and that is correct for me, because in a network_mode: host
mode there can't be a port binding like 8080:80
because the container uses the concrete network device directly without a proxy. I assume this is because now I've got docker-compose v.1.27.4 last night. But it should be fixed. Because there is port binding to an unusual port - I would expect that, network_mode: host
is wrong here. Because this would be done via https-Proxy.
When setting up a room that requires approval for guests to join, the guest is prompted with a 404-page, while the moderator sees the pending request. The moderator is able to approve the request, however the client's "guest-wait.html" page still can't be found.
I'm running the current 2.2.x branch (commit e247cd1) with a fresh build, but I've also encountered this issue with previous builds.
The nginx log states:
2020/06/29 15:48:02 [error] 7#7: *1231 open() "/etc/nginx/html/client/conf/config.xml" failed (2: No such file or directory), client: 172.31.0.2, server: _, request: "GET /client/conf/config.xml HTTP/1.1", host: "konferenz.REDACTED.de"
2020/06/29 15:48:02 [error] 7#7: *1234 open() "/etc/nginx/html/client/guest-wait.html" failed (2: No such file or directory), client: 172.31.0.2, server: _, request: "GET /client/guest-wait.html?sessionToken=lpxjuoyxnub4kk9l HTTP/1.1", host: "konferenz.REDACTED.de", referrer: "https://konferenz.REDACTED.de/b/adm-x94-oiw"
I am successfully able to click the record button and i am seeing the counter count up during the recording. After ending the meeting I do not see any recordings.
After looking at the container logs I have noted that bbb-docker_recordings_1 container is not even running. It is getting this error.
Error starting command: /entrypoint.sh
- fork/exec /entrypoint.sh: permission denied
I am not sure what to do.
Hi,
I apreciate your work on "dockerizing" BBB.
I had your setup working, but after a redeployment with last commit, i do have a connection error 1002 on websocket connection when i try to pass the echo test on a room.
All other fonctionnalities work as expected.
Do you have any idea where it does come from ?
I just replaced values in .env with mine, and did proxy the nginx docker (port 80) behind traefik.
Web console :
sip.js?v=887:8404 WebSocket connection to 'wss://MYDOMAIN/ws' failed: Error during WebSocket handshake: Unexpected response code: 502
sip.transport | WebSocket connection error: {"isTrusted":true}
NGINX container:
[error] 6#6: *76 connect() failed (111: Connection refused) while connecting to upstream, client: 10.0.4.10, server: _, request: "GET /ws HTTP/1.1", upstream: "https://MYPUBLICIPIP:7443/ws", host: "MYDOMAIN"
After unsuccesfully trying several non working dockerfiles of BBB, i found your approach and it looks much more reasonable. I am in the process of building the images, but i wondered about this:
Adjust the values in .env (don't forget to change the ETHERPAD_API_KEY, SHARED_SECRET and RAILS_SECRET!)
Were do i get these from? Do i need a working etherpad instance for BBB or is this part of the docker stack? Shared Secret of Coturn? Where do i get the Rails Secret from?
Sorry if these are obvious questions but this is the first time i am trying to install BBB so its not obvious to me (yet).
EDIT: so i used
docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret
and put this into the .env file, like this:
SECRET_KEY_BASE=secretcrectresecretsecretcrectresecret
but i still get this:
Serverfehler (Server Error)
BigBlueButton Endpunkt und Geheimnis ungültig (Endpoint and Secret invalid)
Thanks.
I don't want to annoy you ;-) but is it necessary to define container_name: greenlight
in docker-compose.greenlight.yml? The name based on the service name would be enough to refer the container somewhere else.
When following the documentation I was successful in setting up a BigBlueButton instance.
However, during testing, I noticed some issues.
I was unable to join a room with audio, BigBlueButton kept running the Connecting to echo test
phase (I do hear myself speak)
When I select the option to only listen I am able to join a room.
However, in this scenario, I can only do things with the presentation and chat.
Screen, Audio and Webcam are not working.
I did some debugging but was unable to resolve the issue.
I noticed some errors in the docker logs.
webrtc-sfu_1 | 2020-07-30T14:06:29.797Z - error: [mcs-freeswitch-esl-wrapper] FreeSWITCH ESL connection received error ETIMEDOUT errno=ETIMEDOUT, code=ETIMEDOUT, syscall=connect, address=10.7.7.1, port=8021
core_1 | bbb-fsesl-akka | 2020-07-30T14:06:31.491Z ERROR o.b.f.v.f.ConnectionManager - Failed to connect to ESL
core_1 | bbb-fsesl-akka | 2020-07-30T14:06:34.490Z INFO o.b.f.v.f.ConnectionManager - Attempting to connect to FreeSWITCH ESL
core_1 | bbb-fsesl-akka | 2020-07-30T14:06:34.502Z WARN o.f.e.c.i.InboundClientHandler - connection timed out
It looks like webrtc-sfu
is unable to connect to FreeSwitch and there is another issue with bbb-fsesl-akka
If I curl this IP (10.7.7.1:8082) manually from the host I get the following response so something is running on that port
$ curl 10.7.7.1:8021
Content-Type: auth/request
Content-Type: command/reply
Reply-Text: -ERR command not found
Looking at the output of compose ps
everything seems normal
Name Command State Ports
---------------------------------------------------------------------------------------------------
bigbluebutton-docker_core_1 /entrypoint.sh Up
bigbluebutton- /entrypoint.sh Up 9001/tcp
docker_etherpad_1
bigbluebutton- /bin/sh -c /entrypoint.sh Up
docker_freeswitch_1
bigbluebutton- /entrypoint.sh Up
docker_html5_1
bigbluebutton- /entrypoint.sh /usr/local/ Up
docker_https_proxy_1 ...
bigbluebutton- /entrypoint.sh Up (healthy)
docker_kurento_1
bigbluebutton- docker-entrypoint.sh mongod Up 27017/tcp
docker_mongodb_1
bigbluebutton- /docker-entrypoint.sh ngin Up
docker_nginx_1 ...
bigbluebutton- /entrypoint.sh Up
docker_periodic_1
bigbluebutton- docker-entrypoint.sh Up 5432/tcp
docker_postgres_1 postgres
bigbluebutton- docker-entrypoint.sh redis Up 127.0.0.1:6379->6379/tcp
docker_redis_1 ...
bigbluebutton- /bin/sh -c /entrypoint.sh Up
docker_webhooks_1
bigbluebutton- ./docker-entrypoint.sh npm Up 127.0.0.1:3008->3008/tcp
docker_webrtc-sfu_1 ...
greenlight bin/start Up 10.7.7.1:5000->80/tcp
As for the browser side of things BBB gives the following error message when trying to stream a video
Media server is offline please try again (error 2001)
And in the console
> ERROR: clientLogger: Listen only error - SIP_CALL_TIMEOUT - bridge: SIP
> ERROR: clientLogger: SFU screenshare rejected by SFU with error 2001 = MEDIA_SERVER_OFFLINE Kurento.handleSFUError
As for the echo test, the console gives the following output
> (Central European Summer Time) | sip.transport | WebSocket disconnected (code: 1006)
> | sip.transport | WebSocket wss://<domain.name>/ws?sessionToken=lmstujafbbvhsktm connected
It seems the audio can connect to the WebSocket after it failed (this keeps happening in a loop)
I am lost as to why these things are happening and I'm hoping you know what has been configured wrongly.
Thanks for reading this ❤️
I think this is the same as #18 but the answer:
"It was a DNS Mapping error" was not very helpful.
I have a clean Ubuntu 18.04 and just followed the tutorial (haven't changed the secrets) and ran into this error.
then I made a decompose changed the secrets inside the .env file and made another compose, same issue.
Hi, i finally got the bbb-docker kind of working, but Video Cam and Screensharing is not working and shows "Media server is offline. Please try again later (error 2001)"
My Server is running Plesk Obsidian Version 18.0.30 and the Docker extension, i used Docker from SSH to set everything up.
At the beginning even Audio was not working, but i got it working with the correct firewall rules to allow traffic on all ports from 10.7.7.0/24. I Already tried to Allow all Incoming and Forwarding traffic without success.
And i needed to add following additional NGINX directive:
location ^~ / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://SERVER_PUBLIC_IPV4:8080;
}
IPv6 is not working/setup on the server, mandatory or do i need to disable it somewhere?
Any suggestions here??
Thanks in advance
Hello,
Just want to chime in and say that the work being done here is great and could serve as another method of installation for BBB. May I suggest that you submit a pull request to update the existing documentation to add a fourth installation method. Originally it seems that the docker repo made by BBB was meant for testing but you have managed to turn it into production. This may be very helpful to others who don't yet know about this.
Hi,
I tried installing from stock on an Ubuntu 18.04 host.
I went through the Steps in the README-file. In step 4. Start containers
I got the above mentioned error:
ERROR: Invalid interpolation format for "enviroment" option in service "core": "DEV_MODE:-}"
Currently we use the official etherpad image (https://hub.docker.com/r/etherpad/etherpad) with a small patch so that the closed captions work.
But the bbb fork diverges more and more, so it probably makes sense to build the image based on this repo:
https://github.com/bigbluebutton/etherpad-lite
Hello
I have installed the BBB from your repository instructions. I gave the domain name my local ip address(not as localhost). When i trying to sign in as admin user I got this error says : 500 Internal Server Error
If you are the administrator of this website, then please read this web application's log file and/or the web server's log file to find out what went wrong. Please help me with this problem. Thank you so much.
for prometheus users like me it would be nice if we could add greenstatic/bigbluebutton-exporter by a simple .env
flag.
steps would simplified be:
docker-compose.prometheus.yml
ENABLE_PROMETHEUS_EXPORTER=true
flag in sample.env
./scripts/compose
After container admin and account creation as described in the README file, I get a "Server Error
Invalid BigBlueButton Endpoint and Secret" error message instead of the dashboard.
Tracing this back via the generated HTML I can narrow it down to an exception in line bigbluebutton#221 of app/controllers/application_controller.rb but here my lack of Ruby skills / never mind the used web framework fails to take me any further.
I can't find any options in the conference room / admin area to record sessions, is this option available in bigbluebutton-docker ?
I found out, that the IP 192.168.0.1 is not accepted by the regex. On the otherhand 300.300.300.300 is accepted. The same with the IPv6 regex, because it makes the v4 regex. I'm not able to enter a IPv6 address manually in the setup.
Hey @alangecker ,
during this year's Hacktoberfest we gathered a handful of people who want to help improving the BBB container setup.
If you could provide us more issues here about work you think that should be done that would help.
Best regards
Michael
currently the closed captions are not working with this setup.
Cannot GET /p/
error when a viewer opens the pad. This is probably because readOnlyPadId
is empty.Probably the pads should get actually get created in etherpad and the readOnlyPadId
should get retrieved afterwards, but somehow this doesn't happen.
Hello!
When I create a room using greenlight, I am able to record that session.
But when I create a room using moodle (and the plugin to connect bbb with moodle), I am not able to record that session - there is no recording afterwards, even if I try to search on the cli.
Is this a known issue, or is there a way to resolve this?
Best regards
This is a feature request for the (optional) inclusion of the German Freeswitch audio files, which someone just localized. I haven't heard all of them, but they sound about right :)
Issue thread: bigbluebutton/bigbluebutton#1843 (comment)
Repo: https://github.com/Daedalus3/freeswitch-german-soundfiles
bigbluebutton-docker/scripts/setup
Line 54 in e247cd1
There can be situations like multiple IP address A record, server will have in public dns ( ex : ISP load balancing, ISP backup in case of primary failure ), so I think hardcoding public IP isn't good in my opinion.
Which an open SIP port 5060
we get really a lot of bots trying to connect, which even leads to freeswitch using up to 25% cpu and spamming the logs.
0.0.0.0/0
) should be allowed to access the port.env
and after restarting the containers it should be appliedThe official BBB documentation suggests to manually execute iptables
commands, which you need to make persistent somehow by yourself. This is not acceptable for this bbb-docker project! :)
https://docs.bigbluebutton.org/2.2/customize.html#add-a-phone-number-to-the-conference-bridge
I'm currently trying to get the bbb service running on an iPhone.
The screen-share and the slides provided by bbb are working fine but when joining the audio (listen only or microphone) I'll get "Connection error ICE 1007" displayed on the screen,
I've tried to resolve this problem by myself and found that the problem probably relies on STURN, but in my current configuration (behand a NAT) the port 465 is used by the coturn docker instanz as the firewall logs shows.
Has anyone got iPhones (probably also iPads) to work with bbb?
cheers
Hi, i finally got the bbb-docker kind of working, but Video Cam and Screensharing is not working and shows "Media server is offline. Please try again later (error 2001)"
My Server is running Plesk Obsidian Version 18.0.30 and the Docker extension, i used Docker from SSH to set everything up.
At the beginning even Audio was not working, but i got it with the correct firewall rules to allow traffic on all ports from 10.7.7.0/24. I Already tried to Allow all Incoming and Forwarding traffic without success.
And i needed to add following additional NGINX directive:
location ^~ / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://SERVER_PUBLIC_IPV4:8080;
}
IPv6 is not working/setup on the server, mandatory or do i need to disable it somewhere?
Any suggestions here??
Thanks in advance
When try to delete a recording via GUI it does not get removed. Log says
core_1 | bbb-web | 2020-10-14T03:31:46.011Z ERROR o.b.api.RecordingService - Failed to delete recording : 2f2924c4ab7729a1d34f44e32dbf5591ef1edc5-1602645725200
core_1 | bbb-web | java.io.IOException: Unable to delete file: /var/bigbluebutton/published/presentation/2f2924c4ab7729a1d34f44e32b6f5591ef1edc5-1602645725200/video/webcams.webm
I am a teacher trying to to setup BBB for our school in Vienna. I followed the instructions including the integration with Apache and after starting all the containers, instead of getting the default site, I get a nginx "Bad Gateway" message when using the domain in a web-browser. Also I get a "error/mod bigbluebuttonbn/view error unable join" when trying to connect the BBB-server via Moodle. The server I'm using is running Plesk.
I have tried setting up a dev environment following development.md.
Greenlight is working. But when joining a room I get a 401 error "session not found".
Here is the log output:
html5_1 | error: {"logCode":"authenticatedhandlercomponent_setreason","logDescription":"Encountered error while trying to authenticate","connectionId":"8ACgTsuNaK676F7F5","extraInfo":{"reason":{"error":401,"description":"Session ucywsrsg5cvait6s not found."},"clientURL":"https://10.7.7.1/html5client/join?sessionToken=ucywsrsg5cvait6s","validUser":"notFound"},"userInfo":{}}
Any idea? :(
currently webrtc-sfu
runs as root inside the container.
This is no immediate security issue because there is still a privilege escalation vulnerability for escaping the docker containers necessary to cause any harm, but still more privileged than necessary.
We should rather execute it as a non-privileged user.
Is there a way to get the installed bigbluebutton release number?
Normally I use bbb-conf --ceck
or look in the /etc/bigbluebutton/bigbluebutton-release
file. But these are not installed.
For the html5 client I see that there is the TAG
environment variable in the html5 container.
In the core container there is a VERSION
variable. But this is set to an older version and said to be unused (in the core/Dockerfile
):
# this variable is not used, but it triggers
# rebuilding from here on if changed
ENV VERSION v2.2.26
In an other issue I read
There was an BBB update released, immediately building the bbb-docker core image uses these new packages
What is the best way to find the bigbluebutton release number of this packages?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.