Many users have asked us about the best way to distribute files and other course materials from within JupyterHub. As is often the case, it continues to be an "It depends" kind of situation. There are many ways you can solve this, but here are five of the most common:
Canvas/GoogleDrive/Box - You could just post the files to have them hosted somewhere and the students would be responsible for downloading a copy and uploading it. There are upload options in the menus for JupyterHub and RStudio and you can drag and drop onto the browser window to upload a file. It is pretty easy, but puts all the effort on the students, and even though the steps are simple, there are more of them and they are not automated so it leaves room for mistakes and potential frustrations from the student or participant perspective.
nbgitpuller - This requires more setup and forethought from the instructor as there are a few "gotchas" related to using this tool:
git pull against a git repo and branch every time it is clicked. It is great for making sure that students/participants always have the latest files, but the downside is that if there are issues, the Jupyter server fails to launch. The workaround is simple: go directly to the JupyterHub instance in your browser, but many users get tripped up if there are issues.git Breaks nbgitpuller - There are some well known issues where if a user calls git from within the repo on their server, it will likely break nbgitpuller.git - All our images have git and users could potentially just run a git clone then git pull later on to update it. All the participants would have to know how to use git. Fortunately, it is very easy to open a terminal from both the Jupyter Lab and RStudio interfaces. Like with nbgitpuller, we could still inject a private key into the environment for private repositories, or they could all have their own users and permissions (managed by you) to the repo. If you need a private repo or a git repo with LFS, both are available at no cost to instructors via our git service.
Shared PVC With ReadOnly Access - For very large files (multi-gigabyte database/dataset files) that students or participants might need and that are not ever intended to be edited, we can create a shared PVC that everyone has access to.
Pushing Files directly to Instances - Instructors can, as JHub Admins, access all the instances for participants either by manually going through the web pages via the /hub/admin endpoint in the Web browser, or by using an API key and writing a script. This requires a lot more effort on your end, either through your own technical ability and comfort, or by spending a lot of time manually to put files in place for every student.