Closed monochromec closed 3 years ago
the BigBlueButton API is not reachable.
I posted here https://github.com/alangecker/bigbluebutton-docker/issues/35#issuecomment-660343584 some hints how to trace down the error a little bit more, maybe that helps?
Getting the same error after upgrade to the current 2.2.x (3117dea). Before I removed all containers+volumes (compose down -v) and rebuilt core image from scratch.
The bbb-web process apparently crashed, hence nothing is listening on port 8090:
bbb-web | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'meetingService' defined in class path resource [spring/resources.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'long' for property 'usersTimeout'; nested exception is java.lang.NumberFormatException: For input string: "${usersTimeout}"
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
core_1 | bbb-web | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
core_1 | bbb-web | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
core_1 | bbb-web | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
core_1 | bbb-web | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
core_1 | bbb-web | at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:124)
core_1 | bbb-web | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
core_1 | bbb-web | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
core_1 | bbb-web | at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
core_1 | bbb-web | at grails.boot.GrailsApp.run(GrailsApp.groovy:84)
core_1 | bbb-web | at grails.boot.GrailsApp.run(GrailsApp.groovy:393)
core_1 | bbb-web | at grails.boot.GrailsApp.run(GrailsApp.groovy:380)
core_1 | bbb-web | at grails.boot.GrailsApp$run.call(Unknown Source)
core_1 | bbb-web | at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
core_1 | bbb-web | at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
core_1 | bbb-web | at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)
core_1 | bbb-web | at org.bigbluebutton.web.Application.main(Application.groovy:8)
core_1 | bbb-web | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
core_1 | bbb-web | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
core_1 | bbb-web | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
core_1 | bbb-web | at java.lang.reflect.Method.invoke(Method.java:498)
core_1 | bbb-web | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
core_1 | bbb-web | at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
core_1 | bbb-web | at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
core_1 | bbb-web | at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59)
core_1 | bbb-web | Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'long' for property 'usersTimeout'; nested exception is java.lang.NumberFormatException: For input string: "${usersTimeout}"
core_1 | bbb-web | at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:608)
core_1 | bbb-web | at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:615)
core_1 | bbb-web | at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:216)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1580)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1539)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1281)
core_1 | bbb-web | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
core_1 | bbb-web | ... 28 common frames omitted
core_1 | bbb-web | Caused by: java.lang.NumberFormatException: For input string: "${usersTimeout}"
core_1 | bbb-web | at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
core_1 | bbb-web | at java.lang.Long.parseLong(Long.java:578)
core_1 | bbb-web | at java.lang.Long.valueOf(Long.java:803)
core_1 | bbb-web | at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:211)
core_1 | bbb-web | at org.springframework.beans.propertyeditors.CustomNumberEditor.setAsText(CustomNumberEditor.java:113)
core_1 | bbb-web | at org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:470)
core_1 | bbb-web | at org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:443)
core_1 | bbb-web | at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:200)
core_1 | bbb-web | at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:588)
core_1 | bbb-web | ... 34 common frames omitted
@alangecker after some digging around in the upstream commits I saw that bigbluebutton.properties
has changed and needs to be updated for the current branch to work.
https://github.com/bigbluebutton/bigbluebutton/commit/2fb26ff0cf8de7a0779eec354fcdc5ff0b24ee79#diff-497ed85f0ee8170360c5c42a78c52810998253ce7d6ac49a8560007283dca31cR218-R227
Can you think of a proper mechanism to achieve a version lock? This might break again at any time if they update configs in bbb-web ubuntu packages.
@cjhille
This should be fixed with Release v2.2.27-1 #64
I'm about to test this and merge it soon to the main branch v2.2.x
I recently wrote something regarding the current state and goal for version locking here: Hacktoberfest #61
In the v2.3.x
branch there is only the instable dependency to bbb-web
and bbb-apps-akka
left, everything else is already somehow 'version pinned' and, hopefully, everything will be until the official BBB v2.3 release :)
@monochromec
could you resolve your issue already with my debugging hints in https://github.com/alangecker/bigbluebutton-docker/issues/35#issuecomment-660343584 or with an upgrade to the newer version with ./scripts/upgrade
?
Unfortunately upgrading didn't solve the problem. And none of the hints in #35 solved the problem either. Let's see what the further RCA holds in stock.
I'm afraid that my lack of Ruby skills actually prevent me from progressing this further...
Just ran into the same issue simply following the installation instructions from the README on a new clean server. So is branch 2.2.x broken? Should I try with 2.3.x instead or will it behave the same?
@inventivejon I just tried the v2.2.x branch on a fresh debian 10 server and everything worked fine.
After the login there was indeed the "Server Error
Invalid BigBlueButton Endpoint and Secret" error, but this was just due to bbb-web
was still starting and the machine I used is really slow, so it took ~2 more minutes until it was fully running.
is your machine maybe also slow and did you check to early?
There shoud always be following lines present in the logs which indicate that bbb-web
fully started.
$ ./scripts/compose logs -f --tail=20
core_1 | bbb-web | 2020-10-30T22:31:52.390Z INFO o.b.p.i.PresentationConversionCompletionService - Ready to process presentation files!
core_1 | bbb-web | 2020-10-30T22:31:52.564Z INFO o.b.w.s.callback.CallbackUrlService - Starting callback url service.
core_1 | bbb-web | 2020-10-30T22:31:52.581Z INFO o.bigbluebutton.api.MeetingService - Starting Meeting Service.
core_1 | bbb-web | 2020-10-30T22:31:52.611Z INFO o.b.api.ClientConfigService - ClientConfigService initialised
core_1 | bbb-web | 2020-10-30T22:31:53.636Z INFO org.bigbluebutton.web.Application - Started Application in 152.584 seconds (JVM running for 209.176)
core_1 | bbb-web | Grails application running at http://0.0.0.0:8090 in environment: production
You could also check whether bbb-web
is available...
curl http://10.7.7.2:8090/bigbluebutton/api
curl http://localhost:8080/bigbluebutton/api
regarding v2.3.x
I would strongly discourage from using it, since BigBlueButton itself is still in an early and unstable alpha phase and also the bbb-docker branch wasn't really tested yet.
Thank you for the detailed explanation. Unfortunately I switched to v2.3.x over night and checked the result this morning. On v2.3.x I result in the same behaviour. Followed your checks and this is the result:
curl http://10.7.7.2:8090/bigbluebutton/api
ah, apparently you use bbbtest.local
as the domain?
it won't be able to get a certificate via lets encrypt for that because it is not a valid public domain.
so either use (during setup or manually the .env
file) a publicly reachable domain or - if you want to run it only locally - use the "development" setup: https://github.com/alangecker/bigbluebutton-docker/blob/v2.2.x/docs/development.md
My bad. I will try and let you know.
Hm, I don't think I will be able to get the development mode running in an internal network and still to look like a normal bbb setup. Also using an official address for the application is the opposite of what I am trying to achieve. I guess bbb is just not the right thing to use for my use case. But still, thank you very much for your help on the issue 👍
unfortunately https - and therefore a valid certificate - is necessary for using WebRTC. If you want to use it only locally in the internal network you still need to get a certificate somehow (e.g. a let's encrypt wildcard certificate) and use it manually in an own nginx setup (the "auto https proxy" included here is not suitable for external certificates).
as soon as you have a valid certificate running, you do not need the DEV_MODE
anymore! ;)
Sounds good. I will try that before I finally give up :) I will give feedback within this issue.
So that was a good step forward I am now able to login to greenlight. I will post the details in a separate message later. But now I am stuck a the home room entry. It is constantly telling me "Connecting to echo test". As far as I can see something is wrong with the websocket? Any ideas? Should I move to a separate issue?
Okay, intermediate state. Looks like my nginx needs to explicitely forward the socket connection. Just not sure to which port. Will continue investigation...
@inventivejon ah jeps! you can have a look into the auto https proxy config, how the websocket forwarding is done there: https://github.com/alangecker/bigbluebutton-docker/blob/v2.2.x/mod/https/site-ipv4only.conf
Thank you so much. That actually did the trick. Here is what I did.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server { listen 80 default_server; listen [::]:80 default_server; servername ; return 301 https://your-domain-name; }
server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; servername ; error_log /var/log/nginx/error.log warn; ssl_certificate /etc/nginx/ssl/your-domain-name.chained.crt; ssl_certificate_key /etc/nginx/ssl/your-domain-name.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:EECDH+AESGCM:EDH+AESGCM; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0; ssl_prefer_server_ciphers on; ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; http2_idle_timeout 5m; # up from 3m default
location / { proxy_http_version 1.1; proxy_pass http://10.7.7.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_cache_bypass $http_upgrade; proxy_read_timeout 6h; proxy_send_timeout 6h; client_body_timeout 6h; send_timeout 6h; proxy_redirect http://10.7.7.1:8080/ https://your-domain-name/; } }
And sorry @monochromec and @cjhille for using this issue discussion a bit to much :)
----
#edit by @chandi: I allowed myself to put the config into a markdown code block :)
Thank you so much. That actually did the trick.
great :)
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 #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.