ShinyProxy 1.0.2

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.

Docker swarm logo

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.

keycloak logo

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: [ "db-net" ]
    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.

keycloak logo

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 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!