Skip to content

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BBB Backup Recordings External

Go Version GitHub Actions Workflow Status License

A lightweight, concurrent backup tool for BigBlueButton recordings, backing up from outside the server. Downloads all presentation, video, screenshare, podcast, and notes content from a BigBlueButton instance with zero external dependencies.

Features

  • Multi-format support: Backs up presentations, videos, screenshare, podcasts, and notes
  • Concurrent downloads: Configurable parallel downloads with built-in rate limiting
  • Zero dependencies: Pure Go implementation with no external packages
  • URL inspection mode: Export all discovered URLs without downloading
  • Robust error handling: Gracefully handles missing files and network errors
  • Automatic file discovery: Uses intelligent guessing to locate numbered file sequences

Installation

Prerequisites

  • Go 1.26 or later
  • Access to a BigBlueButton instance with API credentials

Build from Source

Clone the repository:

git clone https://github.com/sa-kemper/bbb-backup-recordings-external.git
cd bbb-backup-recordings-external

Build the binary (without debug symbols for a smaller executable):

go build -ldflags="-s -w" -o bbb-backup-recordings-external ./cmd

This creates a binary named bbb-backup-recordings-external in your current directory.

Usage

Basic Usage

Run the binary with your BigBlueButton credentials:

./bbb-backup-recordings-external \
  -bbb-hostname "bbb.example.com" \
  -bbb-api-key "your-api-key-here" \
  -backup-directory "./backups"

Configuration

All configuration is done via command-line flags:

Flag Environment Variable Default Description
-bbb-hostname BBB_HOSTNAME (required) Hostname of the BigBlueButton instance (e.g., bbb.example.com)
-bbb-api-key BBB_API_KEY (required) API key/shared secret from your BBB instance
-bbb-port — 443 Port of the BigBlueButton instance
-bbb-timeout — 10s HTTP timeout for requests to BBB (e.g., 30s, 1m)
-backup-directory — Current working directory Directory where backup files are stored
-urldump — false Only discover and export URLs to urls.txt without downloading

Examples

Using Environment Variables

export BBB_HOSTNAME="bbb.example.com"
export BBB_API_KEY="your-api-key-here"

./bbb-backup-recordings-external -backup-directory "./backups"

Export URLs Only (No Download)

Useful for inspecting what will be downloaded:

./bbb-backup-recordings-external \
  -bbb-hostname "bbb.example.com" \
  -bbb-api-key "your-api-key-here" \
  -urldump

This creates a urls.txt file with all discovered URLs.

Custom Timeout for Slow Networks

./bbb-backup-recordings-external \
  -bbb-hostname "bbb.example.com" \
  -bbb-api-key "your-api-key-here" \
  -bbb-timeout "60s" \
  -backup-directory "./backups"

Non-Standard Port

./bbb-backup-recordings-external \
  -bbb-hostname "bbb.example.com" \
  -bbb-port 8080 \
  -bbb-api-key "your-api-key-here" \
  -backup-directory "./backups"

How It Works

  1. Discovery: Connects to the BigBlueButton API and retrieves all available recordings
  2. URL Collection: For each recording, discovers all associated files (presentations, videos, etc.) using:
    • Direct file references from metadata
    • Intelligent guessing of numbered file sequences (e.g., slide1.svg, slide2.svg)
    • Multiple directory path checks to handle BigBlueButton's storage quirks
  3. Concurrent Download: Downloads all discovered files with configurable concurrency
  4. Storage: Saves files to disk maintaining the original directory structure

Output Structure

Backups are organized by recording type and meeting ID:

backups/
├── presentation/
│   └── {internalMeetingID}/
│       ├── shapes.svg
│       ├── metadata.xml
│       └── ...
├── video/
│   └── {internalMeetingID}/
│       ├── video-0.m4v
│       └── ...
├── screenshare/
│   └── {internalMeetingID}/
│       └── screenshare-0.webm
├── podcast/
│   └── {internalMeetingID}/
│       └── audio.ogg
└── notes/
    └── {internalMeetingID}/
        └── notes.pdf

Performance Tuning

The tool uses concurrent downloads with a default limit. For large backups:

  • Increase timeout if experiencing timeouts: -bbb-timeout "60s"
  • Use URL dump mode first to preview what will be downloaded: -urldump
  • Run during off-peak hours to minimize impact on your BBB instance

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

About

A lightweight, concurrent backup tool for BigBlueButton recordings, backing up from outside the server. Downloads all presentation, video, screenshare, podcast, and notes content from a BigBlueButton instance with zero external dependencies.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages