Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


SOLVED Greenlight - A simple front-end interface for your BigBlueButton server

  • App Dev

    In addition to App Wish BigBlueButton.

    I already created the greenlight-app which needs review.

    Maybe we can get some person from BBB/Greenlight to help with the review and tuning?

  • App Dev

    @girish and/or @nebulon

    Can we get this app into the app store as "Unstable" so I can gather feedback for improvements?

  • Staff

    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 tmp folder in /app/data/ being created. Is that required? Note that /tmp would be purged of old data on a schedule, while /run is not, but both are useful for temporary files depending on use-case. Not sure what /app/data/tmp is 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 🙂

  • App Dev

    @nebulon I will look into /app/data/tmp again. There was a reason why I did that instead of using the normal /tmp/ 🤔
    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_ENDPOINT and BIGBLUEBUTTON_SECRET and 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."

  • Staff

    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 /tmp folder 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 🙂

  • App Dev

    This happens if I do not symlink /app/code/tmp at all

    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 /tmp/ instead of /app/data/tmp/ seems to be no Problem.
    Tests running clean.
    Pushing changes.

  • Staff

    @BrutalBirdie maybe symlink it to /tmp/bbb/tmp instead? Anything under /app/data will be backed up.

  • App Dev

    @girish already changed it to /tmp/ only and it's working fine.
    Would you recommend an extra folder in /tmp/?

  • Staff

    @BrutalBirdie said in Greenlight - A simple front-end interface for your BigBlueButton server:

    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/tmp, /tmp/greenlight/cache etc. 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 /tmp are cleaned up automatically by Cloudron periodically. Things under /run aren'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 /run/greenlight/tmp instead.

  • Staff

    Will close this here and create a new section in the forum, because I've just pushed out the app package as unstable! Thanks a lot @BrutalBirdie for all the work 🙂