Hébergement et configuration de vos propres applications brillantes sans serveur brillant

95

J'essaie de mettre des applications brillantes à la disposition de mes collègues sans qu'ils aient à exécuter ou même à installer R.

J'ai donc lu cette page Web et j'ai trouvé cette phrase:

Si vous êtes familier avec l'hébergement Web ou si vous avez accès à un service informatique, vous pouvez héberger vous-même vos applications Shiny.

sous la section « Partager en tant que page Web ».

Comment puis-je faire ceci?

Le problème est que mon entreprise est liée à certaines restrictions concernant l'hébergement Web et la sécurité et ainsi de suite, et ne paiera pas (pour l'instant) un shiny-server-pro.

Mais la phrase ci-dessus me donne l'espoir de mettre en place quelque chose nous-mêmes pour les convaincre.

schlusie
la source

Réponses:

87

Si votre PC et les PC de vos collègues appartiennent au même LAN, cela est assez facile à réaliser. Exécutez simplement votre application via:

runApp(host="0.0.0.0",port=5050)

La valeur définie via l' hostargument indique d'accepter toute connexion (pas seulement de localhost). L' portargument peut prendre n'importe quelle valeur que vous voulez (assurez-vous simplement d'éviter de sélectionner les ports utilisés par d'autres services comme sshou http). Ensuite, prenez note de votre adresse IP locale (si vous êtes sous Linux, vous pouvez la voir à travers ifconfig). Dites que votre adresse IP l'est 192.168.1.70. Vos collègues peuvent utiliser votre application en insérant dans la barre d'adresse de leur navigateur 192.168.1.70:5050, c'est-à-dire votre adresse IP suivie :du numéro de port que vous avez sélectionné.

Si vous souhaitez accéder depuis l'extérieur de votre réseau local, vous pouvez diriger votre routeur vers votre PC lorsque quelqu'un se connecte à votre adresse IP publique via le port 5050.

Nicola
la source
2
Je vous remercie. Je vais l'essayer lundi. Mais cela signifie que je dois avoir R et l'application en cours d'exécution pendant que d'autres y accèdent?
schlusie
2
Oui. Votre application doit être en cours d'exécution sur votre ordinateur.
nicola
5
D'accord. Je l'ai maintenant essayé et cela a fonctionné. Mais y a-t-il une possibilité sans exécuter l'application sur ma machine? comme je l'ai dit, nous avons accès à un service informatique et à quelques serveurs et la phrase citée indique la possibilité de le faire.
schlusie
3
L'application doit s'exécuter quelque part. La machine qui l'héberge doit avoir R, brillant et toutes les dépendances nécessaires pour le faire fonctionner.
nicola
6
Ceci est un article très utile - ma question de suivi est, combien de personnes peuvent accéder à l'application en même temps?
md1630
35

Partager des applications sur le LAN comme celui-ci est plutôt cool, mais c'est une sorte de piratage. Je l'ai essayé avec des collègues, et cela fonctionne, mais c'est plus une astuce de bureau qu'une solution durable.

Je viens de terminer le développement du package RInno pour ce problème précis, c'est-à-dire lorsqu'une entreprise ne paiera pas pour Shiny Server ou qu'il y a des problèmes de sécurité avec les services cloud.

Pour commencer:

install.packages("RInno")
require(RInno)
RInno::install_inno()

Ensuite, il vous suffit d'appeler deux fonctions pour créer un cadre d'installation:

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()

Si vous souhaitez inclure R pour vos collègues qui ne l'ont pas installé, ajoutez include_R = TRUEà create_app:

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)

Il inclut par défaut shiny, magrittr et jsonlite, donc si vous utilisez d'autres packages comme ggplot2 ou plotly, ajoutez-les simplement à l' pkgsargument. Vous pouvez également inclure des packages GitHub dans l' remotesargument:

create_app(
    app_name = "myapp", 
    app_dir  = "path/to/myapp"
    pkgs     = c("shiny", "jsonlite", "magrittr", "plotly", "ggplot2"),
    remotes  = c("talgalili/installr", "daattali/shinyjs"))

Si vous êtes intéressé par d'autres fonctionnalités, consultez FI Labs - RInno

Jonathan Hill
la source
3
Uniquement pour Windows ^^
pawamoy
2
Oui, j'ai acheté un ordinateur portable Linux et je cherche des moyens de prendre en charge Ubuntu ensuite
Jonathan Hill
7

Vous voudrez peut-être jeter un coup d'œil à la solution open source shinyproxy .

En utilisant shinyproxy, vous devrez envelopper vos applications dans un conteneur Docker pour les héberger.

Ici, vous pouvez trouver un guide sur la façon de déployer une application brillante dans un conteneur Docker (ce qui est une bonne pratique, même sans utiliser shinyproxy, pour maintenir les dépendances de l'application).

Il existe différentes méthodes d'authentification et de mise à l'échelle disponibles.

ismirsehregal
la source
3

J'ai récemment installé Shiny sur un serveur Linux Centos 7 que nous avons localement. Nous avons utilisé le guide ci-dessous pour la plupart. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

N'hésitez pas à poser des questions sur les problèmes de configuration ici afin que toute autre personne utilisant le guide puisse voir les réponses!

Nous avons également envisagé de le pousser sur un serveur AWS, optant pour le nôtre car le contenu est sensible. Sinon, les deux solutions se ressemblaient. Le système Linux et Shiny sont légers, vous pourrez peut-être l'exécuter sur le serveur Amazon gratuit!

Ben
la source