Hosting e configurazione di app brillanti senza server brillante


95

Sto cercando di rendere disponibili app brillanti ai miei colleghi senza che debbano eseguire o addirittura avere installato R.

Quindi ho letto questa pagina web e ho trovato questa frase:

Se hai familiarità con l'hosting web o hai accesso a un reparto IT, puoi ospitare tu stesso le tue app Shiny.

nella sezione " Condividi come pagina web ".

Come posso fare questo?

Il problema è che la mia azienda è vincolata a determinate restrizioni riguardanti l'hosting web, la sicurezza e così via, e non pagherà (per ora) un brillante-server-pro.

Ma la frase sopra mi dà la speranza di creare qualcosa da soli per convincerli.


Risposte:


86

Se il tuo PC ei PC dei tuoi colleghi appartengono alla stessa LAN, questo è abbastanza facile da ottenere. Esegui la tua app tramite:

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

Il valore impostato tramite l' hostargomento dice di accettare qualsiasi connessione (non solo da localhost). L' portargomento può assumere qualsiasi valore tu voglia (assicurati solo di evitare di selezionare le porte utilizzate da altri servizi come ssho http). Quindi, prendi nota del tuo IP locale (se sei sotto Linux, puoi vederlo ifconfig). Supponi che il tuo IP sia 192.168.1.70. I tuoi colleghi possono utilizzare la tua app inserendo nella barra degli indirizzi del loro browser 192.168.1.70:5050, cioè il tuo IP seguito da :e il numero di porta che hai selezionato.

Se desideri l'accesso dall'esterno della tua LAN, puoi indirizzare il tuo router al tuo PC quando qualcuno si connette al tuo IP pubblico tramite la porta 5050.


2
Grazie. Lo proverò lunedì. Ma questo significa che devo avere R e l'app in esecuzione mentre altri vi accedono?
schlusie

2
Sì. La tua applicazione deve essere in esecuzione sul tuo PC.
nicola

5
Va bene. Ora l'ho provato e ha funzionato. Ma esiste una possibilità senza eseguire l'app sulla mia macchina? come ho detto, abbiamo accesso a un reparto IT e ad alcuni server e la frase citata indica la possibilità di farlo.
schlusie

3
L'app deve essere eseguita da qualche parte. La macchina che lo ospita deve avere R, shiny e tutte le dipendenze necessarie per farlo funzionare.
nicola

6
Questo è un post molto utile: la mia domanda di follow-up è: quante persone possono accedere all'app contemporaneamente?
md1630

34

La condivisione di app sulla LAN in questo modo è piuttosto interessante, ma è una specie di hack. L'ho provato con alcuni colleghi e funziona, ma è più un trucco da ufficio che una soluzione sostenibile.

Ho appena finito di sviluppare il pacchetto RInno per questo problema esatto, ovvero quando un'azienda non pagherà per Shiny Server o ci sono problemi di sicurezza con i servizi cloud.

Per iniziare:

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

Quindi devi solo chiamare due funzioni per creare un framework di installazione:

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

Se desideri includere R per i tuoi colleghi che non l'hanno installato, aggiungi include_R = TRUEa create_app:

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

Il valore predefinito include shiny, magrittr e jsonlite, quindi se stai usando altri pacchetti come ggplot2 o plotly, aggiungili semplicemente pkgsall'argomento. Puoi anche includere pacchetti GitHub remotesnell'argomento:

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

Se sei interessato ad altre funzionalità, dai un'occhiata a FI Labs - RInno


3
Solo per Windows ^^
pawamoy

2
Sì, ho comprato un laptop Linux e sto cercando modi per supportare Ubuntu in seguito
Jonathan Hill

7

Potresti voler dare un'occhiata alla soluzione open source shinyproxy .

Usando shinyproxy dovrai avvolgere le tue app in un contenitore docker per ospitarle.

Qui puoi trovare una guida su come distribuire un'app brillante in un contenitore docker (che tra l'altro è una buona pratica, anche senza utilizzare shinyproxy, per mantenere le dipendenze dell'app).

Sono disponibili diversi metodi di autenticazione e ridimensionamento .


3

Recentemente ho installato Shiny su un server OS Linux Centos 7 che abbiamo localmente. Abbiamo utilizzato la guida di seguito per la maggior parte. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Sentiti libero di fare domande sui problemi di configurazione qui in modo che chiunque utilizzi la guida possa vedere le risposte!

Abbiamo anche cercato di spingerlo su un server AWS, optando per il nostro in quanto il contenuto è sensibile. Altrimenti entrambe le soluzioni sembravano simili. Il sistema Linux e Shiny sono leggeri, potresti essere in grado di eseguirlo sul server Amazon gratuito!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.