PawseySC / rstudio-nginx

For DEMO purposes - Containerised Rstudio instance running behind an Nginx proxy, using Docker Compose
12 stars 3 forks source link

Multiple user #2

Open quinfer opened 3 years ago

quinfer commented 3 years ago

Hi and thanks for the fantastic repo. Could your set-up work for multiple users? Specifically, can the docker-compose yaml be modified to serve on multiple ports or should this be via the docker-gen yaml? Apologies for the ignorance on docker. I am attempting to set up a studio docker farm for teaching about 100 students behind security university access.

marcodelapierre commented 3 years ago

Hi Barry, thanks for reaching out. I am unable to provide detailed support on this repo, which has mostly demo purposes. However, I am sharing some thoughts and links with you.

  1. One container with multiple Linux users set-up: have a look at this Github discussion on setting up multiple users within the RStudio container: https://github.com/rocker-org/rocker/issues/206. You might create a script that generates the users, and run it inside the running container (maybe running the script can be embedded in the compose.yaml - can't recall). Or, you might embed user creation in a Dockerfile for the image (probably less flexible in terms of number of users). Either ways, you might need to take special care in passing user passwords, eg using Docker Secrets (https://www.docker.com/blog/docker-secrets-management/) - disclaimer - I have never used the feature myself.

  2. Multiple containers with multiple ports: I don't have experience on this setup, not sure what is the best way to achieve it.

Either ways, remember you will need appropriately scaled compute resources (cores, ram, disk, ..) depending on the number of concurrent users.

Hope this can help.

quinfer commented 3 years ago

Hi Marco,

I really appreciate you coming back on this. They are very useful comments and I think the multiple containers approach might be best, as I want to host a large amount of students on a large VM (64cpus).

Take care

Barry Quinn PhD CStat | Applied Statistician in Finance | Director -MSc Quantitative Finance | Queen’s Management School | @.*** | +44 0 28 9097 4824 | https://quinference.com |

[X][X]

On 22 Sep 2021, at 03:23, Marco De La Pierre @.***> wrote:

 You don't often get email from @.*** Learn why this is importanthttp://aka.ms/LearnAboutSenderIdentification This message is from an external sender. Please take care when responding, clicking links or opening attachments.

Hi Barry, thanks for reaching out. I am unable to provide detailed support on this repo, which has mostly demo purposes. However, I am sharing some thoughts and links with you.

  1. One container with multiple Linux users set-up: have a look at this Github discussion on setting up multiple users within the RStudio container: rocker-org/rocker#206https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frocker-org%2Frocker%2Fissues%2F206&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cf9bc549088d34a6447c208d97d6fef52%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637678741981225244%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=QHC1eLl7HzUrNBoajGVj9p65GXIwcxyD7eoBzFGh3sc%3D&reserved=0. You might create a script that generates the users, and run it inside the running container (maybe running the script can be embedded in the compose.yaml - can't recall). Or, you might embed user creation in a Dockerfile for the image (probably less flexible in terms of number of users). Either ways, you might need to take special care in passing user passwords, eg using Docker Secrets (https://www.docker.com/blog/docker-secrets-management/https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.docker.com%2Fblog%2Fdocker-secrets-management%2F&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cf9bc549088d34a6447c208d97d6fef52%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637678741981235200%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=TssiPNKWRdQW9ANv7rbCLAVLZTa3QMgatVFXeaxoC4s%3D&reserved=0) - disclaimer - I have never used the feature myself.

  2. Multiple containers with multiple ports: I don't have experience on this setup, not sure what is the best way to achieve it.

Either ways, remember you will need appropriately scaled compute resources (cores, ram, disk, ..) depending on the number of concurrent users.

Hope this can help.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPawseySC%2Frstudio-nginx%2Fissues%2F2%23issuecomment-924529234&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cf9bc549088d34a6447c208d97d6fef52%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637678741981235200%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=HzHEt8pzquR6vZOTtAP09D0XcdUElLL05CzyzIExE7c%3D&reserved=0, or unsubscribehttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAPAXLIDZTIJVYSVV4W75GCDUDE4YZANCNFSM5ENUINSA&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cf9bc549088d34a6447c208d97d6fef52%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637678741981245150%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=nu0WT9fgTvRguODk%2FvtqYfDYlUjbtO1SxASbC3QGyFA%3D&reserved=0. Triage notifications on the go with GitHub Mobile for iOShttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cf9bc549088d34a6447c208d97d6fef52%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637678741981245150%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hIxAEGuz65CLOEgx%2FAeBlZSeMefodG%2BKR7BsKJu1dOo%3D&reserved=0 or Androidhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cf9bc549088d34a6447c208d97d6fef52%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637678741981255111%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ExSGMaYWa0Zw3xKay86v2RO%2BhDI%2F7JSogRRxZEGf8BQ%3D&reserved=0.

