Hospedar e configurar seus próprios aplicativos brilhantes sem servidor brilhante

95

Estou tentando disponibilizar aplicativos brilhantes para meus colegas de trabalho sem que eles precisem executar ou mesmo ter o R ​​instalado.

Então eu li esta página da web e encontrei esta frase:

Se você estiver familiarizado com hospedagem na web ou tiver acesso a um departamento de TI, poderá hospedar seus aplicativos Shiny sozinho.

na seção " Compartilhar como página da web ".

Como posso fazer isso?

O problema é que minha empresa está sujeita a certas restrições em relação a hospedagem na web e segurança e assim por diante, e não vai (por enquanto) pagar por um profissional de servidor brilhante.

Mas a frase acima me dá esperança de estabelecer algo nós mesmos para convencê-los.

Schlusie
fonte

Respostas:

86

Se o seu PC e os PCs dos seus colegas de trabalho pertencem à mesma LAN, isso é muito fácil de conseguir. Basta executar seu aplicativo por meio de:

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

O valor definido por meio do hostargumento diz para aceitar qualquer conexão (não apenas do host local). O portargumento pode assumir qualquer valor que você quiser (apenas certifique-se de evitar a seleção de portas usadas por outros serviços como sshou http). Então, tome nota do seu IP local (se você estiver no Linux, você pode ver através dele ifconfig). Diga que seu IP é 192.168.1.70. Seus colegas podem usar seu aplicativo inserindo na barra de endereços do navegador 192.168.1.70:5050, ou seja, seu IP seguido por :e o número da porta que você selecionou.

Se você deseja acessar de fora de sua LAN, você pode direcionar seu roteador para seu PC quando alguém se conectar ao seu IP público através da porta 5050.

nicola
fonte
2
Obrigado. Vou tentar na segunda. Mas isso significa que preciso ter R e o aplicativo em execução enquanto outros o acessam?
schlusie
2
Sim. Seu aplicativo deve estar rodando no seu pc.
nicola
5
OK. Agora tentei e funcionou. Mas existe a possibilidade de não executar o aplicativo na minha máquina? como eu disse, temos acesso a um departamento de TI e alguns servidores e a frase citada indica a possibilidade de fazê-lo.
schlusie
3
O aplicativo deve ser executado em algum lugar. A máquina que o hospeda deve ter R, brilhante e todas as dependências necessárias para fazê-lo funcionar.
Nicola
6
Esta é uma postagem muito útil - minha pergunta de acompanhamento é: quantas pessoas podem acessar o aplicativo ao mesmo tempo?
md1630 de
34

Compartilhar aplicativos pela LAN como este é muito legal, mas é uma espécie de hack. Experimentei com alguns colegas de trabalho e funciona, mas é mais um truque de escritório do que uma solução sustentável.

Acabei de terminar de desenvolver o pacote RInno exatamente para esse problema, ou seja, quando uma empresa não paga pelo Shiny Server ou há preocupações de segurança com serviços em nuvem.

Para começar:

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

Então você só precisa chamar duas funções para criar uma estrutura de instalação:

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

Se você gostaria de incluir R para seus colegas de trabalho que não o têm instalado, adicione include_R = TRUEa create_app:

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

O padrão é brilhante, magrittr e jsonlite, então se você estiver usando outros pacotes como ggplot2 ou plotly, apenas adicione-os ao pkgsargumento. Você também pode incluir pacotes GitHub no remotesargumento:

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

Se você estiver interessado em outros recursos, confira FI Labs - RInno

Jonathan Hill
fonte
3
Apenas para Windows ^^
pawamoy
2
Sim, comprei um laptop Linux e estou procurando novas maneiras de oferecer suporte ao Ubuntu
Jonathan Hill,
7

Você pode querer dar uma olhada na solução de código aberto brilhante .

Usando o GlossProxy, você terá que embrulhar seus aplicativos em um contêiner docker para hospedá-los.

Aqui você pode encontrar um guia sobre como implantar um aplicativo brilhante em um contêiner docker (que, aliás, é uma boa prática, mesmo sem usar o proxy brilhante, para manter as dependências do aplicativo).

Existem diferentes métodos de autenticação e escalonamento disponíveis.

Ismirsehregal
fonte
3

Recentemente, instalei o Shiny em um servidor Centos 7 Linux OS que temos localmente. Usamos o guia abaixo na maior parte. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Sinta-se à vontade para fazer qualquer pergunta sobre problemas de configuração aqui, para que qualquer pessoa que use o guia possa ver as respostas!

Também examinamos a possibilidade de colocá-lo em um servidor AWS, optamos por nosso próprio, pois o conteúdo é confidencial. Caso contrário, ambas as soluções pareciam semelhantes. Os sistemas Linux e Shiny são leves, você pode executá-los no servidor Amazon gratuito!

Ben
fonte