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 trouvé cette phrase:
Si vous connaissez bien l'hébergement Web ou 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 soumise à certaines restrictions en matière d'hébergement Web, de sécurité, etc., et ne paiera pas (pour le moment) pour un serveur brillant.
Mais la phrase ci-dessus me donne l’espoir d’organiser nous-mêmes quelque chose pour les convaincre.
Si votre PC et vos collègues de travail appartiennent au même réseau local, cela est assez facile à réaliser. Il suffit de lancer votre application via:
runApp(Host="0.0.0.0",port=5050)
La valeur définie à l'aide de l'argument Host
indique qu'il faut accepter toute connexion (et pas uniquement à partir de localhost). L'argument port
peut prendre toute valeur que vous voulez (assurez-vous simplement de ne pas sélectionner les ports utilisés par d'autres services tels que ssh
ou http
.). Ensuite, prenez note de votre adresse IP locale (si vous êtes sous linux, vous pouvez le voir à travers ifconfig
). Dites que votre adresse IP est 192.168.1.70
. Vos collègues peuvent utiliser votre application en les insérant dans la barre d'adresse de leur navigateur 192.168.1.70:5050
, c'est-à-dire votre adresse IP suivie de :
et le numéro de port que vous avez sélectionné.
Si vous souhaitez accéder de l'extérieur de votre réseau local, vous pouvez diriger votre routeur vers votre PC lorsqu'une personne se connecte à votre adresse IP publique via le port 5050.
Partager des applications via le réseau local est plutôt cool, mais c'est un peu un bidouillage. J'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 paquet RInno pour ce problème précis, c’est-à-dire quand une entreprise ne paiera pas pour Shiny Server ou qu’il ya 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)
Par défaut, shiny, magrittr et jsonlite sont inclus. Par conséquent, si vous utilisez d’autres packages tels que ggplot2 ou plotly, ajoutez-les simplement à l’argument pkgs
. Vous pouvez également inclure des packages GitHub dans l'argument remotes
:
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
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 de menu fixe pour les héberger. Il existe différentes méthodes d'authentification et de mise à l'échelle disponibles.
J'ai récemment installé Shiny sur un serveur OS 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 d'installation ici pour que toute autre personne utilisant le guide puisse voir les réponses!
Nous avons également envisagé de le placer sur un serveur AWS, nous avons opté pour le nôtre, car le contenu est sensible. Sinon, les deux solutions semblaient similaires. Les systèmes Linux et Shiny sont légers, vous pourrez peut-être l’exécuter sur le serveur gratuit Amazon!