Metadata-Version: 2.4
Name: bbblb
Version: 0.0.17
Summary: Yet another load balancer for BigBlueButton
Author-email: Marcel Hellkamp <me@defnull.de>
License-Expression: AGPL-3.0-or-later
License-File: LICENSE.md
Requires-Python: >=3.13
Requires-Dist: aiodns>=3.5.0
Requires-Dist: aiohttp>=3.13.1
Requires-Dist: aiosqlite>=0.21.0
Requires-Dist: alembic>=1.17.2
Requires-Dist: asyncpg>=0.30.0
Requires-Dist: click>=8.3.0
Requires-Dist: lxml>=6.0.2
Requires-Dist: psycopg[binary]>=3.2.12
Requires-Dist: pyjwt>=2.10.1
Requires-Dist: sqlalchemy>=2.0.44
Requires-Dist: starlette>=0.48.0
Requires-Dist: tabulate>=0.9.0
Provides-Extra: server
Requires-Dist: httptools>=0.7.1; extra == 'server'
Requires-Dist: uvicorn>=0.38.0; extra == 'server'
Requires-Dist: uvloop>=0.22.1; extra == 'server'
Description-Content-Type: text/markdown

# BBBLB: BigBlueButton Load Balancer

BBBLB (BigBlueButton Load Balancer) is yet another load balancer for [BigBlueButton](https://bigbluebutton.org/). It is designed to provide a secure, scalable, and robust way to scale BBB beyond single-server installations, enabling organizations to distribute meetings across many BBB servers or offer managed BBB hosting services on shared hardware.

> :warning: BBBLB is used in production, but still a very new project that may have some rough edges. Some APIs or features may not be stable yet and upgrades may break things. If you are looking for a stable solution that *just works*, better wait for the 1.0 release. But if you know what you are doing, go ahead and give it a try.

## Documentation

Documentation can be found at https://bbblb.readthedocs.io/  or in the `./docs/` folder. This is still a work in progress. Pull requests are very welcomed! Maybe join the [Matrix chat](https://matrix.to/#/#bbblb:matrix.org) to help each other out.


## Features

* **Multi-Tenancy:** Allow multiple front-end applications or customers to share the same BigBlueButton cluster while keeping their meetings and recordings strictly separated.
* **Advanced Loadbalancing:** Meetings are distributed based on current and predicted utilization, taking common usage patterns into account and avoiding the infamous ‘trampling herd’ problem.
* **Recording Management:** Recordings are transferred from the BBB servers to central storage via a simple and robust post_publish script. No special configuration, ssh transfers or shared network file system necessary.
* **Callback Relay:** Callbacks registered for a meeting are properly relayed between the back-end BBB server and the front-end application with a robust retry-mechanism.
* **Management API:** BBBLB offers its own API and command line tool to fetch health information, manage tenants, servers or recordings, or perform maintenance tasks.
* **Easy to deploy:** At least easier than most other BigBlueButton Load Balancer implementations.

## Architecture

BBBLB acts as a central API gateway, intelligently routing API requests and distributing meetings across a scaleable pool of BigBlueButton instances.

```mermaid
---
config:
  look: handDrawn
  theme: neutral
---
graph TD
    Clients("Clients / Apps
    e.g. Moodle")
    BBBLB["BBBLB (Loadbalancer)"]
    
    subgraph Cluster [BBB Server Pool]
        BBB1[BBB Server 1]
        BBB2[BBB Server 2]
        BBBN[BBB Server N]
    end

    %% Define Flow
    Clients -->|BBB API| BBBLB
    BBBLB -->|BBB API| BBB1
    BBBLB -->|BBB API| BBB2
    BBBLB -->|BBB API| BBBN
```

# Contributing

By contributing to this project, you confirm that you understand and agree to both the *Developer Certificate of Origin* and the *Contributor License Agreement*, which can be found in the `CONTRIBUTING.md` file. 


# Sponsors

* [Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen](https://gwdg.de)


# License

    BBBLB - BigBlueButton Load Balancer
    Copyright (C) 2025  Marcel Hellkamp

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
