Alojamiento y configuración de aplicaciones brillantes propias sin servidor brillante

95

Estoy tratando de hacer que las aplicaciones brillantes estén disponibles para mis compañeros de trabajo sin que tengan que ejecutarlas o incluso tener R instalado.

Entonces leí esta página web y encontré esta oración:

Si está familiarizado con el alojamiento web o tiene acceso a un departamento de TI, puede alojar sus aplicaciones Shiny usted mismo.

en " Compartir como página web" ".

¿Cómo puedo hacer esto?

El problema es que mi empresa está sujeta a ciertas restricciones con respecto al alojamiento web y la seguridad, y así sucesivamente, y (por ahora) no pagará por un shiny-server-pro.

Pero la oración anterior me da la esperanza de establecer algo nosotros mismos para convencerlos.

schlusie
fuente
1
¿Quizás comenzando con un servidor brillante ?
hrbrmstr

Respuestas:

87

Si su PC y las PC de sus compañeros de trabajo pertenecen a la misma LAN, esto es bastante fácil de lograr. Simplemente ejecute su aplicación a través de:

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

El valor establecido a través del hostargumento dice aceptar cualquier conexión (no solo desde localhost). El portargumento puede asumir cualquier valor que desee (solo asegúrese de evitar seleccionar puertos utilizados por otros servicios como ssho http). Luego, tome nota de su IP local (si está bajo Linux, puede verla ifconfig). Digamos que su IP es 192.168.1.70. Sus colegas pueden usar su aplicación insertando en la barra de direcciones de su navegador 192.168.1.70:5050, es decir, su IP seguida de: y el número de puerto que seleccionó.

Si desea acceder desde fuera de su LAN, puede dirigir su enrutador a su PC cuando alguien se conecte a su IP pública a través del puerto 5050.

nicola
fuente
2
Gracias. Lo intentaré el lunes. ¿Pero esto significa que tengo que tener R y la aplicación ejecutándose mientras otros acceden a ella?
schlusie
2
Si. Su aplicación debe estar ejecutándose en su PC.
nicola
5
Bueno. Ahora lo probé y funcionó. Pero, ¿existe la posibilidad sin ejecutar la aplicación en mi máquina? como dije, tenemos acceso a un departamento de TI y algunos servidores y la oración citada indica la posibilidad de hacerlo.
schlusie
3
La aplicación debe ejecutarse en algún lugar. La máquina que lo aloja debe tener R, shiny y todas las dependencias necesarias para que funcione.
nicola
6
Esta es una publicación muy útil; mi pregunta de seguimiento es, ¿cuántas personas pueden acceder a la aplicación al mismo tiempo?
md1630
35

Compartir aplicaciones a través de la LAN como esta es bastante bueno, pero es una especie de truco. Lo probé con algunos compañeros de trabajo y funciona, pero es más un truco de oficina que una solución sostenible.

Acabo de terminar de desarrollar el paquete RInno para este problema exacto, es decir, cuando una empresa no paga por Shiny Server o hay problemas de seguridad con los servicios en la nube.

Para empezar:

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

Entonces solo necesita llamar a dos funciones para crear un marco de instalación:

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

Si desea incluir R para sus compañeros de trabajo que no lo tienen instalado, agregue include_R = TRUEa create_app:

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

De forma predeterminada, incluye shiny, magrittr y jsonlite, por lo que si está utilizando otros paquetes como ggplot2 o plotly, simplemente agréguelos al pkgsargumento. También puede incluir paquetes de GitHub en el remotesargumento:

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

Si está interesado en otras funciones, consulte FI Labs - RInno

Jonathan Hill
fuente
3
Solo para Windows ^^
pawamoy
2
Sí, compré una computadora portátil con Linux y estoy buscando formas de admitir Ubuntu a continuación
Jonathan Hill
7

Es posible que desee echar un vistazo a la solución de código abierto shinyproxy .

Con shinyproxy, tendrá que envolver sus aplicaciones en un contenedor de ventana acoplable para alojarlas.

aquí puede encontrar una guía sobre cómo implementar una aplicación brillante en un contenedor de ventana acoplable (que por cierto es una buena práctica, incluso sin usar shinyproxy, para mantener las dependencias de la aplicación).

Hay diferentes métodos de autenticación y escalado disponibles.

ismirsehregal
fuente
3

Recientemente instalé Shiny en un servidor Centos 7 Linux OS que tenemos localmente. Usamos la guía a continuación en su mayor parte. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

¡No dude en hacer cualquier pregunta sobre problemas de configuración aquí para que cualquier otra persona que use la guía pueda ver las respuestas!

También buscamos subirlo a un servidor de AWS, optamos por el nuestro ya que el contenido es confidencial. De lo contrario, ambas soluciones parecían similares. El sistema Linux y Shiny son livianos, ¡es posible que pueda ejecutarlo en el servidor gratuito de Amazon!

Ben
fuente