Deploying R, RStudio and Shiny applications on Ubuntu Server

10

In this post, we are going to see how to deploy R, RStudio, and Shiny apps on a virtual server.

The post won’t focus on Shiny programming aspect, neither on Ubuntu programming, however, the tutorial is self-sufficient. Only by following the different steps, you’ll get a working server and Shiny app.

1. Choosing your virtual server provider

There are a lot of virtual server providers available on the web, among them:

  • Microsoft Azure
  • AWS
  • IBM softlayer
  • DigitalOcean

The offers are more or less the sames, for this tutorial, you are going to need a virtual server with at least 2GB of RAM and Ubuntu installed. Below is a comparison of these service providers (Since it’s far from being exhaustive, tell me if you know better options).

Service provider Specifications Monthly price
AWS (t2.small) 2GB RAM/1 CPU/AWS storage 16,06$
DigitalOcean 2GB RAM/2 CPU/40 GB SSD 20$
Microsoft Azure (A1) 1.75 GB RAM/1 CPU/40 GB disk 20.09$
IBM SoftLayer 2GB RAM/1 CPU/ 25GB disk 35$

In this tutorial we will use DigitalOcean (Still most of the tutorial should be working on most other Ubuntu server), you can get a 10$ discount using this link, which is enough to run the server for 2 weeks for free.

Choosing DigitalOCean was mainly motivated by its low cost, the easy configuration and the great amount of tutorials available to deploy a DigitalOcean server. If you already have an other service provider, the tutorial should work fine too.

2. Setting up the Ubuntu droplet

On digital ocean, server are call droplet, first you need to complete your account creation, then let’s create an Ubuntu droplet:

  1. Click on the droplet button:
    creadroplet1
  2. Select Ubuntu 16.04 as the OS  and a 2GB virtual server
    2016-11-21-14_51_29-digitalocean-create-droplets
  3. Select your hosting location (The closer, the better)
    2016-11-21-14_52_18-digitalocean-create-droplets
  4. Create a new SSH key (if you need help to create and enter the SSH key, DigitalOcean made a tutorial here for windows and here for Mac/Linux)
  5. Create your droplet

2016-11-21-15_12_54-digitalocean-droplets

Great, you now have your own Ubuntu server !

3.a. Connection to the server

Now, we need to connect to our server, you can do it by following step five of the SSH creation tutorial: here for windows and here for Mac/Linux.

Once this step has been completed, you should see the Linux terminal.

3.b.Creation of an admin user

You may want to create a new admin user, to avoid working with the root privilege:

$ adduser user_name

Now we need to grant this user sudo (admin) privileges:

$ usermod -a -G sudo user_name

You then will be asked to enter a password and some information (name, room number, …)

And we can now modify our SSH connection to login with this user account:

  • Windows and putty:
    Connection->Data->Autologin username (change it from root to the user_name you entered)

4. Installing R and Shiny

To install R, you just have to follow this tutorial from DigitalOcean: Tutorial R base .

A few comments:

  • The R version should the most recent one (3.3.2), you can check it using version in R.
  • Don’t forget to run R with: (thus the package will be available for all users).
    $ sudo -i R

Once you run R with the previous command, R terminal should start, you can quit R by using q(). You can now install the shiny package in the R console with:

install.packages("shiny")

And you can check the installation by trying to load the library and one of its function:

>library("shiny")
>fluidPage()

5. Installing R Studio server:

Now let’s install RStudio to have a complete R environnement. Futhermore having RStudio on your server will allow you to code there directly and to avoid some problems when transitioning from your laptop to the server.

You’ll just have to run the following command (from  Rstudio):

$ sudo apt install gdebi-core
$ wget https://download2.rstudio.org/rstudio-server-1.0.44-amd64.deb
$ sudo gdebi rstudio-server-1.0.44-amd64.deb

Now, you should be ale to access Rstudio server your internet browser at the following:

http://YOUR_DROPLET_IP:8787/

You’ll now access the login screen, you can login using the user/password combinaison created at step 3.b.

2016-11-22-09_45_23-rstudio-sign-in

IMPORTANT COMMENT: if you want a package/ressource to be available to all users, install it through the RConsole and not Rstudio ! 

6.Installing Shiny server

Now, we just have to install and deploy Shiny server:

$ wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.1.834-amd64.deb
$ sudo gdebi shiny-server-1.5.1.834-amd64.deb

Your Shiny server is now available on:

http://YOUR_DROPLET_IP:3838/

You should now see (the error you get is normal since Rmarkdown is not installed):

2016-11-22 10_06_49-Photos.png

 

7.Developing and deploying your app:

Our goal is to deploy the following app from Rstudio showing the wordcloud of different novel.
We’ll see three different ways to deploy the app:

  • From your computer
  • From Rstudio server
  • Directly from github

First we need to prepare our server for the app. The app require three packages:

  • tm
  • memoise
  • wordcloud

You can install them using:

$ sudo -i R

Then in the RConsole

>install.packages(c("tm","memoise","wordcloud"))

a.Deployment from your computer 

  1. Download the git from here.
  2. Connect to Rstudio server
  3. Upload the zip (shiny-examples-master.zip)  using the upload button- right bottom window
  4. The file should be unziped automatically. The word-cloud app is in shiny-examples-master/082-word-cloud
  5. Now we want to move our app to the server location:
$ cd /
$  sudo mv /home/antoine/shiny-examples-master/082-word-cloud /srv/shiny-server/

The first command bring us back to root while the second one move the files.

6. Access the app at:

http://YOUR_DROPLET_IP:3838/082-word-cloud/

b. Deployment from Rstudio

  1. Install git using the Ubuntu console:
$ sudo apt-get install git-core

2. Connect to Rstudio server
3. New Project->Version Control->Git: enter https://github.com/rstudio/shiny-examples.git as repository URL.
4.Move the app to the server:

$ cd /
$  sudo mv /home/antoine/shiny-examples/082-word-cloud /srv/shiny-server/

6. Access the app at:

http://YOUR_DROPLET_IP:3838/082-word-cloud/

c. Deployment from R console

  1. Install devtools using the following (very-short) tutorial .
  2. Run R:
    $ sudo -i R
  3. Run the following code in R (We are just asking R to clone the git-repository with all the Shiny examples):
    git2r::clone("https://github.com/rstudio/shiny-examples.git", "/srv/shiny-server/Rmethod")

4.Access all the apps (including the word cloud one) at:

http://YOUR_DROPLET_IP:3838/Rmethod/

That’s it ! You managed to deploy a Shiny app on a virtual server !

You can now easily deploy your own app, whether using a git-repository or by developing it directly in RStudio server.

[twitter-follow screen_name=’AntGuilllot’ show_screen_name=’yes’]

10 COMMENTS

  1. Hi! Thanks for this post!

    I just want to say you can add serverhub.com to the vps providers, they have a very competitive prices and I’ve used one vps about 1 month shiny and no problems (yet!). They have a clear admin interface too like DO.

    Regards,

LEAVE A REPLY

Please enter your comment!
Please enter your name here