Package: jupyter-videochat
jupyter-videochatVideo Chat with JupyterHub peers inside JupyterLab and RetroLab, powered byJitsi.Requirementspython >=3.7jupyterlab ==3.*InstallInstall the server extension and JupyterLab extension withpip:pipinstall-Ujupyter-videochat...orconda/mamba:condainstall-cconda-forgejupyter-videochatUsageSee the [Jitsi Handbook] for more about using the actual chat once launched.View the Room ListJupyterLabFrom theMain Menu...ClickFile ▶ New ▶ Video ChatFrom theLauncher...Open a newJupyterLab LauncherScroll down toOtherClick theVideo Chatlauncher cardRetroLabFrom theMain Menu...ClickFile ▶ New ▶ Video ChatFrom the RetroLab File Tree...Click theNew Video ChatbuttonStart a ChatProvide your name and email (optional)these will be saved in JupyterLab user settings for future usageyour email will be used to provideGravatariconFrom one of the roomproviders, choose a room.You may need to provide a room nameStop a ChatFrom the the Jitsi IFrame:Click the red "hang up" button, orFrom theVideo Chat toolbarClick theDisconnect Video ChatbuttonTroubleshootIf the Jitsi frame actually loads, the [Jitsi Handbook] is the best source for more
help.I see the Lab UI, but the video chat IFrame doesn't loadSometimes the Jitsi IFrame runs into issues, and just shows a white frame.Try reloading the browser.I see the UI but I'm missing roomsIf you are seeing the frontend extension but it is not working, check that the server
extension is enabled:jupyterserverextensionlist
jupyterserverextensionenable--sys-prefix--pyjupyter_videochat... and restart the server.If you launch your Jupyter server withjupyter notebook, as Binder does, the
equivalent commands are:jupyterserverextensionlist
jupyterserverextensionenable--sys-prefix--pyjupyter_videochatIf the server extension is installed and enabled but you are not seeing the frontend,
check the frontend is installed:jupyterlabextensionlistIf you do not seejupyterlab-videochat, the best course of action is touninstallandreinstall, and carefully watch the log output.ArchitectureThis extension is composed of:a Python package namedjupyter_videochat, which offers:ajupyter_serverextension which provides convenient, configurable defaults for
rooms on aJupyterHuba JupyterLabpre-builtorfederated extensionnamedjupyter-videochatalso distributed onnpmfor more about the TypeScript/JS API, seeCONTRIBUTINGat JupyterLab runtime, somePluginswhich can be independently disabledjupyterlab-videochat:pluginwhich is required by:jupyterlab-videochat:rooms-serverjupyterlab-videochat:rooms-publicjupyterlab-videochat:toggle-areaConfigurationServer ConfigurationIn yourjupyter_server_config.json(or equivalent.pyorconf.d/*.json), you can
configure theVideoChat:room_prefix, a prefix used for your group, by default a URL-frieldy version of your
JupyterHub's hostnamecan be overriden with theJUPYTER_VIDEOCHAT_ROOM_PREFIXenvironment variablejitsi_server, an HTTPS host that serves the Jitsi web application, by defaultmeet.jit.sirooms, a list of Room descriptions that everyone on your Hub will be able to joinExample{"VideoChat":{"room_prefix":"our-spiffy-room-prefix","rooms":[{"id":"stand-up","displayName":"Stand-Up","description":"Daily room for meeting with the team"},{"id":"all-hands","displayName":"All-Hands","description":"A weekly room for the whole team"}],"jitsi_server":"jitsi.example.com"}}Client ConfigurationIn the JupyterLabAdvanced Settingspanel, theVideo Chatsettings can be further
configured, as can a user's defaultdisplayNameandemail. The defaults provided are
generally pretty conservative, and disable as many third-party services as possible.Additionally, access toglobally-accessiblepublic rooms may be enabled.Binder Client ExampleFor example, to enable all third-party features, public rooms, and open in themainarea by default:create anoverrides.json{"jupyter-videochat:plugin":{"interfaceConfigOverwrite":null,"configOverwrite":null,"disablePublicRooms":false,"area":"main"}}Copy it to the JupyterLab settings directory# postBuildmkdir-p${NB_PYTHON_PREFIX}/share/jupyter/lab/settings
cpoverrides.json${NB_PYTHON_PREFIX}/share/jupyter/lab/settingsJupyterLite Client ExampleNote:JupyterLiteis still alpha software, and the API is likely to change.jupyter lite buildjupyter_lite_config_.json{"LabBuildConfig":{"federated_extensions":["https://pypi.io/.../jupyterlab-videochat-0.6.0.whl"]}}Add a runtimejupyter-lite.json(or a build timeoverrides.json) to disable server
rooms.{"jupyter-lite-schema-version":0,"jupyter-config-data":{"disabledExtensions":["jupyterlab-videochat:rooms-server"],"settingsOverrides":{"jupyterlab-videochat:plugin":{"disablePublicRooms":false}}}}This can then be tested with:jupyterliteserveStart a Meet by URLAppending?jvc=room-nameto a JupyterLab URL will automatically open the Meet (but notfullystart it, as browsers require a user gesture to start audio/video).Binder URL ExampleOnBinder, use theurlpathto append the argument, ensuring
the arguments get properly URL-encoded.https://mybinder.org/v2/gh/jupyterlab-contrib/jupyter-videochat/demo?urlpath=tree%3Fjvc%3DStand-Up
                                                         # URL-encoded  [? ] [=  ]nbgitpullerIf you have two repos (or branches) that contain:content that changes frequentlya stable environment...you can usenbgitpullerto have
fast-building, (almost) single-click URLs that launch right into JupyterLab showing your
meeting and content. For example, to use...the [Python Data Science Handbook] asmasterthis project's repo, atdemo(not recommended, as it's prettyminimal)...and launch directly into JupyterLab showingthePrefacenotebooktheOffice Hoursroom...the doubly-escaped URL would be something like:https://mybinder.org/v2/gh/jupyterlab-contrib/jupyter-videochat/demo?
urlpath=git-pull
  %3Frepo%3Dhttps%253A%252F%252Fgithub.com%252Fjakevdp%252FPythonDataScienceHandbook
  %26branch%3Dmaster
  %26urlpath%3Dlab%252Ftree%252FPythonDataScienceHandbook%252Fnotebooks%252F00.00-Preface.ipynb
  %253Fjvc%253DOffice%2BHoursJupyterLite ExampleAdditionally,?JVC-PUBLIC=a-very-long-and-well-thought-keycan be enabled, providing a
similar experience, but for unobfuscated, publicly-visible rooms.Use with care, and
as a moderator take additional whatever steps you can from within the Jitsi security UI,
including:lobbiespasswordsend-to-end encryptionOnce properly configured above, a JupyterLite site can begit pushed to GitHub Pages,
where a URL is far less obfuscated.https://example.github.io/my-repo/lab?JVC-PUBLIC=a-very-long-and-well-thought-keyprobablydon'tclick on links shorter than about ten charactersUninstallpipuninstalljupyter-videochatorcondauninstalljupyter-videochat