# ---
# title: "Desplegando mi app de shiny con shiny-server"
# description: |
# Vamos a "llevar a internet" nuestra aplicación y hacerla accesible al mundo.
# author:
# - name: Ronny A. Hernández Mora
# url: http://ronnyhdez.rbind.io/
# date: 2020-12-28
# creative_commons: CC BY-NC
# preview: images/app.png
# twitter:
# creator: "@RonnyHdezM"
# output:
# distill::distill_article:
# self_contained: true
# ---
¿Porqué necesito saber esto?
Si hemos creado una aplicación de shiny, es muy probable que hayamos disfrutado el verla corriendo en nuestro computador y de pronto nos preguntemos:
¿Cómo puedo abrir mi aplicación al mundo? ¿Cómo otras personas pueden acceder y usar a mi aplicación? ¿Cómo compartir mi aplicación con usuarios sin que tengan que instalar R, RStudio y poner al correr mi código?
Bueno, pues esto es lo que conocemos como desplegar una aplicación. Vamos a “llevar a internet” nuestra aplicación y hacerla accesible al mundo.
Cuando menciono “hacerla accesible al mundo”, hablo de que podamos compartir un enlace y cualquier persona que dé click en ese enlace llegará a ver la interfaz de nuestra aplicación.
¿Qué esperar de esta guía?
Todos los pasos con instrucciones en bash
para desplegar una aplicación de shiny con shiny server open source en un servidor Linux con Ubuntu
El objetivo es mostrar los pasos para instalar los elementos necesarios en un servidor y que se pueda desplegar el app.
No se muestran los pasos para levantar el servidor. Esto queda a preferencia de cada quién y con el proveedor de su elección.
Tampoco se muestra en la guía los pasos para definir el dominio que potencialmente puede dirigir a la aplicación.
Requisitos:
Para poder seguir la guía, es necesario que ya haya desarrollado una aplicación de shiny. Puede seguir los pasos acá indicados haciendo uso de la aplicación modular que presenté en los webinarios de DataLatam
Así mismo es necesario contar con un servidor en el que pueda desplegar la aplicación.
También necesitamos tener conocimiento de git. La guía muestra los pasos haciendo uso de esta herramienta.
Recomendaciones del servidor:
Si queremos probar, lo ideal es usar un servidor con el mínimo posible. Conforme nuestra aplicación crezca y querramos que sea usada por más usuarios podemos revisar:
- memoria
- CPU
- disco
El sistema operativo puede ser cualquiera de su elección siempre y cuando sea Linux. Los pasos en esta guía están basados en la distribución Ubuntu mayor a 18.04.4. Validar que elegimos LTS (Long Term Support)
Pasos
Si ya tenemos un servidor, vamos a proceder con los siguientes instrucciones:
1- Instalando R en el servidor:
Para evitar inconvenientes de versiones desactualizadas de R, podemos seguir las siguientes instrucciones:
# Agregamos llave
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
# Agregamos repositorio
sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/'
# Si estamos con ubuntu 20 el repositorio es:
sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
# Si queremos remover el repo no hacerlo a mano y usar el siguiente:
sudo add-apt-repository --remove 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
# Actualizamos paquetes Ubuntu
sudo apt update
# Instalamos R
sudo apt install r-base
# Verificamos que versión de R sea la 4.0.1 (o las más actualizado al momento
# de la instalación)
R --version
2- Instalando librerías linux comunes para R en el servidor
Luego tomamos un paso para asegurarnos que todos los paquetes de Ubuntu se encuentren actualizados en el servidor
3- Instalando shiny server
Antes de iniciar con la instalación de shiny server, debemos de instalar el paquete de R shiny:
Para seguir la instalación de shiny server primero hay que instalarle a la máquina gdebi
Luego en la pagina de shiny server copiamos la direccion de donde tienen la última version.
Debemos de asegurarnos de obtener la versión más actualizada. La instrucción acá mostrada puede quedar desactualizada.
La versión la validamos con el número que aparece luego de la palabra shiny-server
En este caso, la usada para la guía es (shiny-server-1.5.13.944
)
Una vez instalado podemos revisar el estado de shiny-server:
Pare reiniciar el servidor de shiny cuando tenemos problema:
Una vez que tenemos instalado shiny-server,vamos a revisar por la puerta que está sirviendo. Podemos tomar la dirección IP externa del servidor, copiarla en el navegador (yo tengo preferencia por firefox) y de seguido escribimos :
y la puerta 3838
(Por defecto, la que sirve shiny)
Si no tenemos un servicio disponible (no vemos una página funcionando) debemos de revisar las reglas firewall del servidor e indicarle la salida del app.
4- Llevando la aplicación al servidor
A este punto tenemos nuestro servidor con R instalado, con shiny-server funcionando y las principales librerías linux para usar con una aplicación de shiny. Ahora el paso que sigue es llevar nuestra aplicación de shiny al servidor.
Es aquí donde usaremos git. Lo haremos con mi aplicación de ejemplo que se encuentra en github
Dentro del servidor, las aplicaciones deben de estar bajo el siguiente directorio:
/srv/shiny-server
Allí es donde debemos de llevar nuestra aplicación.
Luego, necesitamos instalar en el servidor los paquetes que son necesarios para nuestra aplicación. Todos aquellos paquetes que hayamos usado necesitamos incluirlos. Si dejamos alguno por fuera es muy probable que nuestra aplicación no levante. (Es el error más común que cometo)
Hay dos maneras de realizar este paso. Uno es dando el comando desde bash y el otro es abrir una sesión de R como usuario root
e instalarlo tal cual lo haríamos en una sesión de R en nuestro computador:
Si hay algún paquete que no está en el CRAN porque es una versión en desarrollo, podemos echar mano del paquete remotes
(el cual debimos de incluir en el paso anterior)
5- Levantando la aplicación
Con todos los pasos anteriores listos, procedemos a detener y volver a iniciar el servicio de shiny-server
, para luego probar si nos podemos conectar a ella:
Si el servicio está activo, podemos probar con la IP externa, la puerta 3838 e indicamos el nombre de la aplicación. Debería de ser algo similar a: ip:3838/shiny_modular/
¡Y listo! Con esto tenemos los pasos básicos para desplegar nuestra aplicación de shiny en nuestro servidor y hacerla disponible al mundo.
Referencias
El resumen de pasos mostrados en esta guía han sido tomados y adaptados de diversas fuentes como:
DigitalOcean (Algún día lograré documentar como lo hacen ellos)
Shiny Server Professional v1.5.15 Administrator’s Guide El sitio a visitar cuando hay problemas con shiny-server. Es documentación técnica
Reuse
Citation
@online{a. hernandez mora2020,
author = {A. Hernandez Mora, Ronny},
title = {Desplegando Mi App de Shiny Con Shiny-Server},
date = {2020-12-28},
url = {https://profound-caramel-d8abb6.netlify.app/posts/2021-12-11-desplegando-shiny},
langid = {en}
}