Skip to content

BigBlueButton minimalistic Admin Frontend

License

Notifications You must be signed in to change notification settings

unattended-ch/bbbadmin

BigBlueButton Admin- & User-Frontend

PHP 7.1 PHP 7.2 PHP 7.3 PHP 7.4 PHP 7.4

TABLE OF CONTENTS

  1. About bbbadmin
  2. Description
  3. Synopsis
  4. User URL for joining meeting
  5. Change page style
  6. Screenshots
  7. Todo

NAME

      bbbadmin - BigBlueButton Admin- & User-Frontend

DESCRIPTION

      bbbadmin is a minimalistic BBB PHP API Frontend

SYNOPSIS

  • Create webpage for administrators to manage BigBlueButton servers via the BBB PHP API
  • Create webpage for users only to join BigBlueButton server
  • Manage all running meetings on the server
  • Manage all recordings on the server
  • Provide central user join page for meetings
  • Send invitation email to users
  • Use JSON as configuration file
  • Create your own debian packages
  • Create your own language files
  • Detect client browser language or set default to "en"
  • Final release, now it's on you to make issues or participate on discussion

goto TOC

OPTIONS

  • List running meeting
  • List recordings
  • Create meetings
  • Join meeting
  • Stop meeting
  • Show meeting information
  • Show recordings
  • Delete recordings

goto TOC

PHP FILES

Filename Description
bbb_admin.json Configuration file for application
index.php Index page for application
bbb_config.php Load configuration
bbb_load.php Loading needed addons and additional scripts
bbb_create.php Create meeting on server
bbb_join.php Join meeting on server
bbb_info.php Display meeting informations
bbb_record.php Show recordings on server
bbb_delrec.php Delete recordings on server
bbb_send.php Send invitation mail to user
bbb_stop.php Stop meeting on server
bbb_user.php Join user to meeting

goto TOC

CONFIGURATION FILES

CONFIGURATION


{
    "debug": "1",
    "refresh": "30",
    "language": "en",
    "email": "[email protected]",
    "invite": "https://room.domain.com",
    "copyright": "© 2021 unattended.ch",
    "server": {
        "1": "room1.domain.com",
        "2": "room2.domain.com"
    },
    "logout": {
        "1": "https://room1.domain.com",
        "2": "https://room2.domain.com"
    },
    "logos":  {
        "1": "https://room1.domain.com/favicon.ico",
        "2": "https://room2.domain.com/favicon.ico"
    },
    "access": {
        "1": "ModeratorPasswordDefault" ,
        "2": "AttendeePasswordDefault" 
    },
    "rooms":  { 
        "1": { "name": "Bastelraum © 2021 unattended.ch", "id": "Bastelraum" ,  "acc": "Password", "msg": "Monday 20:00 - 22:00" },
        "2": { "name": "Startraum © 2021 unattended.ch", "id": "Startraum" ,  "acc": "Password", "msg": "" }
    }
}
Parameter Description
debug 0=Off 1=On
refresh Screen refresh in secords for main and recording page
language en=English, de=German, fr=French other languages are wanted
email Admin email for sending invitation links
invite URL to users join page for invitations
copyright Copyright
 "server":
Parameter Description
unique id Unique number for server
name Name of server (only descriptive)
 "logout":
Parameter Description
unique id Unique number for logout URL
name Logout URL for meeting (default invitation url &exit=1)
 "logos":
Parameter Description
unique id Unique number for Logo
name Logo URL for meetings
 "access":
Parameter Description
1 Moderator password default
2 Attendee password default if no room password was specified
 "rooms":
Parameter Description
unique id Unique number for room
name Room name fully descriptive for BigBlueButton
id Room ID for BigBlueButton
acc Room password for BigBlueButton

goto TOC

LANGUAGE SUPPORT

  • Change ["language": "en",] in bbb_admin.json to your language shortcode

    en=English de=German fr=French

  • See res/locale/ for .PO translation files and translation scripts

  • See locale/ for translated .PHP files

    goto TOC

STYLING

  • Use bootstrap.css for styling of bbb_user.php

    goto TOC

RELEASES

DEBIAN PACKAGES

  • Create your own bbbadmin.deb and bbb_users.deb for delivery

  • Use bbb_build.sh for package creation

    goto TOC

INSTALLATION SCRIPTS

PREREQUISITES

  1. Install PHP modules php-curl php-mbstring php-xml

      sudo apt install php-curl php-mbstring php-xml php-intl -y

    goto TOC

