diff options
author | Sacha Chua <sacha@sachachua.com> | 2024-11-20 12:52:35 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2024-11-20 12:52:35 -0500 |
commit | f95e4b730ced1b9e162c131491c973a36119e2df (patch) | |
tree | a69b4096c08927852aa5a1cccdeb866ca0549eb5 | |
parent | 9ae4fb82a5ce5e5bca4df064d4e15f8f2690573a (diff) | |
download | emacsconf-wiki-f95e4b730ced1b9e162c131491c973a36119e2df.tar.xz emacsconf-wiki-f95e4b730ced1b9e162c131491c973a36119e2df.zip |
Add BBB notes and backstage
Diffstat (limited to '')
-rw-r--r-- | 2024/organizers-notebook/index.org | 135 | ||||
-rw-r--r-- | organizers-notebook.md | 166 | ||||
-rw-r--r-- | 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) <a id="starting-up-the-conference-planning-process"></a> @@ -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. -<a id="orgc65a882"></a> +<a id="orgc54b35e"></a> ## Announce @@ -157,7 +158,7 @@ Put inside double square brackets: `!template id=pagedraft` - Submit to <https://foss.events/> -<a id="org05d8ef4"></a> +<a id="orga69f2f4"></a> ## Process proposals @@ -186,7 +187,7 @@ When proposals come in: PUBLIC\_EMAIL -<a id="orge98e249"></a> +<a id="org1a0698c"></a> ## Accept proposals @@ -219,7 +220,7 @@ For each talk: - Add missing items to plan -<a id="orge9a3c89"></a> +<a id="org8d4fef6"></a> ## 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. -<a id="org1e7771f"></a> +<a id="orgda53020"></a> ## Post the schedule @@ -241,7 +242,7 @@ Lessons learned: - Update talks.md to refer to watch.md as well -<a id="orgfd23289"></a> +<a id="orgfb02d97"></a> ## Process uploaded files @@ -266,7 +267,7 @@ Process: 3. <elisp:emacsconf-publish-backstage-index> -<a id="org80c461d"></a> +<a id="orge3a49dc"></a> ## Generate assets @@ -284,7 +285,7 @@ Process: - Splice together into a file that will be processed with subed-record-compile-video. -<a id="org033e054"></a> +<a id="orgbe3ed00"></a> ## Prepare the infrastructure @@ -306,7 +307,7 @@ Checklist: - [ ] Icecast -<a id="org217ecc8"></a> +<a id="org58a27dd"></a> ## Getting ready for captions @@ -317,7 +318,7 @@ Onboarding: - Send backstage information <elisp:emacsconf-mail-backstage-info-to-volunteer> . (Can be sent to all captioning volunteers with <elisp:emacsconf-mail-backstage-info-to-captioning-volunteers>) -<a id="org59478a5"></a> +<a id="org3881d33"></a> # 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`. -<a id="org511ba94"></a> +<a id="org18a331c"></a> ## Shell scripts @@ -508,7 +509,87 @@ Setup: - Set up the assets/music directory -<a id="org6abc1fd"></a> +<a id="backstage"></a> + +## Backstage + +Update this with <elisp:emacsconf-publish-backstage-index> + +Explanation of files: + +<table> + + +<colgroup> +<col class="org-left"> + +<col class="org-left"> +</colgroup> +<tbody> +<tr> +<td class="org-left">–original.mp4/mov/webm</td> +<td class="org-left">original file as uploaded by the speaker</td> +</tr> + +<tr> +<td class="org-left">–reencoded.webm</td> +<td class="org-left">converted to .webm format and compressed</td> +</tr> + +<tr> +<td class="org-left">–reencoded.opus</td> +<td class="org-left">audio only</td> +</tr> + +<tr> +<td class="org-left">–normalized.opus</td> +<td class="org-left">normalized audio</td> +</tr> + +<tr> +<td class="org-left">–reencoded.vtt</td> +<td class="org-left">WhisperX captions, WebVTT format</td> +</tr> + +<tr> +<td class="org-left">–reencoded.json</td> +<td class="org-left">WhisperX word data</td> +</tr> + +<tr> +<td class="org-left">–reencoded.srt</td> +<td class="org-left">WhisperX captions, SRT format</td> +</tr> + +<tr> +<td class="org-left">–reencoded.txt</td> +<td class="org-left">WhisperX captions, plain text</td> +</tr> + +<tr> +<td class="org-left">–main.vtt</td> +<td class="org-left">edited captions</td> +</tr> + +<tr> +<td class="org-left">–main–chapters.vtt</td> +<td class="org-left">chapter markers</td> +</tr> + +<tr> +<td class="org-left">–main.txt</td> +<td class="org-left">captions as text</td> +</tr> + +<tr> +<td class="org-left">–main.webm</td> +<td class="org-left">version for streaming based on the most recent resources</td> +</tr> +</tbody> +</table> + + +<a id="org0e78085"></a> ## 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? -<a id="orgd320fcc"></a> +<a id="org6cd335d"></a> ## Etherpad @@ -566,7 +647,7 @@ Switching it back to `TO_STREAM` and calling You can generate the index with `emacsconf-publish-update-media`. -<a id="org005b5de"></a> +<a id="org8972cd0"></a> ## Automated IRC announcements @@ -575,7 +656,7 @@ Success: - [ ] When a talk starts playing, it is announced in the relevant channel -<a id="org33f6301"></a> +<a id="orgaa2f53d"></a> ## Manual IRC announcements @@ -584,17 +665,17 @@ Success: - [X] You can /opall, /conftopic, and /broadcast -<a id="orgd5b1661"></a> +<a id="org6a806b3"></a> ## Low-res stream -<a id="org3875a88"></a> +<a id="orgd90e577"></a> ## Restream to YouTube -<a id="org678b044"></a> +<a id="org5d68580"></a> ## Restream to Toobnix @@ -617,10 +698,11 @@ Success: ## When a talk is cancelled 1. Update the status to CANCELLED. -2. Update the schedule with <elisp:emacsconf-update-schedule> -3. Regenerate the intros (before, after). <elisp:emacsconf-stream-generate-in-between-pages>, then use <elisp:subed-record-compile-video> in the intros file. -4. Sync the new intros to the /data/emacsconf/shared/$YEAR/assets/intros directory. -5. Regenerate the pads: <elisp:emacsconf-pad-prepopulate-all-talks> +2. Rejig the schedule if needed, and update with <elisp:emacsconf-schedule-update-from-info> +3. Update the published schedule with <elisp:emacsconf-update-schedule> +4. Regenerate the intros (before, after). <elisp:emacsconf-stream-generate-in-between-pages>, then use <elisp:subed-record-compile-video> in the intros file. +5. Sync the new intros to the /data/emacsconf/shared/$YEAR/assets/intros directory. +6. Regenerate the pads: <elisp:emacsconf-pad-prepopulate-all-talks> <a id="change-talk-qa"></a> @@ -635,7 +717,7 @@ Success: 6. Regenerate talks.json: <elisp:emacsconf-publish-talks-json-to-files> -<a id="orgf87ae48"></a> +<a id="org2f0dc69"></a> ## 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 |