This is the code underlying this guide. There is a non-interactive version here if the interactive version doesn't run. You can run the interactive verison it in RStudio (see below) or on a shiny server. If you expect fewer visitors, using RStudios built-in upload to http://shinyapps.io is very convenient. If you expect more users, I set up a free one at Google Cloud, which host it right now.
The file include/index.html
is hosted locally at lindeloev.net to make Twitter Cards etc. work.
-
Download the files to a folder
-
If you haven't already: Install and open RStudio. Then run this in the console to install the needed packages:
install.packages('shiny', 'rtdists')
-
Open
index.Rmd
. -
Press CTRL + SHIFT + K to launch it. Navigate the document in the Viewer pane or open it in the browser by clicking the small icon at the top of the Viewer pane.
The hard part was getting this to run on the web, which required around 6 evenings and a lot of debugging. http://shinyapps.io is very convenient for RStudio users, but the server shuts down after a document has been in use for 25 hours in a month. I choose to set up a shiny server on Google Cloud because they offered a year's worth of free computing and pretty low charges after that. I used this excellent guide although it needs a few updates:
-
My SSH username was different than expected. It took the username of the OS of my PC for some reason.
-
The projectid was also different than expected. It should be "shinyrt" but somehow changed to "shinyrt-251809".
-
Use newest shiny server and newest rstudio server instead of the links provided in the guide. The guide proposes to put the scripts in the
etc/shiny-server/
. I changed the location to/home/user/shiny
. You can do this by editing the shiny configuration. Writesudo nano /etc/shiny-server/shiny-server.conf
. To load this configuration, runsudo systemctl reload shiny-server
. I also ended up setting a lower number of concurrent users :simple_scheduler 70;
. Read more about configuring the Shiny server here.
-
I used Ubuntu 18.04 for server since I'm an old Ubuntu user. For some reason,
rstan
failed to install so I couldn't just installbrms
.rstan
is not available in the PPA for 18.04. Since I only neededrstan
to installbrms
, I ended up copying out the relevantbrms
scripts and source them from R. -
Perhaps due to heavy interest, I initially had issues with the server overloading to the degree that it would reject all connections. I did not find a sustainable solution, but it took longer for it to crash if I set a lower number of concurrent users (see above) restarting the server using
sudo systemctl stop shiny-server
followed bysudo systemctl start shiny-server
. I guess you could make a cron job which monitors CPU usage and runs this automatically, but since all connections are interrupted upon restart, it's a very ugly hack. -
When I run the .Rmd on my cloud shiny server, the Rmarkdown links fail to work. I explained this problem here, but I haven't found a solution yet.
-
Shiny does not expose files via URL so I could not just link to "images/file.png". I linked to the GitHub repo instead.
-
The Google Cloud server is just an IP address which is not memorable. After learning that I could not make a true web alias, I tried making an iframe in a GitHub page. However, because the Google Cloud server had no SSL certificate (no https://), GitHub Pages would not load content from it. As you can see, I hosted the iframe on my personal website instead. I had to add a .htaccess file to redirect https (SSL) traffic to http:
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule ^(.*)$ http://lindeloev.net/shiny/rt [R=301,L]