marcodelapierre commented 3 years ago

No worries Barry. One more small mention for you, might be out of scope, but it doesn't hurt to share. If you are not constrained with RStudio, I remember a colleague of mine had worked on a containerised, student audience deployment of "Plasma", a learning platform based on Jupyter notebooks (which can be configured to work with R): https://plasmabio.org If you're interested, I can see what other info I can retrieve on that deployment.

quinfer commented 3 years ago

Hi Marco,

I would be interested in alternatives. I found and forked this repo which does what you suggested via some scripted.

https://github.com/barryquinn1/docker-rstudio

But we would also like to use juypter in the future so would be interested in more information there.

Thanks again

Barry Quinn PhD CStat | Applied Statistician in Finance | Director -MSc Quantitative Finance | Queen’s Management School | @.*** | +44 0 28 9097 4824 | https://quinference.com |

[X][X]

On 23 Sep 2021, at 02:37, Marco De La Pierre @.***> wrote:

 You don't often get email from @.*** Learn why this is importanthttp://aka.ms/LearnAboutSenderIdentification This message is from an external sender. Please take care when responding, clicking links or opening attachments.

No worries Barry. One more small mention for you, might be out of scope, but it doesn't hurt to share. If you are not constrained with RStudio, I remember a colleague of mine had worked on a containerised, student audience deployment of "Plasma", a learning platform based on Jupyter notebooks (which can be configured to work with R): https://plasmabio.orghttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplasmabio.org%2F&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C277cf81792df4bc130c808d97e32b9a1%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637679578605928519%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=UN5pDfWCIV4KcWEiq9dddt2TAdV7hgeHriXC0EkQ9qY%3D&reserved=0 If you're interested, I can see what other info I can retrieve on that deployment.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPawseySC%2Frstudio-nginx%2Fissues%2F2%23issuecomment-925447405&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C277cf81792df4bc130c808d97e32b9a1%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637679578605938481%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=3DIEUePs%2FmSVZLtJAzlW9k56valvNJuIEmHs5ozUnFo%3D&reserved=0, or unsubscribehttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAPAXLIB4JXPMJ3QYJHHONCLUDKAFVANCNFSM5ENUINSA&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C277cf81792df4bc130c808d97e32b9a1%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637679578605938481%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=t%2B7U4PMQEiAnM8%2FYlE6jqLa6c11Yy9V6bDpWf1x28bg%3D&reserved=0. Triage notifications on the go with GitHub Mobile for iOShttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C277cf81792df4bc130c808d97e32b9a1%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637679578605948437%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=HnDSTcLSzVszlSUhzEMLg6L1VNMId8L1mhibHjVcul0%3D&reserved=0 or Androidhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C277cf81792df4bc130c808d97e32b9a1%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637679578605948437%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=EodMTG5hsg4%2BDWxzLWKS172Gs2cE1bIIwdktMPI8k38%3D&reserved=0.

marcodelapierre commented 3 years ago

Hi Barry, bringing my colleague @lachlancampbell in this conversation.

Lachlan, Barry here (Queen's University Belfast) is looking to deploy scalable (100 students) platforms for teaching purposes; was starting off with RStudio, but said Jupyter would also be relevant for him. Do you have anything that you can share with him on the PLASMA deployments you were using a while ago?

Thanks,

lachlancampbell commented 3 years ago

Hi Barry, sorry for the delay, took some time off for school holidays with the kids :) I have had a quick scan of this page but not in detail, so maybe you can email me directly with what you're trying to do and I'll give what advice I can. In general though, I have some small experience with Jupyterhub and Jupyterhub related projects (like PLASMA). They have some extremely attractive features and functionality, however like most open-source software I inevitably ran into a bug that couldn't be resolved, so it really depends on what you need. That said, I haven't looked at plain Jupyterhub for over a year and this has prompted me to look at it again, and there seem to have been some major improvements. I plan to experiment with it again at Pawsey and will document my findings.

