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.
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.
Complex deployments asked for advanced functionality for identity and access management (IAM).
To tackle this we introduced a new authentication mechanism
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
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
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
- 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]
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
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.
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.
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
Don’t hesitate to send in questions or suggestions and have fun with ShinyProxy!