{"id":18425452,"url":"https://github.com/toshke/big-blue-button-cloudformation-cfhl","last_synced_at":"2025-10-03T17:32:04.563Z","repository":{"id":38108355,"uuid":"254789004","full_name":"toshke/big-blue-button-cloudformation-cfhl","owner":"toshke","description":"BigBlueButton automation for AWS | CloudFormation templates","archived":false,"fork":false,"pushed_at":"2023-01-25T03:25:37.000Z","size":64,"stargazers_count":35,"open_issues_count":7,"forks_count":29,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-22T21:22:23.878Z","etag":null,"topics":["aws","big-blue-button","cfhighlander","cloud","cloudformation","cloudformation-template","distance-learning","video-conferencing"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toshke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-11T03:58:11.000Z","updated_at":"2024-08-03T00:28:46.000Z","dependencies_parsed_at":"2023-02-14T04:10:26.168Z","dependency_job_id":null,"html_url":"https://github.com/toshke/big-blue-button-cloudformation-cfhl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshke%2Fbig-blue-button-cloudformation-cfhl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshke%2Fbig-blue-button-cloudformation-cfhl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshke%2Fbig-blue-button-cloudformation-cfhl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshke%2Fbig-blue-button-cloudformation-cfhl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toshke","download_url":"https://codeload.github.com/toshke/big-blue-button-cloudformation-cfhl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247687952,"owners_count":20979571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","big-blue-button","cfhighlander","cloud","cloudformation","cloudformation-template","distance-learning","video-conferencing"],"created_at":"2024-11-06T05:04:01.199Z","updated_at":"2025-10-03T17:31:59.532Z","avatar_url":"https://github.com/toshke.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Big Blue Button on AWS\n\n[Big Blue Button](https://bigbluebutton.org/) is an open source solution for online conferencing\nand distance learning. This repository contains templates and source code for deploying the solution\non AWS platform. Templates source is compiled into final templates using [cfhighlander](https://github.com/theonestack/cfhighlander) tool.\n\nFeatures\n\n- Turn-key solution to get BigBlueButton up and running on AWS\n- Admin password available in SSM once the stack has been created\n- Configurable disk size\n- Root disk encrypted by default\n- Daily and weekly server backups as Amazon Machine Images (AMI),\n  using AWS Backup service\n- Connection to the server using AWS Session Manager (SSM)\n- Highly extensible and configurable if building your own CloudFormation templates\n\n### TL;DR ###\n\nYou will need Route53 Hosted zone to launch BigBlueButton cloudformation\nstack using regional-specific template, by clicking on appropriate link below.\nOnce the CFN stack is created (wait for that `CREATE_COMPLETE` state, you can access your server at `https://${DomainName}` (DomainName being cfn parameter\nyou provide). Look under SSM Parameter path given by `ConfigSSMPath`, defaulting to `/bigbluebuttong/config` for default\nadmin credentials.\n\n| Region        |Region name    |   Launch url  |\n| ------------- |:-------------:|:-------------:|\n| `ap-southeast-2` | Asia Pacific (Sydney) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-2#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.ap-southeast-2.amazonaws.com/templates-ap-southeast-2.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `us-east-1` | US East (N. Virginia) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.us-east-1.amazonaws.com/templates-us-east-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `ap-northeast-1` | Asia Pacific (Tokyo) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.ap-northeast-1.amazonaws.com/templates-ap-northeast-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `ap-northeast-2` | Asia Pacific (Seoul) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.ap-northeast-2.amazonaws.com/templates-ap-northeast-2.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `ap-southeast-1` | Asia Pacific (Singapore) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.ap-southeast-1.amazonaws.com/templates-ap-southeast-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `ap-south-1` | Asia Pacific (Mumbai) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.ap-south-1.amazonaws.com/templates-ap-south-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `eu-central-1` | EU (Frankfurt) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.eu-central-1.amazonaws.com/templates-eu-central-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `eu-north-1` | Europe (Stockholm) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=eu-north-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.eu-north-1.amazonaws.com/templates-eu-north-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `eu-west-1` | EU (Ireland) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.eu-west-1.amazonaws.com/templates-eu-west-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `eu-west-2` | Europe (London) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=eu-west-2#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.eu-west-2.amazonaws.com/templates-eu-west-2.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `eu-west-3` | Europe (Paris) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=eu-west-3#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.eu-west-3.amazonaws.com/templates-eu-west-3.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `us-east-2` | US East (Ohio) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.us-east-2.amazonaws.com/templates-us-east-2.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `us-west-1` | US West (N. California) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=us-west-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.us-west-1.amazonaws.com/templates-us-west-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `us-west-2` | US West (Oregon) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.us-west-2.amazonaws.com/templates-us-west-2.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `sa-east-1` | South America (Sao Paulo) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=sa-east-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.sa-east-1.amazonaws.com/templates-sa-east-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n| `ca-central-1` | Canada (Central) | \u003ca target=\"_blank\" href=\"https://console.aws.amazon.com/cloudformation/home?region=ca-central-1#/stacks/new?stackName=big-blue-button\u0026templateURL=https://s3.ca-central-1.amazonaws.com/templates-ca-central-1.cfhighlander.info/templates/bbb/1589275224/bbb.compiled.yaml\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/toshke/big-blue-button-cloudformation-cfhl/fec34f65f91ef984f95945a2e6e285c6b54f9992/launch-stack.svg\" /\u003e\u003c/a\u003e  |\n\n[You can watch the setup on-screen video recording here](https://youtu.be/XhMEnvm4220)\n\n## Intro\n\nThis component was initially developed for needs of [AWS Tools And Programming](https://www.meetup.com/Melbourne-AWS-Programming-and-Tools-Meetup/) meetup\nworkshop. Due recent surge in need for distant learning solutions, it was made further configurable for use in\ndifferent educational and enterprise settings. By no means is this final version of the component,\nand pull requests and feature requests are welcome.\n\n## Prerequisites\n\n- AWS Account with valid programmatic access credentials (api keys)\n- **Valid** Route53 Hosted Zone within AWS Account (e.g. example.com)\n\nIf you want to build and publish your own templates, you can do so either through docker (**recommended**), or directly on host\nmachine. Depending on method used, you will need\n\n- Ruby (tested with v2.5) if building and publishing templates from your own host\n- Docker, `docker-compose` and `make`, if using [3musketeers](https://3musketeers.io/) approach\n\n## Stack parameters\n\n`Route53Zone` - valid Route53 zone in your AWS Account. E.g. example.com\n\n`DomainName` - FQDN for BBB server. Must be either same as Route53Zone, or a subdomain e.g. bigbluebutton.example.com\n\n`AdminEmail` - Administrator email. This will be used both for let's ecnrypt SSL certificate registration and for admin user account on BBB server.\n\n`asgInstanceType` - Instance Type for your server. BBB Doco recommends 4cores and 8GB RAM as minimum, hence t3.xlarge is default option\n\n`ImageId` - Amazon Machine Image (AMI) id for your server. Defaults to Ubuntu 18.04 within selected region.\n\n`RootVolumeSpace` - Server size in GB. Defaults to 40\n\n`ConfigSSMPath` - Amazon System Manager Parameter store path, where setup will store default credentials and url. You may change the password from Greenlight UI.\nMust start with forward slash `/`.\n\n`DeploymentMode` - Either **EC2** or **ASG**. Self explanatory, ASG will provide auto-healing functionality,\n                  with EC2, you can start/stop the instance as cost savings measure. Defaults to `EC2`\n\n`TerminationProtection` - Applicable only in `EC2` mode. Set to `true` to disable instance termination via API,\nas protection from incidental instance termination.\n\n## Operations\n\n\n### Default admin credentials\n\nAdministrator password for WebUI (Greenlight) is stored in `/bigbluebutton/config/admin_password` SSM Parameter value.\nTo retrieve it, use command below (or go to [System Manager Web Console](https://console.aws.amazon.com/systems-manager/parameters))\n\n```shell\nCONFIG_PATH=/bigbluebutton/config\nBBBPASS=$(aws ssm get-parameter --name ${CONFIG_PATH}/admin_password --query Parameter.Value --output text --with-decryption)\nBBBUSER=$(aws ssm get-parameter --name ${CONFIG_PATH}/admin_user --query Parameter.Value --output text)\nBBBSERVER=$(aws ssm get-parameter --name ${CONFIG_PATH}/server_url --query Parameter.Value --output text)\necho \"Login with ${BBBUSER}:${BBBPASS} at ${BBBSERVER}/b/signin\"\n```\n\n### Logging into your BigBlueButton server via SSM\n\nThis solution uses AWS SSM Session Manager by default to connect to your BBB ec2 instance. See **Configuration** section below, if you\nwish to use ssh directly. You'll need `ssm:StartSession` and `ssm:TerminateSession` permissions on your API user to do so. Alternatively,\ngenerate cloudformation templates with ssh access enabled (see config below).\n\n```shell\n# lookup instance-id. Either look for instance named '' in your ec2 console,\n# or execute command below\n$ instance_id=$(aws ec2 describe-instances --filters \\\n     \"Name=instance-state-name,Values=running\" \\\n     \"Name=tag:Name,Values=BigBlueButton-Server\" \\\n     --query 'Reservations[].Instances[].InstanceId' --output text)\n\n# to log into the instance use ssm\n$ aws ssm start-session --target \"${instance_id}\"\n\nStarting session with SessionId: api.user-0e11294b740b4a77b\n$ sudo su\nroot@ip-10-200-0-208:/var/snap/amazon-ssm-agent/2012# tail /var/log/cloud-init-output.log -n 4\n\nCloud-init v. 19.4-33-gbb4131a2-0ubuntu1~16.04.1 running 'modules:final' at Tue, 14 Apr 2020 01:49:09 +0000. Up 31.80 seconds.\nci-info: no authorized SSH keys fingerprints found for user ubuntu.\nCloud-init v. 19.4-33-gbb4131a2-0ubuntu1~16.04.1 finished at Tue, 14 Apr 2020 02:01:00 +0000. Datasource DataSourceEc2Local.  Up 742.52 seconds\n```\n\n### Updating the stack\n\n**IMPORTANT** it is recommended that you backup the BBB instance before doing any stack updates.BBB Ec2 instances are backed up by default every 24 hours.\n\n\n## Usage\n\nSimplest way of launching BigBlueButton on AWS is through one of the links from the top of this page. Optionally,\nyou may want to configure, update, generate and upload your own template to S3. Configuration is preset for `ap-southeast-2` region.\n\n\n### Generate and build your own templates\n\nIf you wish to make customizations from default setup, and  build and publish your own templates rather then using links provided above,\nread below for configuration options, as well as on how to build, publish and manage the templates.\nFirs step is to clone this repo\n\n```shell\ngit clone https://github.com/toshke/big-blue-button-cloudformation-cfhl.git\n```\n### Configuration\n\nIf you wish to tweak the generated templates, update the values in following files, as they are passed in\nas configuration to Cfhighlander and Cfndsl templates.\n\n- `bbb.config.yaml`\n- `vpc.config.yaml`\n- `asg.config.yaml`\n- `backup.config.yaml`\n\nAll files come with explanation for configuration keys and their values. Some examples are\n\n**Use your own VPC** - Look at `bbb.config.yaml:render_vpc`\n\n**Connect to instances using SSH** - Look at `asg.config.yaml:allow_ssh` and `aws.config.yaml:allow_incoming`\n\n#### AMI and different regions\n\nIt is highly advisable to use either Ubuntu 18.04 AMI from Canonical, or AMI crated from your existing BBB\nserver through backup process. BigBlueButton stability is guaranteed for this host OS, and can't be guaranteed\nfor others. By default, cloudformation templates will be rednered for `ap-southeast-2` AMI. This is configurable\nthrough `bbb.config.yaml:image_id` configuration value\n\nUse ruby script below to determine what is Ubuntu 16.04 image in your region (you'll need `aws-sdk-ec2`) ruby gem\n\n```ruby\nrequire 'aws-sdk-ec2'\nregion = 'us-east-1'\nami_name = 'ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20200129'\ncanonical_id = '099720109477'\nregional_client = Aws::EC2::Client.new(region: region)\nregional_ami = regional_client.describe_images({ filters: [\n      { name: 'name', values: [ami_name] },\n      { name: 'owner-id', values: [canonical_id] }\n  ] }).images[0].image_id\nputs \"Image id: #{regional_ami}\"\n```\n\nEdit `user_data.sh` to modify instance setups script (this may break things).\n\n#### Recommended:  Using docker\n\nDocker method respects `AWS_REGION` and `AWS_DEFAULT_REGION` environment variables\n\n```shell\n# first, clone the repo\n$ git clone https://github.com/toshke/.git \u0026\u0026 cd\n\n# build and validate templates\n$ make build\n\n# templates can be located in out/yaml folder. to upload to s3 use cfpublish. Use your own bucket\n# and desired prefix\n$ make publish DIST_BUCKET=templates.cfhighlander.info DIST_PREFIX=cftemplates/big-blue-button [DIST_VERSION=1.0]\n\n```\n\n#### Without docker\n\n```\n# first, clone the repo\n$ git clone https://github.com/toshke/.git \u0026\u0026 cd\n\n# install required gems\n$ bundle install\n\n# build and validate cf templates\n$ cfcompile bbb ---validate\n\n# templates can be located in out/yaml folder. to upload to s3 use cfpublish. Use your own bucket\n# and desired prefix\n$ cfhighlander cfpublish --validate bbb --dstbucket templates.cfhighlander.info --dstprefix 'cftemplates/big-blue-button' [--version 1.0]\n```\n\nAfter cfpublish command, launch stack url will be displayed in terminal output\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoshke%2Fbig-blue-button-cloudformation-cfhl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoshke%2Fbig-blue-button-cloudformation-cfhl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoshke%2Fbig-blue-button-cloudformation-cfhl/lists"}