Cheers, Lachlan.

quinfer commented 3 years ago

Hi Lachlan,

Many thanks for your response, and I hope you had a nice break with your family. Time with family and any from work is so important for our well-being.

Basically, I am attempting to build a container farm to teaching a class of about 100 students. Each student will have a docker instances which allows them to run some statistical analysis using R. So far I have found this set up from Duke university using docker-nginx, docker-gen, and rstudio server. https://github.com/barryquinn1/docker-rstudio . Mark McCahill has been very helpful with this set-up but I think docker-compose would be a more intuitive way given my limited DevOps ability. This where I encountered Macro repo and contacted him.

He kindly provide some suggestions but also suggested PLASMA platform, given it can use an R kernel also.

At present, I am still struggle to get Mark’s container farm set up, so any other options might be useful as our semester has started.

Thanks

Barry Quinn PhD CStat | Applied Statistician in Finance | Director -MSc Quantitative Finance | Queen’s Management School | @.*** | +44 0 28 9097 4824 | https://quinference.com |

[X][X]

On 30 Sep 2021, at 01:05, lachlancampbell @.***> wrote:

 You don't often get email from @.*** Learn why this is importanthttp://aka.ms/LearnAboutSenderIdentification This message is from an external sender. Please take care when responding, clicking links or opening attachments.

Hi Barry, sorry for the delay, took some time off for school holidays with the kids :) I have had a quick scan of this page but not in detail, so maybe you can email me directly with what you're trying to do and I'll give what advice I can. In general though, I have some small experience with Jupyterhub and Jupyterhub related projects (like PLASMA). They have some extremely attractive features and functionality, however like most open-source software I inevitably ran into a bug that couldn't be resolved, so it really depends on what you need. That said, I haven't looked at plain Jupyterhub for over a year and this has prompted me to look at it again, and there seem to have been some major improvements. I plan to experiment with it again at Pawsey and will document my findings.

Cheers, Lachlan.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPawseySC%2Frstudio-nginx%2Fissues%2F2%23issuecomment-930634233&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C969d0d97d21d470b560b08d983a5fb54%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637685571186664196%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=gq8xhVC6KeHajsf7mau1Oxoi%2BQo3FORwPhH8NbfRKQY%3D&reserved=0, or unsubscribehttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAPAXLICIWLFGD5DS6YFOVU3UEOSTLANCNFSM5ENUINSA&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C969d0d97d21d470b560b08d983a5fb54%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637685571186664196%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LnaKwe%2BBNhPVBwnbqXYY6wGbjm%2BHj7p3MHrfm%2F1sJJY%3D&reserved=0. Triage notifications on the go with GitHub Mobile for iOShttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C969d0d97d21d470b560b08d983a5fb54%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637685571186674153%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=VDcqkHggNZgxxXrriutr5Pt4EG7haIU1mrPrsaITqJM%3D&reserved=0 or Androidhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7Cb.quinn%40qub.ac.uk%7C969d0d97d21d470b560b08d983a5fb54%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637685571186674153%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=xTtYHWnXm%2FzmDwcqbjgoQPznp6ylUyBz%2F4O3v46Gopc%3D&reserved=0.

lachlancampbell commented 3 years ago

Hi Barry,

based on what I know so far I'd recommend you take a look at this page - https://tljh.jupyter.org/en/latest/topic/whentouse.html#topic-whentouse - which looks at the use of jupyterhub via two options, "the littlest jupyterhub" which uses a single host machine and is suitable for up to a hundred users, and one for a cluster using docker and kubernetes which is more scalable but also more complicated. Jupyter notebooks can run R, so should be suitable for your use case.

You could also look at https://jupyter4edu.github.io/jupyter-edu-book/ which gives an extensive look at the use of jupyter in education, and perhaps start with chapter 6 which goes over a lot more options including installing on student or lab computers.

Finally, there is plasma - https://docs.plasmabio.org/en/latest/ - which builds on the littlest jupyterhub by adding the creation of environments from public github repos, meaning you can maintain your topics on github and offer them through your jupyterhub as separate classes which your students can select when they log in to the jupyterhub. I found this functionality extremely useful and it worked flawlessly until, as is often the case with open source software, it stopped working after an update. This isn't to say it won't work for you, but that's the reason I'm not recommending you try this first.

