Greenlight - A simple front-end interface for your BigBlueButton server
I've given the app package a spin and it generally looks good. At least seems to work well with the default demo BBB backend instance!
One thing I noticed is, that there is a
/app/data/being created. Is that required? Note that
/tmpwould be purged of old data on a schedule, while
/runis not, but both are useful for temporary files depending on use-case. Not sure what
/app/data/tmpis for in that picture.
Still have to see how I can test this with some non demo BBB instance.
I will fork your package project into the cloudron namespace on gitlab and add you as a contributor there if that is ok?
Then we can finish up the rest (tests, metadata, ...) if even required
@nebulon I will look into
/app/data/tmpagain. There was a reason why I did that instead of using the normal
Also yes I will maintain this app as the contributor.
Still have to see how I can test this with some non demo BBB instance.
Using the file manager you need to set
BIGBLUEBUTTON_SECRETand restart the app. But I think your intention was more like "I don't want to setup a BBB instance to test it" or "I need a BBB instance to test it."
We just had a call using the default demo BBB server and it was good enough. So I think we can release this frontend app in the next days. Maybe you can try to figure the
/tmpfolder issue or at least that we know why it is as you have packaged it and I will do the meta info and then publish it.
The required env variables to be set are already well documented by you
This happens if I do not symlink
Oct 06 11:20:02 Puma starting in single mode... Oct 06 11:20:02 * Version 3.12.6 (ruby 2.5.1-p57), codename: Llamas in Pajamas Oct 06 11:20:02 * Min threads: 5, max threads: 5 Oct 06 11:20:02 * Environment: production Oct 06 11:20:03 ! Unable to load application: Errno::EROFS: Read-only file system @ dir_s_mkdir - /app/code/tmp Oct 06 11:20:03 Traceback (most recent call last): Oct 06 11:20:03 41: from /app/code/vendor/bundle/ruby/2.5.0/bin/puma:23:in `<main>' Oct 06 11:20:03 40: from /app/code/vendor/bundle/ruby/2.5.0/bin/puma:23:in `load' Oct 06 11:20:03 39: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/bin/puma:10:in `<top (required)>' Oct 06 11:20:03 38: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/cli.rb:80:in `run' Oct 06 11:20:03 37: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/launcher.rb:186:in `run' Oct 06 11:20:03 36: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/single.rb:98:in `run' Oct 06 11:20:03 35: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/runner.rb:147:in `load_and_bind' Oct 06 11:20:03 34: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/configuration.rb:245:in `app' Oct 06 11:20:03 33: from /app/code/vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/configuration.rb:320:in `load_rackup' Oct 06 11:20:03 32: from /app/code/vendor/bundle/ruby/2.5.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file' Oct 06 11:20:03 31: from /app/code/vendor/bundle/ruby/2.5.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file' Oct 06 11:20:03 30: from /app/code/vendor/bundle/ruby/2.5.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string' Oct 06 11:20:03 29: from /app/code/vendor/bundle/ruby/2.5.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval' Oct 06 11:20:03 28: from config.ru:5:in `block in <main>' Oct 06 11:20:03 27: from config.ru:5:in `require_relative' Oct 06 11:20:03 26: from /app/code/config/environment.rb:20:in `<top (required)>' Oct 06 11:20:03 25: from /app/code/config/environment.rb:20:in `require_relative' Oct 06 11:20:03 24: from /app/code/config/application.rb:19:in `<top (required)>' Oct 06 11:20:03 23: from /app/code/config/application.rb:19:in `require_relative' Oct 06 11:20:03 22: from /app/code/config/boot.rb:6:in `<top (required)>' Oct 06 11:20:03 21: from /app/code/config/boot.rb:6:in `require' Oct 06 11:20:03 20: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/setup.rb:31:in `<top (required)>' Oct 06 11:20:03 19: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap.rb:25:in `setup' Oct 06 11:20:03 18: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache.rb:45:in `setup' Oct 06 11:20:03 17: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache.rb:45:in `new' Oct 06 11:20:03 16: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/cache.rb:16:in `initialize' Oct 06 11:20:03 15: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/cache.rb:116:in `reinitialize' Oct 06 11:20:03 14: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/cache.rb:116:in `synchronize' Oct 06 11:20:03 13: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/cache.rb:122:in `block in reinitialize' Oct 06 11:20:03 12: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/cache.rb:139:in `push_paths_locked' Oct 06 11:20:03 11: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/store.rb:46:in `transaction' Oct 06 11:20:03 10: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/store.rb:46:in `synchronize' Oct 06 11:20:03 9: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/store.rb:50:in `block in transaction' Oct 06 11:20:03 8: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/store.rb:59:in `commit_transaction' Oct 06 11:20:03 7: from /app/code/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/store.rb:79:in `dump_data' Oct 06 11:20:03 6: from /usr/lib/ruby/2.5.0/fileutils.rb:193:in `mkdir_p' Oct 06 11:20:03 5: from /usr/lib/ruby/2.5.0/fileutils.rb:193:in `each' Oct 06 11:20:03 4: from /usr/lib/ruby/2.5.0/fileutils.rb:208:in `block in mkdir_p' Oct 06 11:20:03 3: from /usr/lib/ruby/2.5.0/fileutils.rb:208:in `reverse_each' Oct 06 11:20:03 2: from /usr/lib/ruby/2.5.0/fileutils.rb:210:in `block (2 levels) in mkdir_p' Oct 06 11:20:03 1: from /usr/lib/ruby/2.5.0/fileutils.rb:232:in `fu_mkdir' Oct 06 11:20:03 /usr/lib/ruby/2.5.0/fileutils.rb:232:in `mkdir': Read-only file system @ dir_s_mkdir - /app/code/tmp (Errno::EROFS)
With a symlink to
/app/data/tmp/seems to be no Problem.
Tests running clean.
Would you recommend an extra folder in /tmp/?
Just a convention we follow since it helps in chow'ing more easily. For example, we could create
/tmp/greenlight/cacheetc. To keep all the tmp stuff of an app "isolated". Then, we can do "chown -R xx /tmp/greenlight" somwhere in the script and not chown the whole tmp. Also, helps when we have multiple processes running with different permissions etc. But really, just a convention across packages.
BTW, one more thing is that files under
/tmpare cleaned up automatically by Cloudron periodically. Things under
/runaren't. Some apps don't work properly if files go missing randomly under them. Just a heads up in case we get reports like "greenlight suddenly stopped working after 3 weeks". The fix for those is to use something like