From f95e4b730ced1b9e162c131491c973a36119e2df Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Wed, 20 Nov 2024 12:52:35 -0500 Subject: Add BBB notes and backstage --- 2024/organizers-notebook/index.org | 135 +++++++++++++++++++++++++++++- organizers-notebook.md | 166 +++++++++++++++++++++++++++---------- organizers-notebook/index.org | 21 +++++ 3 files changed, 278 insertions(+), 44 deletions(-) diff --git a/2024/organizers-notebook/index.org b/2024/organizers-notebook/index.org index 40241c26..b48f01d1 100644 --- a/2024/organizers-notebook/index.org +++ b/2024/organizers-notebook/index.org @@ -405,11 +405,142 @@ DEADLINE: <2024-11-15 Fri> - Possibly relevant: dynamic DNS? https://www.linode.com/community/questions/7945/custom-dynamic-dns Can also update manually -*** TODO Create meeting rooms for each speaker -SCHEDULED: <2024-11-15 Fri> + + + + +*** Notes +**** install, sizes +[2024-11-19 Tue] + +Prerequisites: +- BBB requires 4 CPU cores before it will install. bbb-conf.sh is fairly straightforward, so I guess we could spin down and then spin up again. + +Steps: +1. Run the BBB installer. +2. ~sudo apt install bbb-playback-video~ and then follow the instructions at [[https://docs.bigbluebutton.org/3.0/administration/customize/#install-additional-recording-processing-formats][Server Customization | BigBlueButton]] . +3. https://docs.bigbluebutton.org/3.0/administration/customize/#mute-all-users-on-startup + +I think it needs 4 CPU cores for regular running, too. + +Sizing to shared 8GB 4 core for testing +#+begin_src sh :eval no +linode-cli linodes resize 67329098 --type g6-standard-4 --allow_auto_disk_resize false +#+end_src +takes about 2 minutes + +Sizing to shared nanode, dormant + +#+begin_src sh :eval no +linode-cli linodes resize 67329098 --type g6-nanode-1 --allow_auto_disk_resize true +#+end_src + +Resize disk +linode-cli linodes disks-list 67329098 +linode-cli linodes disk-resize 67329098 131474261 --size 24000 + +/var/bigbluebutton is where recordings will go + +https://techdocs.akamai.com/linode-api/reference/post-resize-disk + +https://www.linode.com/community/questions/21942/how-can-i-schedule-resizing-a-linode +**** backing up +[2024-11-20 Wed] ssh root@66.175.208.243 'tar zcvf - /var/bigbluebutton /etc/bigbluebutton /root/greenlight-v3 /usr/local/bigbluebutton /usr/share/bbb-web' > bbb-backup.tar.gz +If changing IP: bbb-conf --setip bbb-new.example.com + +*** DONE Create meeting rooms for each speaker +CLOSED: [2024-11-20 Wed 12:18] SCHEDULED: <2024-11-15 Fri> :PROPERTIES: :CREATED: [2024-11-02 Sat 11:50] +:Effort: 0:30 :END: +:LOGBOOK: +CLOCK: [2024-11-20 Wed 10:48]--[2024-11-20 Wed 12:18] => 1:30 +:END: + +Now that I'm more familiar with BigBlueButton and +Greenlight, I don't have to [[https://sachachua.com/blog/2023/10/using-emacs-and-spookfox-to-automate-creating-bigbluebutton-rooms-in-mozilla-firefox/][use Spookfox to +automate creating BigBlueButton rooms in Mozilla +Firefox]]. I can just create them through the Rails +console. + +docker exec -it greenlight-v3 bundle exec rails c + +user_id = User.find_by_email("sacha@sachachua.com").id + +#+begin_src emacs-lisp :results replace +(mapconcat (lambda (group) + (format + "Room.create(user_id: user_id, name: \"%s - %s\")\n" + (plist-get (cadr group) :speakers) + (string-join (mapcar (lambda (talk) (plist-get talk :slug)) + (cdr group))))) + (emacsconf-mail-groups (emacsconf-active-talks (emacsconf-get-talk-info))) + "") +#+end_src + +#+RESULTS: +:results: +Room.create(user_id: user_id, name: "Robin Templeton - guile") +Room.create(user_id: user_id, name: "Daniel Pinkston - students") +Room.create(user_id: user_id, name: "Ihor Radchenko and Bastien Guerry - org-update") +Room.create(user_id: user_id, name: "Mats Lidell - hyperbole") +Room.create(user_id: user_id, name: "screwlisp - mcclim") +Room.create(user_id: user_id, name: "Vincent Conus - papers") +Room.create(user_id: user_id, name: "Jonathan Otsuka - secrets") +Room.create(user_id: user_id, name: "Aaron Grothe - repro") +Room.create(user_id: user_id, name: "Ryota - color") +Room.create(user_id: user_id, name: "Danny McClanahan - regex") +Room.create(user_id: user_id, name: "Bob Weiner - hywiki") +Room.create(user_id: user_id, name: "Abhinav Tushar - links") +Room.create(user_id: user_id, name: "Mohsen BANAN - blee") +Room.create(user_id: user_id, name: "Gabriele Bozzola - julia") +Room.create(user_id: user_id, name: "Philip Kaludercic - emacs30") +Room.create(user_id: user_id, name: "Ramin Honary - gypsum") +Room.create(user_id: user_id, name: "Colin Woodbury - transducers") +Room.create(user_id: user_id, name: "MetroWind - theme") +Room.create(user_id: user_id, name: "Joseph Turner - hyperdrive") +Room.create(user_id: user_id, name: "Charles Choi - casual") +Room.create(user_id: user_id, name: "Troy Hinckley - rust") +Room.create(user_id: user_id, name: "Blaine Mooers - project") +Room.create(user_id: user_id, name: "Peter Prevos - writing") +Room.create(user_id: user_id, name: "Howard Abrams - literate") +Room.create(user_id: user_id, name: "Eric Marsden - pgmacs") +Room.create(user_id: user_id, name: "Zac Romero - p-search") +Room.create(user_id: user_id, name: "Bala Ramadurai - learning") +Room.create(user_id: user_id, name: "Gopar - sharing") +Room.create(user_id: user_id, name: "Christopher Howard - shellwater") +Room.create(user_id: user_id, name: "James Endres Howell - org-teach") +:end: + +Print out the room IDs with + +#+begin_src ruby +Room.all.each { |x| puts x.friendly_id + " " + x.name }; nil +#+end_src +https://github.com/bigbluebutton/greenlight/issues/1925 +*** TODO Change background presentation +https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-presentation +*** TODO Modify landing page +/var/www/bigbluebutton-default/assets/index.html +keep backup copy as it will be overwritten when bbb-conf is called +*** STARTED Change default welcome message +:PROPERTIES: +:Effort: 0:30 +:END: +:LOGBOOK: +CLOCK: [2024-11-20 Wed 12:21]--[2024-11-20 Wed 12:46] => 0:25 +:END: +https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-welcome-message +*** TODO Change html5 title +/usr/share/bigbluebutton/html5-client/private/config/settings.yml + +TARGET=/usr/share/bigbluebutton/html5-client/private/config/settings.yml +yq e -i ".public.app.clientTitle = \"EmacsConf\"" $TARGET +*** TODO Try live captions +https://docs.bigbluebutton.org/3.0/administration/customize/#enable-live-captions +*** TODO Explore meeting layout? + ** IRC web client *** WAITING Ask libera.chat to increase connections allowed from chat.emacsconf.org on Dec 7 and 8 ** IRC announcements diff --git a/organizers-notebook.md b/organizers-notebook.md index 2cff5989..b5e21093 100644 --- a/organizers-notebook.md +++ b/organizers-notebook.md @@ -20,35 +20,36 @@ This document is the general organizers' notebook that can be used as a starting - [Create the public organizers’ notebook in the wiki](#starting-up-the-conference-planning-process-create-the-public-organizers-notebook-in-the-wiki) - [Phases and lessons learned](#phases-and-lessons-learned) - [Draft CFP](#phases-and-lessons-learned-draft-cfp) - - [Announce](#orgc65a882) - - [Process proposals](#org05d8ef4) - - [Accept proposals](#orge98e249) + - [Announce](#orgc54b35e) + - [Process proposals](#orga69f2f4) + - [Accept proposals](#org1a0698c) - [Draft schedule](#draft-schedule) - - [Set up backstage and upload](#orge9a3c89) - - [Post the schedule](#org1e7771f) - - [Process uploaded files](#orgfd23289) - - [Generate assets](#org80c461d) - - [Prepare the infrastructure](#org033e054) - - [Getting ready for captions](#org217ecc8) -- [General infrastructure](#org59478a5) + - [Set up backstage and upload](#org8d4fef6) + - [Post the schedule](#orgda53020) + - [Process uploaded files](#orgfb02d97) + - [Generate assets](#orge3a49dc) + - [Prepare the infrastructure](#orgbe3ed00) + - [Getting ready for captions](#org58a27dd) +- [General infrastructure](#org3881d33) - [Icecast](#icecast) - [Watching pages](#watch) - [VNC](#vnc) - [Streaming with OBS](#obs) - - [Shell scripts](#org511ba94) - - [IRC web client](#org6abc1fd) - - [Etherpad](#orgd320fcc) + - [Shell scripts](#org18a331c) + - [Backstage](#backstage) + - [IRC web client](#org0e78085) + - [Etherpad](#org6cd335d) - [Publishing media to the server and to the wiki](#media) - - [Automated IRC announcements](#org005b5de) - - [Manual IRC announcements](#org33f6301) - - [Low-res stream](#orgd5b1661) - - [Restream to YouTube](#org3875a88) - - [Restream to Toobnix](#org678b044) + - [Automated IRC announcements](#org8972cd0) + - [Manual IRC announcements](#orgaa2f53d) + - [Low-res stream](#org6a806b3) + - [Restream to YouTube](#orgd90e577) + - [Restream to Toobnix](#org5d68580) - [Other process notes](#other) - [Adding another user to BBB](#bbb-user) - [When a talk is cancelled](#cancel-talk) - [When a talk Q&A changes method](#change-talk-qa) - - [Ansible](#orgf87ae48) + - [Ansible](#org2f0dc69) @@ -149,7 +150,7 @@ Put inside double square brackets: `!template id=pagedraft` - Put the speaker introduction right after the talk description for easier web page copying. - + ## Announce @@ -157,7 +158,7 @@ Put inside double square brackets: `!template id=pagedraft` - Submit to - + ## Process proposals @@ -186,7 +187,7 @@ When proposals come in: PUBLIC\_EMAIL - + ## Accept proposals @@ -219,7 +220,7 @@ For each talk: - Add missing items to plan - + ## Set up backstage and upload @@ -230,7 +231,7 @@ Lessons learned: - Next year, let’s get upload.emacsconf.org in place as the domain name so that people don’t try to FTP files to it. - + ## Post the schedule @@ -241,7 +242,7 @@ Lessons learned: - Update talks.md to refer to watch.md as well - + ## Process uploaded files @@ -266,7 +267,7 @@ Process: 3. - + ## Generate assets @@ -284,7 +285,7 @@ Process: - Splice together into a file that will be processed with subed-record-compile-video. - + ## Prepare the infrastructure @@ -306,7 +307,7 @@ Checklist: - [ ] Icecast - + ## Getting ready for captions @@ -317,7 +318,7 @@ Onboarding: - Send backstage information . (Can be sent to all captioning volunteers with ) - + # General infrastructure @@ -481,7 +482,7 @@ so that the year is updated in the configuration. This is on live.emacsconf.org and can be restarted with `/etc/init.d/emacsconf restart`. - + ## Shell scripts @@ -508,7 +509,87 @@ Setup: - Set up the assets/music directory - + + +## Backstage + +Update this with + +Explanation of files: + + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
–original.mp4/mov/webmoriginal file as uploaded by the speaker
–reencoded.webmconverted to .webm format and compressed
–reencoded.opusaudio only
–normalized.opusnormalized audio
–reencoded.vttWhisperX captions, WebVTT format
–reencoded.jsonWhisperX word data
–reencoded.srtWhisperX captions, SRT format
–reencoded.txtWhisperX captions, plain text
–main.vttedited captions
–main–chapters.vttchapter markers
–main.txtcaptions as text
–main.webmversion for streaming based on the most recent resources
+ + + ## IRC web client @@ -530,7 +611,7 @@ connection exhaustion errors. Is that something we can plan now or would you like me to bring it up a few days before the conference? - + ## Etherpad @@ -566,7 +647,7 @@ Switching it back to `TO_STREAM` and calling You can generate the index with `emacsconf-publish-update-media`. - + ## Automated IRC announcements @@ -575,7 +656,7 @@ Success: - [ ] When a talk starts playing, it is announced in the relevant channel - + ## Manual IRC announcements @@ -584,17 +665,17 @@ Success: - [X] You can /opall, /conftopic, and /broadcast - + ## Low-res stream - + ## Restream to YouTube - + ## Restream to Toobnix @@ -617,10 +698,11 @@ Success: ## When a talk is cancelled 1. Update the status to CANCELLED. -2. Update the schedule with -3. Regenerate the intros (before, after). , then use in the intros file. -4. Sync the new intros to the /data/emacsconf/shared/$YEAR/assets/intros directory. -5. Regenerate the pads: +2. Rejig the schedule if needed, and update with +3. Update the published schedule with +4. Regenerate the intros (before, after). , then use in the intros file. +5. Sync the new intros to the /data/emacsconf/shared/$YEAR/assets/intros directory. +6. Regenerate the pads: @@ -635,7 +717,7 @@ Success: 6. Regenerate talks.json: - + ## Ansible diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org index b22162d5..483d9d04 100644 --- a/organizers-notebook/index.org +++ b/organizers-notebook/index.org @@ -440,6 +440,27 @@ Setup: - You may want to generate test assets and copy them over to the assets/stream directory. - Generate all the overlays and copy them to assets/overlays - Set up the assets/music directory +** Backstage +:PROPERTIES: +:CUSTOM_ID: backstage +:END: + +Update this with elisp:emacsconf-publish-backstage-index + +Explanation of files: + +| --original.mp4/mov/webm | original file as uploaded by the speaker | +| --reencoded.webm | converted to .webm format and compressed | +| --reencoded.opus | audio only | +| --normalized.opus | normalized audio | +| --reencoded.vtt | WhisperX captions, WebVTT format | +| --reencoded.json | WhisperX word data | +| --reencoded.srt | WhisperX captions, SRT format | +| --reencoded.txt | WhisperX captions, plain text | +| --main.vtt | edited captions | +| --main--chapters.vtt | chapter markers | +| --main.txt | captions as text | +| --main.webm | version for streaming based on the most recent resources | ** IRC web client -- cgit v1.2.3