{"id":22191866,"url":"https://github.com/bigbluebutton/bbb-playback-proxy","last_synced_at":"2026-02-26T12:02:07.095Z","repository":{"id":44546583,"uuid":"344944426","full_name":"bigbluebutton/bbb-playback-proxy","owner":"bigbluebutton","description":"A docker encapsulated version for BigBlueButton Playback Player proxied with Nginx.","archived":false,"fork":false,"pushed_at":"2026-01-26T20:52:48.000Z","size":45,"stargazers_count":2,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-27T07:45:18.324Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","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":"LICENSE","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,"zenodo":null}},"created_at":"2021-03-05T21:59:13.000Z","updated_at":"2026-01-26T20:52:18.000Z","dependencies_parsed_at":"2025-07-18T06:26:12.179Z","dependency_job_id":null,"html_url":"https://github.com/bigbluebutton/bbb-playback-proxy","commit_stats":{"total_commits":27,"total_committers":1,"mean_commits":27.0,"dds":0.0,"last_synced_commit":"841c64fa6abb1040b5c35d3fa0abbd2923fa6bcf"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bigbluebutton/bbb-playback-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fbbb-playback-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fbbb-playback-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fbbb-playback-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fbbb-playback-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigbluebutton","download_url":"https://codeload.github.com/bigbluebutton/bbb-playback-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fbbb-playback-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29858461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T08:51:08.701Z","status":"ssl_error","status_checked_at":"2026-02-26T08:50:19.607Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-12-02T12:18:03.614Z","updated_at":"2026-02-26T12:02:07.080Z","avatar_url":"https://github.com/bigbluebutton.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bbb-playback-proxy\n\nA docker encapsulated version for BigBlueButton Playback Player proxied with nginx.\n\n## Overview\n\nBigBlueButton records all the events and media data generated during a BigBlueButton session for later playback.\n\nBigBlueButton processes the recordings in 5 phases:\n\n1. Capture\n2. Archive\n3. Sanity\n4. Process\n5. Publish\n6. Playback\n\nSome Record and Playback phases store the media they handle in different directories. But in the end, the Playback phase involves taking the published files (audio, webcam, deskshare, chat, events, metadata) and playing them in the browser.\n\nThe details for how BigBlueButton Recordings are created can be found at [Recordings](https://docs.bigbluebutton.org/dev/recording.html)\n\nBy default the media file is stored in the BigBlueButton file system. This means that BigBlueButton, which includes nginx as one of its core components, has the ability to serve the media files and a player as static content, from type-specific root directories.\n\nThere are however situations when it is necessary to store and serve this recordings in a different way. For example when the File System is not enough for the amount of data stored, or when the recordings created by clustered BigBlueButton servers needs to be aggregated.\n\nIn those cases one strategy that can be applied is to forward the requests to a proxy that is only focused on serving the recordings.\n\n### Architecture\n\nThe bbb-playback-proxy Docker image is a Linux Docker image (apline or amazonlinux) that has Nginx stock installed and includes the same nginx configuration files, media player and Directory structure that can be found in a BigBlueButton server.\n\nExample.\n\n### Ports\n\nThis image only exposes port 80 externally\n\n### Usage\n\nExample with `docker run`\n```\ndocker run -d -p 80:80 -v /mnt/scalelite-recordings/var/bigbluebutton/:/var/bigbluebutton/ bigbluebutton/bbb-playback-proxy:bionic-23-dev-alpine3.11\n```\n\nExample with `docker-compose`\n\n```\nversion: '3'\nservices\n  frontend-proxy:\n    image: nginx:latest\n    container_name: frontend-proxy\n    restart: unless-stopped\n    volumes:\n      - ./proxy/log/nginx/:/var/log/nginx\n      - ./proxy/nginx/sites.template.${DOCKER_PROXY_NGINX_TEMPLATE:-scalelite-proxy}:/etc/nginx/sites.template\n      - ./data/certbot/conf/:/etc/letsencrypt\n      - ./data/certbot/www/:/var/www/certbot\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    environment:\n      - NGINX_HOSTNAME=${URL_HOST:-xlab.blindside-dev.com}\n    depends_on:\n      - certbot\n      - recording-proxy\n    command: /bin/bash -c \"envsubst '$$NGINX_HOSTNAME' \u003c /etc/nginx/sites.template \u003e /etc/nginx/conf.d/default.conf \u0026\u0026 exec nginx -g 'daemon off;'\"\n\n  recording-proxy:\n    image: bigbluebutton/bbb-playback-proxy:bionic-23-dev-alpine3.11\n    container_name: recording-proxy\n    restart: unless-stopped\n    volumes:\n      - /mnt/recordings/var/bigbluebutton/published:/var/bigbluebutton/published\n\n  certbot:\n    image: certbot/certbot\n    container_name: certbot\n    volumes:\n      - ./log/certbot:/var/log/letsencrypt\n      - ./data/certbot/conf:/etc/letsencrypt\n      - ./data/certbot/www:/var/www/certbot\n    entrypoint: \"/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h \u0026 wait $${!}; done;'\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigbluebutton%2Fbbb-playback-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigbluebutton%2Fbbb-playback-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigbluebutton%2Fbbb-playback-proxy/lists"}