ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise
or larger organizations. Since our last blog post ten new
releases of ShinyProxy have seen the light, but with the 1.0.2 release it is time
to provide an overview of the lines of development and advances made.
Scalability
ShinyProxy now allows to run 1000s of Shiny apps concurrently on a Docker Swarm cluster.
Moreover, ShinyProxy will automatically detect whether the Docker API URL is a
Docker Engine API or a Swarm cluster API. In other words changing the back-end from
a single Docker host to a Docker Swarm is plug and play.
Single-Sign On
Complex deployments asked for advanced functionality for identity and access management (IAM).
To tackle this we introduced a new authentication mechanism authentication: keycloak
which integrates ShinyProxy with Keycloak, RedHat’s open source IAM solution. Features like single-sign on, identity brokering, user federation etc. are now available for ShinyProxy
deployments.
Larger Applications and Networks
Often times Shiny applications will be offered as part of larger applications that are
written in other languages than R. To enable this type of integrations, we have introduced
functionality to entirely hide the ShinyProxy user interface elements for seamless embedding
as views in bigger user interfaces.
Next to integration within other user interfaces, the underlying Shiny code may need to interact
with applications that live in specific networks. To make sure the Shiny app containers
have network interfaces configured for the right networks, a new docker-network configuration
parameter has been added to the app-specific configurations. Together with Docker volume mounting
for persistence, and the possibility to pass environment variables to Docker containers,
this gives Shiny developers lots of freedom to develop serious applications. An example configuration is given below. A Shiny app communicates over a dedicated Docker network db-net with a database back-end and configuration information is made available to the Shiny app via environment variables that are
read from a configuration file db.env:
- name: db-enabled-app
display-name: Shiny App with a Database Persistence Layer
description: Shiny App connecting with a Database for Persistence
docker-image: registry.openanalytics.eu/public/db-enabled-app:latest
docker-network-connections: [ &quot;db-net&quot; ]
docker-env-file: db.env
groups: [db-app-users]
Usage Statistics
Gathering usage statistics was already part of ShinyProxy since version 0.6.0, but was limited
to an InfluxDB back-end so far. Customers asked us to integrate Shiny applications
with MonetDB (and did not want a separate database to store usage statistics) so we developed a MonetDB adapter for version 0.8.4. Configuration has been streamlined with a usage-stats-url and support for DB credentials is now offered through a usage-stats-username and usage-stats-password.
Security
Proper security for ShinyProxy setups of all sizes is highly important and a number
of improvements have been implemented. The ShinyProxy security page
has been extended and has extra content has been added on dealing
with sensitive configuration.
On the authentication side LDAPS support has been around for a long time, but since release 1.0.0
we also offer LDAP+StartTLS support out of the box.
Deployment
Following production deployments for customers, we now also offer RPM files for deployment
on CentOS 7 and RHEL 7, besides the .deb packages for Ubuntu and the platform-independent
JAR files.
Further Information
For all these new features, detailed documentation is provided on http://shinyproxy.io and as always community support on this new release is available at
https://support.openanalytics.eu
Don’t hesitate to send in questions or suggestions and have fun with ShinyProxy!