r

ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise or larger organizations. In our last blog post we mentioned the need people felt to integrate Shiny apps in content management systems like Drupal. Release 0.7.8 added one extra feature in this respect so people could also include ShinyProxy hosted Shiny apps in external iframes.

It also kicked-off our effort to support service scalability and ever more complex apps. In the scalability area, we introduced facilities to manage and set memory limits on individual Shiny applications. This is as easy as adding a docker-memory field:

apps:
  - name: euler
    display-name: Euler's number
    docker-cmd: ["R", "-e shiny::runApp('/root/euler')"]
    docker-image: openanalytics/shinyproxy-template
    docker-memory: 256m
    groups: scientists

and one can use b, k, m or g as units for the memory limit.

Regarding efforts to support more complex apps, we introduced the possibility to pass arbitrary numbers of environment variables to the Shiny containers. One use case is to be able to pass database connection strings as environment variables to the containers. This can be done by specifying the path (on the host) in which the environment variables are defined:

If we use the Euler app example again (the example that can be used as a template to deploy your own apps), the configuration would use the docker-env-file field as in:

apps:
  - name: euler
    display-name: Euler's number
    docker-cmd: ["R", "-e shiny::runApp('/root/euler')"]
    docker-image: openanalytics/shinyproxy-template
    docker-memory: 256m
    docker-env-file: /path/to/env-file
    groups: scientists

One way to deal with persistence in Shiny apps is through databases. Another important option is to achieve persistence via file systems that need to be accessible across sessions or across users. In Docker world the elegant solution to deal with this is to mount (host) file systems as volumes on the container.

Using our beloved Euler app again we would use the docker-volumes field which supports mounting multiple volumes as well:

apps:
  - name: euler
    display-name: Euler's number
    docker-cmd: ["R", "-e shiny::runApp('/root/euler')"]
    docker-image: openanalytics/shinyproxy-template
    docker-memory: 256m
    docker-volumes: [ "/host/path1:/container/path1", "/host/path2:/container/path2" ]
    groups: scientists

Documentation has been updated on the project homepage and as always community support on this new release is available on our support site.

With the New Year fast approaching we are setting our intentions for the next releases, so don't hesitate to send suggestions for ShinyProxy and have fun!

ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise or larger organizations. Since the last release (see this blog post), we received two interesting use cases for which we did not imagine ShinyProxy would be used.

First of all, we received a request to support other authentication methods than LDAP authentication. Whereas ShinyProxy is currently used primarily by larger organizations and companies that typically work with LDAP-based authentication systems, it seems people appreciate the elegance of the framework also for more small-scale use. In particular we received a request to support file-based authentication. Since all configuration of ShinyProxy was always dealt with in one single configuration file (the application.yml file), we decided to stick with this principle.

In order to make use of this novel functionality, you will need to specify the 'simple' authentication system as follows:

shiny:
  proxy:
    authentication: simple

and users (and groups for authorization) can now be specified as

shiny:
  proxy:
    users:
    - name: bert
      password: password
      groups: scientists
    - name: ernie
      password: password
      groups: mathematicians

Since there are now multiple systems to specify users and groups (for authorization), some configuration parameters were renamed to make these more generally applicable. When you specify your apps in the apps block e.g. the groups for authorization are no longer called ldap-groups but just groups. Similarly the specification of the admin groups, i.e. user groups that have access to the admin area for viewing and managing active sessions, have moved up in the YAML configuration from shiny.proxy.ldap to shiny.proxy.

If file-based authentication was the last feature on your mind for ShinyProxy, there is one nice side effect, though: you can now demonstrate ShinyProxy apps with authentication on a machine without internet connectivity (since there is no need any more to reach an LDAP server).

A second use case we worked on since last release relates to the usage of ShinyProxy as part of an architecture where Shiny applications are brought to end users inside web sites managed through content management systems (e.g. Drupal). Already early on (version 0.1.0) we had foreseen to disable authentication for this type of setup (authentication: none) where the CMS would handle authentication, but now there was a request to pass information from the CMS to the Shiny app. Shiny has a nice mechanism in place to pass arguments via URLs (see this article), and so we made sure ShinyProxy honored this mechanism in 0.7.5.

Documentation has been updated on the project homepage and as always community support on this new release is available on our support site.

We are already back to our keyboards to work on the next release, so keep the suggestions coming and have fun with ShinyProxy!

ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise or larger organizations.

Our previous post on the how and why of ShinyProxy triggered a lot of encouraging reactions. Here's our favorite:

ShinyProxy tweet

Indeed choosing for Docker opens a world of possibilities for ShinyProxy and making you no longer dependent on a particular version of R or shiny is only one of the advantages.

We also received a number of useful suggestions and decided to quickly release the new features and fixes as version 0.7.0. Here are the most important ones:

  • allow one user to open multiple applications as requested by this Github issue
  • optional display of logos for apps on the landing page using a new configuration field logo-url
  • fix spurious error message on Jetty ALPN support

Documentation has been updated on the project homepage and as always community support on this new release is available on our support site.

Keep the suggestions coming and have fun with ShinyProxy!

ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise or larger organizations.

Why is this needed?

There is currently no valid open source alternative that offers this functionality.

What does it offer?

  • authentication
  • authorization
  • securing traffic with TLS/SSL
  • usage statistics
  • scalability

This is free and open source, is there also a paying and proprietary version?

If we can paraphrase the Discourse guys:

There is only one version of ShinyProxy - the awesome open source version. There's no super secret special paid commercial version with better or more complete features. Because ShinyProxy is 100% open source, now and forever, it belongs to you as much as it belongs to us. That's how community works.

Want to learn more and give it a try?

The project has full documentation here:

http://shinyproxy.io

There is a

besides a

Get community support?

https://support.openanalytics.eu

Other blog posts will follow. In the mean time have fun!

The knarrs of Open Analytics have left the port of Antwerp on their way to Denmark. What will our delegation bring to Aalborg besides our loyal sponsorship?

Earlier this week we published an article with an analysis of the Ubuntu Edge Indiegogo crowdfunding campaign, and the outlook was bleak. Donations had slowed to a crawl, and Canonical's \$32 million goal appeared to be little more than a pipe dream.

Yes, readers replied, donations had died off, but that's par the course for crowdfunding efforts.

Architect is an Eclipse-based cross-platform IDE for R packed with features for advanced R users. Need convincing? Let's take a look at some of Architect's most popular features.

OpenAnalytics is once more proud sponsor of the yearly R User Conference and sent a strong delegation to present some of its recent work.