{"id":17520607,"url":"https://github.com/oxzi/bbb-broadcaster","last_synced_at":"2025-07-27T00:10:06.425Z","repository":{"id":48956359,"uuid":"381079245","full_name":"oxzi/bbb-broadcaster","owner":"oxzi","description":"Containerized setup to stream and record a BigBlueButton meeting to the web.","archived":false,"fork":false,"pushed_at":"2023-04-18T19:59:15.000Z","size":441,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-23T16:09:53.513Z","etag":null,"topics":["bigbluebutton","live-streaming"],"latest_commit_sha":null,"homepage":"","language":"Go","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/oxzi.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-28T15:28:54.000Z","updated_at":"2024-10-15T10:30:57.000Z","dependencies_parsed_at":"2024-06-21T16:36:58.499Z","dependency_job_id":"c826d2c5-7bac-411e-8e57-724a91e33435","html_url":"https://github.com/oxzi/bbb-broadcaster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oxzi/bbb-broadcaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxzi%2Fbbb-broadcaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxzi%2Fbbb-broadcaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxzi%2Fbbb-broadcaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxzi%2Fbbb-broadcaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxzi","download_url":"https://codeload.github.com/oxzi/bbb-broadcaster/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxzi%2Fbbb-broadcaster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267273365,"owners_count":24062581,"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","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bigbluebutton","live-streaming"],"created_at":"2024-10-20T11:24:04.250Z","updated_at":"2025-07-27T00:10:06.383Z","avatar_url":"https://github.com/oxzi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BigBlueButton Broadcaster\n\nContainerized setup to stream and record a BigBlueButton meeting to the web.\nThis includes recording, converting, a web server with valid TLS and monitoring.\n\n![Streaming](contrib/sofaecke01a.jpg)\n\n![Grafana Dashboard](contrib/sofaecke01b.jpg)\n\n\n## Install\n\nThis software was made to be deployed entirely with Docker Compose.\nThus, the installation is quite straightforward.\n\nFirst, install both Docker and Docker Compose.\nFor Debian follow [this link for Docker](https://docs.docker.com/engine/install/debian/) and [this one for Docker Compose](https://docs.docker.com/compose/install/).\n\n```sh\n# Clone this repository including all its submodules\ngit clone --recurse-submodules https://github.com/oxzi/bbb-broadcaster.git\ncd bbb-broadcaster\n\n# Adjust the configuration, see below\ncp .env{.template,}\nvim .env\n\n# Go for a test drive\ndocker-compose -f docker-compose.yml - docker-compose.dev.yml up --build\n\n# Go live with valid HTTPS\ndocker-compose -f docker-compose.yml - docker-compose.prod.yml up --build\n```\n\n\n## Configuration\n\n- `VIDEO_MNT` specifies where the recordings should be saved.\n- `LETSENCRYPT_MNT` specifies where Let's Encrypt certificates should be saved.\n- `ACME_EMAIL` is your email address, used for Let's Encrypt.\n- `DOMAIN` is your domain for which your certificate will be created.\n- `BBB_URL` is the API endpoint of your BBB instance, e.g., `https://bbb.hsmr.cc/bigbluebutton/api`.\n- `BBB_SECRET` is your BBB API secret.\n  You can fetch this by `bbb-conf --secret` on your BBB host.\n- `BBB_MEETING_ID` is the BBB ID of the meeting you want to stream.\n  This ID is **not** the Greenlight ID within the URL.\n  However, when you are using the Greenlight frontend, you can query the meeting ID via SQL.\n  ```\n  user@bbb:/opt/greenlight$ sudo docker exec -it greenlight_db_1 bash\n\n  bash-5.1# psql greenlight_production postgres\n\n  greenlight_production=# SELECT bbb_id FROM rooms WHERE uid = 'general';\n                    bbb_id\n  ------------------------------------------\n   trololololololololololololololololololol\n  (1 row)\n  ```\n- `BBB_RESOLUTION` for the recording.\n  Beware, large resolutions create huge files.\n\n\n## Prometheus and Grafana\n\nBy default, three Prometheus exporters are exposed, each on its own port.\n\n- Port 9100: official [Node Exporter](https://github.com/prometheus/node_exporter)\n- Port 9101: custom RTMP viewer exporter\n- Port 9102: custom HLS viewer exporter\n\nFor the two custom exporters a Grafana Dashboard is shipped as `grafana_dashboard.json`.\n\n\n## On the shoulders of giants\n\nAll this is only possible thanks to the following software, those I unfortunately forgot and all their dependencies.\n\n- \u003chttps://docs.bigbluebutton.org/\u003e\n- \u003chttps://github.com/aau-zid/BigBlueButton-liveStreaming\u003e\n- \u003chttps://github.com/alfg/docker-nginx-rtmp\u003e\n- \u003chttps://github.com/arut/nginx-rtmp-module\u003e\n- \u003chttps://github.com/avrahamcornfeld/Varela-Round-Hebrew\u003e\n- \u003chttps://github.com/prometheus/node_exporter\u003e\n- \u003chttps://github.com/traefik/traefik\u003e\n- \u003chttps://github.com/video-dev/hls.js/\u003e\n- \u003chttps://nginx.org/\u003e\n- \u003chttps://www.ffmpeg.org/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxzi%2Fbbb-broadcaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxzi%2Fbbb-broadcaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxzi%2Fbbb-broadcaster/lists"}