INSTALLATION ADMIN FRONTEND

  1. Clone bbbadmin to your home folder

      git clone https://github.com/unattended-ch/bbbadmin ~/bbbadmin
  2. Clone the BBB PHP API to your home folder

      git clone https://github.com/bigbluebutton/bigbluebutton-api-php ~/bigbluebutton-api-php
  3. Copy BBB contents of folder src/ to /opt/yourpage

      sudo rsync -avr ~/bigbluebutton-api-php/src/* /opt/yourpage/
  4. Copy bbbadmin *.php, .css and icons/.ico files to /opt/yourpage

      sudo rsync --exclude="res/*" -avr ~/bbbadmin/* /opt/yourpage/
  5. Create a symbolic link to the apache root folder

      sudo ln -s /opt/yourpage /var/www/html/
  6. Set owner of yourpage to www-data

      sudo chown -R www-data.www-data /opt/yourpage
  7. For configuration you can use bbb_admin.json

    • You must specify BBB_* Apache environment variables for every server in apache configuration
        SetEnv BBB_SECRET1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        SetEnv BBB_SERVER1_BASE_URL https://server1.domain.com/bigbluebutton/
        SetEnv BBB_SECRET2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        SetEnv BBB_SERVER2_BASE_URL https://server2.domain.com/bigbluebutton/
      
  8. Enable access security over .htpasswd file as a basic protection 8.1 Add th following to the default apache configuration

      <Directory "/var/www/html/yourpage">
        AllowOverride All
        Options SymLinksIfOwnerMatch IncludesNoExec
        Order allow,deny
        Allow from all
      </Directory>
    

    8.2 Copy .htacces file to your webpage

      sudo cp -v ~/bbbadmin/res/.htaccess /opt/youpage/

    8.3 Edit the path of password file in .htaccess, always use document root of apache

      sudo mcedit /opt/yourpage/.htaccess
      
      AuthUserFile "/var/www/html/yourpage/.htpasswd"

    8.4 Add user to .htpasswd

      sudo htpasswd -c /opt/youpage/.htpasswd [username]

    8.5 Restart apache server

      sudo systemctl restart apache2
  9. Firefox allow bbbadmin for popup windows to join meeting in new window

    goto TOC

INSTALLATION USER FRONTEND

  1. Clone bbbadmin to your home folder
      git clone https://github.com/unattended-ch/bbbadmin ~/bbbadmin
  2. Clone the BBB PHP API to your home folder
      git clone https://github.com/bigbluebutton/bigbluebutton-api-php ~/bigbluebutton-api-php
  3. Copy BBB contents of folder src/ to /opt/youruserpage
      sudo rsync -avr ~/bigbluebutton-api-php/src/* /opt/youruserpage/
  4. Copy bbbadmin *.php, .css and icons/.ico files to /opt/youruserpage
      sudo rsync --exclude="res/*" -avr ~/bbbadmin/* /opt/youruserpage/
      sudo mv -v /opt/youruserpage/bbb_user.php /opt/youruserpage/index.php
  5. Remove not needed files
      sudo rm -f /opt/youruserpage/index.php
      sudo rm -f /opt/youruserpage/bbb_create.php
      sudo rm -f /opt/youruserpage/bbb_delrec.php
      sudo rm -f /opt/youruserpage/bbb_info.php
      sudo rm -f /opt/youruserpage/bbb_join.php
      sudo rm -f /opt/youruserpage/bbb_record.php
      sudo rm -f /opt/youruserpage/bbb_stop.php
  6. Create a symbolic link to the apache root folder
      sudo ln -s /opt/yourpage /var/www/html/
  7. Set owner of your user page to www-data
      sudo chown -R www-data.www-data /opt/youruserpage
  8. For configuration you must edit bbb_admin.json
    • Remove all sub sections except "server": from bbb_admin.json
    • And you MUST specify BBB_* Apache environment variables for every server
      SetEnv BBB_SECRET1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      SetEnv BBB_SERVER1_BASE_URL https://server1.domain.com/bigbluebutton/
      SetEnv BBB_SECRET2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      SetEnv BBB_SERVER2_BASE_URL https://server2.domain.com/bigbluebutton/
    

9. Servers with no apache_setenv() and apache_getenv() support edit bbb_admin.json

- Edit section "bbb":
  1. User can now join the meeting with the following parameters (sid and mID is needed the rest is optional) :
      https://server.domain.com/bbbuser/?sid=X&mID=XXXXXXXXXXXXXXXXXX[&usr=Username][&join=1]
    
      https://server.domain.com?sid=X&mID=XXXXXXXXXXXXXXXXXX[&usr=Username][&join=1]
    
  • If the meeting is running the mask for username will be displayed
  • If not, nothing will be diplayed

goto TOC

CURL TIMEOUT

 If you get a lot curl errrors, change the following lines in [BigBlueButton.php]
         $data = curl_exec($ch);
 Replace with
         $retry = 3;
         $attempts = 0;
         do {
             try
                 {
                     $data = curl_exec($ch);
                 }
             catch (Exception $e)
                 {
                     $attempts++;
                     continue;
                 }
             }
         while(($data === false) && ($attempts < $retry));

goto TOC

SCREENSHOTS

  • index.php Home page goto TOC

  • index.php List meetings

    favicon Join meeting About Show meeting Mail Send invitation Exit Stop meeting

goto TOC

  • bbb_record.php Recordings

    Explorer View recorded meeting Exit Delete recording

goto TOC

TODO

  1. Enjoy
  2. Display 1st page of presentation as background on users join page (would be nice...and i am willing)
  3. Create download location for .MP4 meeting recording files in BBB (a lot of scripts...but i need help)
  4. Create cron srcipt to start meeting in timely fashion for a specific time period (we need this really ?)

goto TOC