{"id":22191824,"url":"https://github.com/bigbluebutton/docker-dev","last_synced_at":"2025-07-26T22:31:43.901Z","repository":{"id":65628405,"uuid":"377288490","full_name":"bigbluebutton/docker-dev","owner":"bigbluebutton","description":"How to use Docker to setup a development environment for BigBlueButton","archived":false,"fork":false,"pushed_at":"2024-05-08T13:23:42.000Z","size":89,"stargazers_count":18,"open_issues_count":1,"forks_count":9,"subscribers_count":16,"default_branch":"main","last_synced_at":"2024-10-29T13:22:47.910Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bigbluebutton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-15T20:40:50.000Z","updated_at":"2024-10-07T08:33:46.000Z","dependencies_parsed_at":"2024-03-11T16:02:49.085Z","dependency_job_id":"713c19d1-9726-4d6c-b67b-d9ebd9f58d9e","html_url":"https://github.com/bigbluebutton/docker-dev","commit_stats":{"total_commits":38,"total_committers":5,"mean_commits":7.6,"dds":0.368421052631579,"last_synced_commit":"d4d186d37987e8aede9c277ef0f9db84d0fb3c83"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fdocker-dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fdocker-dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fdocker-dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fdocker-dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigbluebutton","download_url":"https://codeload.github.com/bigbluebutton/docker-dev/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227580524,"owners_count":17789274,"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":[],"created_at":"2024-12-02T12:17:55.080Z","updated_at":"2025-07-26T22:31:43.890Z","avatar_url":"https://github.com/bigbluebutton.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-dev\n\nHow to use Docker to setup a development environment for BigBlueButton\n\n## Environment\n\nWe're considering you are using a [Ubuntu 24.04 LTS](https://ubuntu.com/download/desktop) but other versions/distributions can work too.\n\nAn internet connection is required. It can be a shared network ( no need to forward ports in your router ).\n\n## SSL certificate\n\nRunning a BigBlueButton server requires a SSL certificate. The install script will automatically generate an self-signed certificate or you can rather specify a folder which contains a previous generated certificate.\n\n\n## Docker setup\n\nThe next script depends on having docker available to your user, so before proceeding, run the following command (note that a computer reboot is required):\n\n```sh\nsudo usermod -aG docker `whoami`\nsudo reboot\n```\n\n## Container setup\n\n1. Save (right click, save as) the creation script in home directory (`~`): [create_bbb.sh](create_bbb.sh?raw=1)\n\n2. Add permissions to the script:\n```sh\nchmod +x create_bbb.sh\n```\n\n3. Run the script ( it will remove previously created dockers and create a new one):\nDocker **bbb 3.0**\n```\n./create_bbb.sh --image=imdt/bigbluebutton:3.0.x-develop --update bbb30\n```\n\nParameters:\n`./create_bbb.sh [--update] [--fork=github_user] [--fork-skip] [--domain=domain_name] [--ip=ip_address] [--image=docker_image] [--cert=certificate_dir] [--custom-script=path/script.sh] [--docker-custom-params=\"\"] [--docker-network-params=\"\"] {name}`\n- {name}: Name of the container (e.g `bbb30`) **(REQUIRED)**\n- --update: check for new image version `--update`\n- --domain: set the host domain (e.g `--domain=test`), default: `test`. BBB URL will be `https://{NAME} + {DOMAIN}`\n- --cert: specify the directory which contains a certificate (`fullchain.pem` and `privkey.pem`) (e.g `--cert=/tmp`) *(if absent a new certificate will be created)*\n- --custom-script: path of a shell script file to be executed immediately when the container is created (useful for setting some personal preferences for configs)\n- --ip: force container IP (e.g `--ip=172.17.0.2`)\n- --fork: Username in Github with bbb Fork `--fork=bigbluebutton`\n- --fork-skip: Skip the step to clone Bigbluebutton project\n- --image: Force an image different from default `--image=imdt/bigbluebutton:2.6.x-develop`\n- --docker-custom-params: Append a custom param to `docker run`,  for instance:\n  - mount a directory from your host into the container `--docker-custom-params=\"-v $HOME/bbb30/shared:/home/bigbluebutton/shared:rw\"`\n  - run docker with limited resources (8 cores) `--docker-custom-params=\"--cpuset-cpus=0-7\"`\n- --docker-network-params: Override the default param if necessary, for instance to make the container use the host's IP set `--docker-network-params=\"--net=host\"`\n## Using the container\n\n### SSH session within the container\n``` \nssh bbb30\n``` \nReplace **bbb30** with the {name} param of `create_bbb.sh`\n\n\n### Use `/tmp` to exchange files\nThe directory `/tmp` is shared between the host and the container. So you can use this directory to exchange files between them.\n\nAlternatively, you can use the `--docker-custom-params` parameter to designate a different directory as the exchange location.\n\n### Start using BigBlueButton\n\nThat's all, open https://bbb30.test (or your custom `https://{name}.{domain}`) in your browser and enjoy.\n\nPS: if you see certificate error in your browser, you need to add the CA certificate in it's trusted certificates. Instructions for Chrome and Firefox can be found [here](https://github.com/bigbluebutton/docker-dev/issues/1)\n\n##  Removing an existing container\n``` \n./create_bbb.sh --remove {container_name}\n``` \n\nor rather you can remove a BBB docker image using `docker image rm imdt/bigbluebutton:2.6.x-develop --force`\n\n\n---\n## BBB-Conf\nLink to the API-Mate: `bbb-conf --salt`\n\nRestart BBB: `sudo bbb-conf --restart`\n\nCheck configs: `sudo bbb-conf --check`\n\n---\n## Hasura (bbb-graphql-server)\nConsole Url: https://bbb30.test/console (`{your bbb domain}`**`/console`**)\n\nPassword: bigbluebutton\n\n---\n\n## Troubleshooting\n\nIn case of problems, you can update the packages by running:\n\n```sh\nsudo apt update\nsudo apt dist-upgrade -y\n```\n\n---\n# Instructions to run BigBlueButton from source (via command-line)\n- **HTML5 - bigbluebutton-html5**: the Front-End (users meeting interface) [*Meteor*]\n- **AKKA - akka-bbb-apps**: Backend that exchange msgs with Frontend through Redis pub/sub msgs (stores the meeting state and execute validations for Html5, *e.g: Can John send a message?*) [*Scala*]\n- **API - bigbluebutton-web**: Receives requests e.g: Create room, Enter room (when someone asks to enter the room, enters the API and then is redirected to html5) [*Grails*]\n    - **-bbb-common-web**: Contains useful functions that are used by the API [*JAVA*]\n- **bbb-common-message**: Contains all Redis messages! Akka and the API import this project to know the existing messages [*JAVA*]\n\nFurther informations in https://docs.bigbluebutton.org/2.6/dev.html\n\n---\n## HTML5 client\n\n#### Running HTML5\n```\ncd ~/src/bigbluebutton-html5/\n./run-dev.sh\n```\n\n#### Running HTML5 with **Full RESET** (needed sometimes)\n```\ncd ~/src/bigbluebutton-html5/\n./run-dev.sh --reset\n```\n\n---\n## Common-Message (required for BBB-Web and Akka)\n```\ncd ~/src/bbb-common-message\n./deploy.sh\n``` \n\n---\n## BBB-Web (API)\n\n#### Running Bigbluebutton-web\n```\ncd ~/src/bigbluebutton-web/\n./run-dev.sh\n```\n\n**If `bbb-common-web` was changed run:**\n```\ncd ~/src/bbb-common-web\n./deploy.sh\ncd ~/src/bigbluebutton-web/\n./build.sh\n```\n\n\n---\n## Akka-apps\n\n#### Running Akka within **bbb-docker-dev**\n```bash\ncd ~/src/akka-bbb-apps/\n./run-dev.sh\n```\n\n#### Running Akka on **IntelliJ IDEA**\n- [Requires Common-Message](#common-message-required-for-bbb-web-and-akka)\n- Open bbb-docker-dev SSH connection appending `-with-ports` to the command *(it will create tunnel for Redis port 6379)*\n```bash\nssh {container_name}-with-ports\n```\n- Run Akka within Docker once, to set the configs\n```bash\ncd ~/src/akka-bbb-apps/\n./run-dev.sh\n```\n- If everything is working, press `Ctrl + C` to stop\n\n- Open IDEA, open the Sbt tab and run:\n```\n~reStart\n```\n![image](https://user-images.githubusercontent.com/5660191/158892260-8356d117-3be8-424a-aa24-ca405511f4e5.png)\n\n\n---\n## Redis\n- To track the exchange of messages between applications \n```\nredis-cli psubscribe \"*\" | grep --line-buffered -v 'pmessage\\|CheckRunningAndRecording\\|MeetingInfoAnalyticsServiceMsg\\|CheckAliveP\\|GetUsersStatusToVoiceConfSysMsg\\|SendCursorPosition\\|DoLatencyTracerMsg'\n```\n\n## Simulate Dial-in user\n\n- Create a meeting and copy the Voice Bridge number\n\n![simulate-dial-in](https://github.com/bigbluebutton/docker-dev/assets/5660191/da17835f-fd49-4072-835f-e210e0c8cb75)\n\n\nWithin the container run (replacing by the voice bridge you just copied):\n\n```\nVOICE_BRIDGE=76034\ncd /opt/sipp\nsudo sipp -sn uac_pcap -m 1 -aa -d 30000 -s $VOICE_BRIDGE \"$(hostname -I | awk '{print $1}')\":5060\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigbluebutton%2Fdocker-dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigbluebutton%2Fdocker-dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigbluebutton%2Fdocker-dev/lists"}