ShinyProxy Christmas Release

ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise or larger organizations. Since our previous blog post five releases took place, so it is time to provide the ‘state of affairs’ before venturing into the New Year.

Kerberos and Co

To some Kerberos is a multi-headed dog that guards the gates of the Underworld. To others it is enterprise technology that protects corporate networks and offers single sign-on for network services. ShinyProxy already supports a broad range of authentication and authorization technologies (OpenId Connect, Keycloak, LDAP, social login etc.), but with Kerberos we can support even more organizations to manage access to their Shiny apps, both using the Active Directory variant and the Kerberos implementation one finds on GNU/Linux and other unix variants. Similarly to OpenId Connect where the OIDC access token for a user is made available to the Shiny app, the Kerberos credentials cache of a user is automatically mounted inside the app container so the app can use service tickets for accessing other services (backend-principals).

Cerberum domat Hercules

Another (new) authentication method webservice was added to allow usage of ShinyProxy with custom web services that handle authentication with a HTTP POST call returning a session id and user information. For the existing methods a few refinements were made e.g. allowing specific attributes to be used as the user’s name for both Keycloak (proxy.keycloak.name-attribute) and OpenId based authentication (proxy.openid.username-attribute).

Docker Back-Ends

As you may know ShinyProxy can be scaled from a single machine (plain Docker host) to data center scale with Docker Swarm and Kubernetes clusters. For Docker Swarm a fully worked out example has been added on our ShinyProxy Config Examples repository on Github. In the last release the Kubernetes back-end also gained support to select specific nodes for the Shiny apps using the proxy.kubernetes.node-selector field.

It is now also possible to mount user-specific docker volumes in your apps (and many other goodies) thanks to the support of Spring expression language (or SpEL) in the application.yml configuration file:

proxy:
     ...
  specs:
  - id: santaclaus
    display-name: The most Mighty and Loyal Friend of Children
    container-cmd: ["R", "-e", "sleigh::run_rudolph()"]
    container-image: openanalytics/christmas
    access-groups: [statisticians, reindeers]
    container-volumes: [ "/home/#{proxy.userId}/gifts:/var/gifts" ]

Miscellaneous improvements

In terms of integration, we added an example on how to embed Shiny apps into arbitrary web sites or portal sites as part of the configuration examples. In terms of security a new option proxy.bind-address now allows to control the bind address for ShinyProxy. Styling and customizing ShinyProxy was possible for a long time (see a.o. this blog post), but we now added a simple way to set the favicon so you can give your ShinyProxy instances a personal touch.

Full release notes can be found on the downloads page and updated documentation can be found on https://shinyproxy.io. As always community support on this new release is available at

https://support.openanalytics.eu

Merry Christmas and have fun with ShinyProxy!