<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/shinyproxy-1-1-0-released/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://www.openanalytics.eu/blog/2018/03/25/shinyproxy-1.1.0/"> Open Analytics</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>ShinyProxy is a novel, open source platform to deploy Shiny apps for the enterprise<br>
or larger organizations.</p>
<h3>scalability</h3>
<p>In our previous release (see <a rel="nofollow" href="https://www.openanalytics.eu/blog/2018/03/25/shinyproxy-1.1.0/shinyproxy-1.0.2.md" target="_blank">this blog post</a>) we announced our focus on scalability with support for Docker Swarm back-ends. With version 1.1.0 we moved to hyperscaling Shiny apps in the datacenter by adding support for <a rel="nofollow" href="https://kubernetes.io/" target="_blank">Kubernetes</a>. We have used it for customers that roll out internet-facing Shiny apps with high numbers of concurrent users and needs for automated deployment.</p>
<p><img border="0" alt="Kubernetes diagram" width="auto" src="https://i1.wp.com/www.openanalytics.eu/blog-img/flower.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>A Kubernetes back-end can simply be configured using</p>
<pre><code>shiny:
  proxy:
    container-backend: kubernetes 
</code></pre>
<p>and kubernetes specific properties allow to set all typical configurations such as the apiserver URL, certificates for accessing the cluster over https, namespaces for pod creation, definition of the pull policy etc.</p>
<h3>ShinyProxy in a container</h3>
<p>In a similar vein, we also worked on running ShinyProxy itself in a container on the different backends (Docker, Docker Swarm and Kubernetes). Containerizing ShinyProxy<br>
per se is not a difficult exercise (it is nothing more than a single jar file to launch), but one can distinguish two ‘run modes’:</p>
<ul>
<li>ShinyProxy runs inside a container, in the same container manager where it spawns shiny apps, or</li>
<li>ShinyProxy does not run inside a container, or as a container in a different container manager.</li>
</ul>
<p>To operate in this first mode, we introduced a new setting <code>internal-networking</code><br>
which (for the Docker backend) can be set as follows:</p>
<pre><code>shiny:
  proxy:
    docker:
      internal-networking: true
    ...
</code></pre>
<p>If the ShinyProxy container was started in a dedicated network e.g. <code>shinynet</code>,<br>
one can indicate that the apps should have interfaces in the same network<br>
using the <code>docker-network</code> property:</p>
<pre><code>  apps:
  - name: beautiful-app
    docker-network: shinynet
    ...
</code></pre>
<p>If you want to try this out, you can <code>docker pull openanalytics/shinyproxy</code> from <a rel="nofollow" href="https://hub.docker.com/r/openanalytics/shinyproxy/" target="_blank">Dockerhub</a>.</p>
<h3>Python apps ?!</h3>
<p>Another new feature in this release is the support of Dash apps.<br>
<a rel="nofollow" href="https://plot.ly/products/dash/" target="_blank">Dash</a> is the equivalent of<br>
Shiny in the Python world and built on top of Plotly.js,<br>
React, and Flask.</p>
<p>Dash apps will by default run on port 8050, so we added a new<br>
<code>port</code> property that can be defined at the level of individual<br>
apps:</p>
<pre><code>shiny:
  
  ...
  
  apps:
  - name: dash-demo
    display-name: Dash Demo Application
    port: 8050
    docker-cmd: [&quot;python&quot;, &quot;app.py&quot;]
    docker-image: openanalytics/shinyproxy-dash-demo
    ...
</code></pre>
<p><img border="0" src="https://i0.wp.com/www.openanalytics.eu/blog-img/shinyproxy-dash-demo.png?w=456&ssl=1" alt="ShinyProxy Dash Demo" width="auto" data-recalc-dims="1"></p>
<p>An example Docker image has been published on <a rel="nofollow" href="https://hub.docker.com/r/openanalytics/shinyproxy-dash-demo/" target="_blank">Docker Hub</a> and, as always, the sources are on our <a rel="nofollow" href="https://github.com/openanalytics/shinyproxy-dash-demo" target="_blank">Github<br>
page</a>.</p>
<p>With ShinyProxy you can now use one single framework to roll out both R/Shiny apps and Python/Dash apps!</p>
<h3>Miscellaneous improvements</h3>
<p>Besides the Kubernetes back-end, containerization and the support for Dash apps, we also made a number of small improvements. It is e.g. possible now to have multiple sessions per user/app combination. In other words a user can have multiple browser tabs with the same app in one single or in multiple browsers. Also the LDAP configuration has been extended and documented more elaborately. Finally, on community demand we added the possibility to pass a <code>privileged</code> flag when running a Docker container.</p>
<p>For all these new features, documentation has been updated on <a rel="nofollow" href="http://shinyproxy.io/" target="_blank">http://shinyproxy.io</a> and as always community support on this new release is available at</p>
<p><a rel="nofollow" href="https://support.openanalytics.eu/" target="_blank">https://support.openanalytics.eu</a></p>
<p>Don’t hesitate to send in questions or suggestions and have fun with ShinyProxy!</p>
	<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://www.openanalytics.eu/blog/2018/03/25/shinyproxy-1.1.0/"> Open Analytics</a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/RZn25V5F430" height="1"></a></div>