Hope this helps, let me know if you have any more questions.

Cheers,

Lachlan.

quinfer commented 3 years ago

Whaoo,

Thanks so much Lachlan for your detailed response. This is all very very useful. I guess my preference for a docker solution is based on being able to sandbox student computing demands. We are actually running RStudio workbench but the kubernetes option there is very complicated for me and my sys-admin colleagues have warned me of it giving its steep learning curve.

I will definitely look at the notebook options as it is lighter weigh than RStudio and is plugin and play ready for data science courses.

I have been playing around with Docker-compose with the —scale flag, but again I am at the frontier of my DevOp knowledge.

Anyway, thanks again. I really appreciate you generous advice.

Barry Quinn PhD CStat | Applied Statistician in Finance | Director -MSc Quantitative Finance | Queen’s Management School | @.*** | +44 0 28 9097 4824 | https://quinference.com |

[X][X]

On 7 Oct 2021, at 02:59, lachlancampbell @.***> wrote:

 This message is from an external sender. Please take care when responding, clicking links or opening attachments.

Hi Barry,

based on what I know so far I'd recommend you take a look at this page - https://tljh.jupyter.org/en/latest/topic/whentouse.html#topic-whentousehttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftljh.jupyter.org%2Fen%2Flatest%2Ftopic%2Fwhentouse.html%23topic-whentouse&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554335506%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=8BaW8UDxo%2B7r8a3UMK%2FLfqpiEJuIURaOmgc4aqT%2Bn4w%3D&reserved=0 - which looks at the use of jupyterhub via two options, "the littlest jupyterhub" which uses a single host machine and is suitable for up to a hundred users, and one for a cluster using docker and kubernetes which is more scalable but also more complicated. Jupyter notebooks can run R, so should be suitable for your use case.

You could also look at https://jupyter4edu.github.io/jupyter-edu-book/https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjupyter4edu.github.io%2Fjupyter-edu-book%2F&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554345471%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=m%2BdsSE0YxWYJuhJ2XOCyITaP4bm6S%2FLLwHAH7RaE%2Bvk%3D&reserved=0 which gives an extensive look at the use of jupyter in education, and perhaps start with chapter 6 which goes over a lot more options including installing on student or lab computers.

Finally, there is plasma - https://docs.plasmabio.org/en/latest/https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.plasmabio.org%2Fen%2Flatest%2F&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554345471%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=S4TT76LEoChGNhYSGgZhtEF1O7tn3GdjPFXZwkIV%2F%2Bg%3D&reserved=0 - which builds on the littlest jupyterhub by adding the creation of environments from public github repos, meaning you can maintain your topics on github and offer them through your jupyterhub as separate classes which your students can select when they log in to the jupyterhub. I found this functionality extremely useful and it worked flawlessly until, as is often the case with open source software, it stopped working after an update. This isn't to say it won't work for you, but that's the reason I'm not recommending you try this first.

Hope this helps, let me know if you have any more questions.

Cheers,

Lachlan.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPawseySC%2Frstudio-nginx%2Fissues%2F2%23issuecomment-937382222&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554355442%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1xIJqhRqZAw2WLv%2Fu18y1AVroRGM2lutEVr8iziNON4%3D&reserved=0, or unsubscribehttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAPAXLIAXKURLJDNCW5VSZD3UFT5G3ANCNFSM5ENUINSA&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554355442%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=onZJj70ZpEai4%2B5XEkwuVxRbWfVmYc1q3AzrcIqr0SM%3D&reserved=0. Triage notifications on the go with GitHub Mobile for iOShttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554365394%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=OS%2Bh%2Fv%2B3OWYZmM7LW6ZhEERvz6AM4MdwA6%2BLtReuJ2Q%3D&reserved=0 or Androidhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7Cb.quinn%40qub.ac.uk%7Cbb469e47083246f1127308d989360ee4%7Ceaab77eab4a549e3a1e8d6dd23a1f286%7C0%7C0%7C637691687554365394%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=uayMc16f3qcxRNNSEWcoi4MKftzfmr2%2B%2ByvdsDStrtc%3D&reserved=0.