GithubHelp home page GithubHelp logo

alangecker / bigbluebutton-docker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bigbluebutton/docker

99.0 99.0 33.0 732 KB

merged into https://github.com/bigbluebutton/docker

License: GNU Lesser General Public License v3.0

Shell 58.91% Dockerfile 34.41% HTML 4.13% Python 2.55%
bigbluebutton docker

bigbluebutton-docker's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bigbluebutton-docker's Issues

How to make it work behind Apache reverse proxy?

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.

docker-compose syntax error with Nginx container

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.

JPG and PNG presentation upload

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.

Hacktoberfest

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

no option for recording sessions

I can't find any options in the conference room / admin area to record sessions, is this option available in bigbluebutton-docker ?

No Video or Screensharing - Media Server Offline 2001 - Audio and presentation works

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

Setup script doesnt parse IPv4/v6 correctly

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.

No video

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
....

IP whitelist for SIP connections

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.

A possible solution should include following:
  • Most admins might not use SIP at all, so the port should be blocked by default.
  • If activated, only IP's from a whitelist (which could include 0.0.0.0/0) should be allowed to access the port
  • It should be possible to set this in .env and after restarting the containers it should be applied

The 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

How to get the Bigbluebutton Release Number

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?

Add this to the documentation

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.

Unable to get recordings to work

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.

Websocket error 1002

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"

Video-Cam and Screensharing not working - Media Server Offline 2001

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

Drop root privileges of bbb-webrtc-sfu

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.

Some questions

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.

Add prometheus exporter

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:

  • create a docker-compose.prometheus.yml
  • create a ENABLE_PROMETHEUS_EXPORTER=true flag in sample.env
  • add it to ./scripts/compose

Avoid using script/compose

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:

  • there is no setup question for webhooks and demo but a docker-compose.*.yml exists. The compose looks for the webhooks but that is only enabled manually.
  • also cat'ing the corresponding YAML file into the override may end with a wrong syntax, because of multiple main-nodes 'version', 'services' etc. so, the compose files should only contain the diff or use somekind of patch-mechanism.

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).

greenlight service with container_name

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.

"502 Bad Gateway" after Installation alongside Apache (Plesk)

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.

closed captions don't work

currently the closed captions are not working with this setup.

traces

  • Cannot GET /p/ error when a viewer opens the pad. This is probably because readOnlyPadId is empty.
  • A pad for every language gets created already on room creation, at least it is added into the mongodb collection, but no API call reaches etherpad.

Probably the pads should get actually get created in etherpad and the readOnlyPadId should get retrieved afterwards, but somehow this doesn't happen.

Turn server configuration for UDP ports

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?

"Require moderator approval" leads to 404 for guests

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.

image

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"

Installation fails with "cp: can't stat 'config/default.example.yml': No such file or directory"

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

iOS support

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

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.

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.

Server error after successful login

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.

which container does the command bbb-conf reside in?

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?

bbb-web can't start because logs file can't open (permission denied), what's the problem?

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?

Voice, Screen and webcam functionality not working.

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 ❤️

Invalid BigBlueButton Endpoint and Secret

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.

IPv6 support

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! :)

Errors in Etherpad Docker, broken Shared Notes

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:
image

And this is BigBlueButton on Ubuntu without docker:
image

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

development setup bbb/html-5 "session not found"

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? :(

Integration with Rocket.Chat broken

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.

Unable to delete recording

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

image Build issue

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

Further split up `core` in its individual components

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 (apparently only used by the flash client and removed in v2.3.x anyway)

Expose more BBB settings in .env file

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:

  • Changing the default welcome message in chat.
    It may be confusing to read an English welcome message in an otherwise entirely German user interface. mod/core/web/bigbluebutton.properties Setting defaultWelcomeMessage
  • Option to disable the freeswitch audio announcements, e.g. "You are the only person in this conference". "You are now (un)muted". This audio may be quite confusing to non-english speakers. In my particular case, elderly people around and above the age of 50.
    Remove Files /usr/share/freeswitch/sounds/en/us/callie/conference/*/*.wav
  • Option to disable the "echo test".
    With respect to the ease of use for people not familiar with technicalities like audio checks. My main concern is, that a person who is confused by the audio check, will have a hard time fixing these underlying issue. However a person capable of fixing microphone input issues, doesn't necessarily need the additional audio check to see whether the microphone is working correctly. In that regard an option to disable this feature would be greatly appreciated.
    mod/html5/settings.yml Setting skipCheck: true
  • Option to disable "listenOnly" mode
    From people unfamiliar with the concept of BBB and its roots as an education tool (or from other first time users) I have often encountered the question whether they should click the microphone or the headphone to join the conference. Every so often someone intuitively picks the wrong one ...
    mod/html5/settings.yml Setting listenOnlyMode: false
  • Option to enable auto sharing the webcam upon loading the room.
    For easy of use with first time users, that are not accustomed to the webcam icon, fail to find it or can't discern its disabled state.
    mod/html5/settings.yml Setting autoShareWebcam: true

Recording for Moodle-BBB-Rooms

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.