Two years ago I taught an introductory R/Shiny course here at The Jackson Lab. We all learnt a lot. Unfortunately not about Shiny itself, but rather about incompatibilities between its versions and trouble with its installation to some machines.
And it is not only my experience. If you look into forums of Rafael Irizarry MOOC courses, so many questions are just about installation / incompatibilities of R packages. The solution exists for a long time: run your R in a cloud. However, customization of virtual machines (like Amazon EC2) used to be a nontrivial task.
In this post I will show how a few lines of R code can start a customized RStudio docklet in a cloud and email login credentials to course participants. So, the participant do not need to install R and the required packages. Moreover, it is guaranteed they all run exactly the same software. All they need is a decent web browser to access RStudio server.
|RStudio server login|
Running RStudio in Digital Ocean with R/analogsea
So how complicated is it today to start your RStudio on clouds? It is (almost) a one-liner:
- If you do not have Digital Ocean account, get one. You should receive a promotional credit $10 (= 1 regular machine running without interruption for 1 month):
(full disclosure: if you create your account using the link above I might get an extra credit)
- Install analogsea package from Github. Make sure to create Digital Ocean personal access token and in R set DO_PAT environment variable. Also create your personal SSH key and upload it to Digital Ocean.
- And now it is really easy:
# Sys.setenv(DO_PAT = “*****”) set access token
# start your machine in Digital Ocean
d <- docklet_create(size = getOption("do_size", "512mb"))
# run RStudio on machine ‘d’ (rocker/rstudio docker image)
d %>% docklet_rstudio()
The last line should open your browser with RStudio login page (user “rstudio”, password “rstudio”). If not, use summary(d) to get the IP address of your machine and go to http://your_machine:8787.
Customized RStudio images
I has been afraid of that because my knowledge of docker is somehow limited. It was actually far easier than I expected: See a dockerfile for RStudio with DOQTL pre-installed.
Start virtual machine, pull and run customized RStudio image, email credintials
The code below is doing just that. There are several ways to send emails in R and this program utilizes sendmailR package. I split the code into several for-loops, so if something goes wrong there is a better chance to catch it.