Shiny Server is a great tool, but I’ve always found it odd that there was no built-in password authentication. Sure, the Shiny Pro edition has SSL auth., but even for open source projects, I’m not really crazy about just anyone hitting my server whenever they want.
To solve this little problem, I whipped up two work-arounds. One solution uses an Nginx server with basic authentication and the second uses Nginx with SSL auth. The examples below are based on a fresh install of Ubuntu 14.04. A “quick start” version of the exact environment I used can be had here.
Deploy Shiny Server with Nginx Basic Authorization
The trick is to have Shiny only serve to the localhost and have Nginx listen to localhost and only serve to users with a password. This is fairly straight forward and involves editing the Nginx default.conf as well as the Shiny Server conf.
First, make sure you’ve got Nginx installed.
sudo apt-get install nginx
Also, make sure you’ve got Apache2-utils, you’ll use this to store the usernames and passwords.
sudo apt-get install apache2-utils
Before you go on, shut down both Shiny and Nginx
sudo service nginx stop sudo stop shiny-server
Next, you’ll need to edit the Nginx default.conf file.
sudo nano /etc/nginx/sites-available/default
Copy and paste the following into your default.conf
server { listen 80; location / { proxy_pass http://127.0.0.1:3838/; proxy_redirect http://127.0.0.1:3838/ $scheme://$host/; auth_basic "Username and Password are required"; auth_basic_user_file /etc/nginx/.htpasswd; } }
Once that’s done, you’ll need to edit Shiny Server’s conf file so it only serves to loaclhost. Otherwise users would be able to creep around your authentication by going to port 3838.
sudo nano /etc/shiny-server/shiny-server.conf
Copy and paste the below to your shiny-server.conf.
server{
...read moreSource:: r-bloggers.com