When you say ‘just using the web version’, I wonder if you mean sessions served via MyBinder that can be launched from https://jupyter.org/try and other places? If that is the case, using ‘Binder’ or ‘MyBinder’ will help you search here better to find help.
I suspect that is what you are describing and running live training sessions is indeed one of the main use cases for MyBinder-served sessions, see here. You’ll need to do some preparation to maximize your use unless you want to be starting from square one entirely and make all notebooks to use. If the latter, then you can use the launches available at https://jupyter.org/try . Examples of the former:
And more can be seen here.
There are some things to be aware of though relying on that, as discussed here each repository is limited to 100 live instances, as discussed here. And if the session isn’t doing something that keeps the kernel active (busy) for more than 10 minutes, it will be culled and the user will need to start a new session. Some discussion of avoiding inactive here. Just typing in a cell isn’t keeping the kernel busy. This isn’t usually a problem for coding-heavy sessions; however, it can require some attention when there will be long exposition between running code.
Alternatively you could mean running sessions from your own JupyterHub? In that case, you would need to set up the hub to have the needed packages available to everyone. This would also obviate the need for installations.
What do you need to happen with opening the web browser to open a new tab? Depending on what you hope to do, you may just need to approach it differently to accomplish the same or similar outcome. If you set up a repo (or user environment on a JupyterHub) with sample notebooks, you can click and navigate them just like surfing the web. For example, if you go here and launch a Binder session using the badge, the first page that comes up is an index of some available notebooks. Clicking on those notebooks opens a new tab with those notebooks actively running. If you just want to expose a webpage, as part of the demo, you can use a frame within the Jupyter notebook itself.
url = "https://www.ncbi.nlm.nih.gov/pubmed/23435085"
iframe = '<iframe src=' + url + ' width=700 height=350></iframe>'
Note that it will complain, but that method currently works whereas the one in the ‘Rich Display System’ notebook (available when launching ‘Try Classic Notebook’ from https://jupyter.org/try) under the section ‘External sites’ doesn’t work for me in Chrome.