É possivel servir milhares de usuarios (de IPs diferentes, conectados em outras redes de Internet) apenas com Shiny Server?

Eu tenho uma aplicação Shiny e queira compartilhá-la com pessoas aleatórias.

Suponha esse IP fictício:

127.128.0.129:3838/meuaplicativo

Eu digitei no terminal do Ubuntu (20.04) o código abaixo, imaginando que o mesmo permitiria que outros usuários acessassem a aplicação:

sudo chmod -R 777 /srv

Mas não foi possível, apenas máquinas conectadas na mesma conexão de Internet conseguem acesso.

Dito isso, tenho três perguntas:

  • É possível servir outros usuários apenas com uso do Shiny Server?
  • Quais as desvantagesns e riscos que esse procedimento traz?
  • Se não for possivel, como fazer para compartilhar minhas aplicações com outros usuários (de forma gratuita)?

Gostaria que minha aplicação ficasse a essa forma. Como proceder para isso?

Grato pela atenção.

vc pode usar o domínio do GitHub para depositar seu aplicativo com livre acesso online…

1 curtida

Oi, Giovani.

Para disponibilizar o seu app na internet, você precisa colocá-lo em um servidor web. Você pode fazer isso de duas maneiras:

  1. Usando um serviço de hospedagem.
  2. Configurando você mesmo o servidor web.

A minha sugestão se você quiser seguir a primeira alternativa é utilizar o shinyapps.io. Ele tem um plano gratuito com um certo limite de horas de uso por mês.

Sobre a segunda alternativa, a maneira mais fácil é utilizar o Shiny Server. Ele vai transformar o seu computador em um servidor web para aplicativos Shiny, liberando uma porta (3838, por exemplo) para que ele seja acessado de qualquer lugar.

Esse artigo (e outros sugeridos na página) é um ótimo primeiro passo para você avalioar se o Shiny Server é o que você precisa: Shiny - Introduction to Shiny Server

1 curtida

Olá,William. Obrigado pela resposta.

Eu tenho o Shiny Server instalado e já coloquei minha aplicação para funcionar. Ela funciona perfeitamente. Eu tenho 4 computadores que acessam a mesma rede wi-fi. Neles, ao digitar, por exemplo, 123.456.7.890/aplicativo/ o aplicativo é executado perfeitamente. Mas, basta tentar acessar de outra rede wi-fi que ele não executa. Eu até tirei a porta 3838 e mudei para listen 80 para tentar resolver, mas não funcionou. Também fiz:

sudo chmod -R 777 /srv

para tentar tornar o app dispinível para todos os usuários e depois reiniciei o Shiny Server. Nada adiantou.

Encontrei esta pergunta no SOen que retrata meu problema, mas ela não recebeu muita atenção. Pela resposta desta pergunta, parece ser um detalhe relacionado a rede mesmo, não do Shiny Server em si. Como minha rede é doméstica e tem senha, poderia ser algo do tipo que esteja impedindo o acesso de terceiros?

Então, eu tenho o Shiny Server, mas só consigo servir os dispositivos conectados na mesma rede wi-fi. Queria que todos vissem meu trabalho, não impotando o IP de acesso. De novo, algo parecido como isso.

Agradeço a atenção, William. Um abraço.

Oi, Giovani.

Você verificou se existe algo bloqueando a conexão (firewall, por exemplo)?
Veja essa discussão: ubuntu 16.04 - Trying to host my shiny app for everyone to see with shiny-server - Stack Overflow

1 curtida

Oi Giovani,

Na minha experiência, o melhor seria pensar em disponibilizar o aplicativo em um servidor pago (como no google cloud, digital ocean, aws, outros ou o shinyapps). Eles são feitos para isso e estão sempre online. Para um deploy do aplicativo na sua infraestrutura (on premises) você precisa de uma máquina/servidor que esteja sempre online (24 horas/7 dias por semana) e sempre atualizado.

1 curtida

Oi @raphaelsaldanha, obrigado pela resposta. Eu não sei se aqui seria o caminho ideal para essa discussão, mas qualquer coisa me “puxem a orelha” que eu paro.

Eu não sei muito sobre deploy, inclusive pretendo fazer o curso em novembro sobre o tema. Tenho algumas dúvidas sobre a disponibilização dos meus aplicativos nesses locais (ex. AWS):

  1. Eu pago por quantos usuários acessarem e pela hora que eles manusearem o aplicativo ali disponível? Ex. se você acessar meu aplicativo 5 vezes por dia, num total de 6 horas, eu terei de pagar por isso, ou seja, pelo acesso dos outros usuários?

  2. O código daquilo que criei fica acessível para todos (R Markdown, R Script)?

Essa são minhas principais dúvidas.

Opa! Fiz o curso de Deploy no mês passado, super recomendo!!

Pelo o que sei, isso varia entre os serviços de nuvem.

A AWS cobra pelo tempo que o servidor ficar ligado (você liga/desliga ele em um painel). Estando ligado, não tem limite no numero de usuários, mas tem no tráfego de dados (em geral o limite é alto, acho que não seria um problema).

Na DigitalOcean, o servidor é cobrado por mês ou ano, em um modelo que ele fica sempre ligado. No Google Cloud já não tenho certeza…

No shinyapps.io vai depender do seu plano, mas o funcionamento é diferente. Do plano gratuito até o mais caro, o aplicativo fica sempre disponível e o tempo de utilização total do app vai subtraindo da cota do seu plano. Quando acabar a cota de tempo, o app sai do ar.

Em nenhum deles tem limite na quantidade de usuários. O que pode te limitar é a quota de tráfego de Internet ou de horas de uso.

Sobre o código, em nenhum deles o código fica exposto, a não ser que você queira. Por padrão, nem os erros são exibidos ao usuário (no lugar da mensagem de erro, fica uma mensagem em vermelho pedindo para o usuário entrar em contato com o mantenedor do sistema).