Deploying ExploreModelMatrix on a Shiny Server

Charlotte Soneson, Federico Marini, Michael I Love, Florian Geier and Michael B Stadler

2021-05-19

Why deploying ExploreModelMatrix on a Shiny server?

While the installation of ExploreModelMatrix locally is a relatively straightforward operation, sometimes you might require an instance of it running on a server, e.g. for teaching purposes, or to provide a working version of it because you or your collaborators are lacking admin rights.

One possible solution would be to access the instance running at http://shiny.imbei.uni-mainz.de:3838/ExploreModelMatrix, which we provide also for demonstration purposes. Alternatively, you might need to deploy ExploreModelMatrix for internal use, or with a different set of examples/functionality. This vignette details the steps to do so - it might still require the intervention of your local IT service, and some degree of tech savvyness.

How to deploy ExploreModelMatrix

Step 1: Setting up the Shiny Server

You should mainly refer to this excellent reference: http://docs.rstudio.com/shiny-server/, the Administrator’s Guide beautifully written and maintained by the RStudio team.

In the case of the instance linked above (http://shiny.imbei.uni-mainz.de:3838/ExploreModelMatrix), the deployment is on a Ubuntu-based server. If this is your case too, please go to https://docs.rstudio.com/shiny-server/#ubuntu-14.04

If you are already familiar with Shiny Server, you can consider going directly here: http://docs.rstudio.com/shiny-server/#quick-start

Follow the indications in the main reference guide to see whether you have all packages installed, and visit the address which will refer to the address of your server (http://your.server.address:3838/sample-apps/hello/).

Step 2: setup ExploreModelMatrix

You need to:

Installing ExploreModelMatrix

You need first to install Bioconductor

sudo su - -c "R -e \"install.packages('BiocManager')\""

Once that is done, you can install ExploreModelMatrix with

sudo su - -c "R -e \"BiocManager::install('ExploreModelMatrix')\""

You can also install the development version of ExploreModelMatrix from GitHub with

# install remotes first
sudo su - -c "R -e \"BiocManager::install('remotes')\""
# and then ExploreModelMatrix
sudo su - -c "R -e \"BiocManager::install('csoneson/ExploreModelMatrix')\""

Keep in mind that if you are running the server as root, you could simply open R in the terminal and install the required packages with

Setup ExploreModelMatrix on the server

You essentially need to do two things:

  • in /srv/shiny-server, create a folder (e.g. via mkdir) named ExploreModelMatrix, and create a file in there called app.R. Edit its content (e.g. with vi, nano, or any other editor), copy-pasting the following lines:
library("ExploreModelMatrix")
ExploreModelMatrix()
  • you need to edit /etc/shiny-server/shiny-server.conf. To do this, again use any text editor (e.g. vi), and add the following lines
server {
  listen 3838;

  #...

  ### FROM HERE
  location /ExploreModelMatrix {
    # Run this location in 'app_dir' mode, which will host a single Shiny
    # Application available at '/srv/shiny-server/myApp'
    app_dir /srv/shiny-server/ExploreModelMatrix;

    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server/ExploreModelMatrix;

    # When a user visits the base URL rather than a particular application,
    # an index of the applications available in this directory will be shown.
    directory_index off;

    # recommended, to wait for the application to start
    app_init_timeout 250;
  }
  ### TO HERE

  # ...
}

You might need to restart the Shiny Server (systemctl restart shiny-server on Ubuntu). Then you should be good to go!

Visit http://your.server.address:3838/ExploreModelMatrix for your personal running instance.

ExploreModelMatrix at the IMBEI

http://shiny.imbei.uni-mainz.de:3838/ExploreModelMatrix is the address for the public instance of ExploreModelMatrix on the Shiny Server I manage at the Institute of Medical Biostatistics, Epidemiology and Informatics.

The relevant setup of that machine is the following (in case you are asking what specs you need):

lsb_release -a

  No LSB modules are available.
  Distributor ID: Ubuntu
  Description: Ubuntu 16.04.2 LTS
  Release: 16.04
  Codename: xenial

Session info

sessionInfo()
#> R version 4.1.0 (2021-05-18)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 20.04.2 LTS
#> 
#> Matrix products: default
#> BLAS:   /home/biocbuild/bbs-3.13-bioc/R/lib/libRblas.so
#> LAPACK: /home/biocbuild/bbs-3.13-bioc/R/lib/libRlapack.so
#> 
#> locale:
#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=en_GB              LC_COLLATE=C              
#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
#>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] ExploreModelMatrix_1.4.0
#> 
#> loaded via a namespace (and not attached):
#>  [1] tidyselect_1.1.1     xfun_0.23            bslib_0.2.5.1       
#>  [4] shinyjs_2.0.0        purrr_0.3.4          colorspace_2.0-1    
#>  [7] vctrs_0.3.8          generics_0.1.0       htmltools_0.5.1.1   
#> [10] stats4_4.1.0         yaml_2.2.1           rintrojs_0.2.2      
#> [13] utf8_1.2.1           rlang_0.4.11         jquerylib_0.1.4     
#> [16] pillar_1.6.1         later_1.2.0          glue_1.4.2          
#> [19] DBI_1.1.1            BiocGenerics_0.38.0  lifecycle_1.0.0     
#> [22] stringr_1.4.0        munsell_0.5.0        gtable_0.3.0        
#> [25] htmlwidgets_1.5.3    evaluate_0.14        knitr_1.33          
#> [28] fastmap_1.1.0        httpuv_1.6.1         parallel_4.1.0      
#> [31] fansi_0.4.2          Rcpp_1.0.6           xtable_1.8-4        
#> [34] scales_1.1.1         promises_1.2.0.1     DT_0.18             
#> [37] limma_3.48.0         S4Vectors_0.30.0     jsonlite_1.7.2      
#> [40] mime_0.10            ggplot2_3.3.3        digest_0.6.27       
#> [43] stringi_1.6.2        dplyr_1.0.6          shiny_1.6.0         
#> [46] cowplot_1.1.1        grid_4.1.0           tools_4.1.0         
#> [49] magrittr_2.0.1       sass_0.4.0           tibble_3.1.2        
#> [52] tidyr_1.1.3          crayon_1.4.1         pkgconfig_2.0.3     
#> [55] MASS_7.3-54          ellipsis_0.3.2       shinydashboard_0.7.1
#> [58] assertthat_0.2.1     rmarkdown_2.8        R6_2.5.0            
#> [61] compiler_4.1.0