Hosten und Einrichten eigener glänzender Apps ohne glänzenden Server

94

Ich versuche, meinen Mitarbeitern glänzende Apps zur Verfügung zu stellen, ohne dass sie ausgeführt werden müssen oder sogar R installiert haben.

Also habe ich diese Webseite gelesen und diesen Satz gefunden:

Wenn Sie mit Webhosting vertraut sind oder Zugriff auf eine IT-Abteilung haben, können Sie Ihre Shiny-Apps selbst hosten.

unter dem Abschnitt " Als Webseite freigeben".

Wie kann ich das machen?

Das Problem ist, dass mein Unternehmen an bestimmte Einschränkungen in Bezug auf Webhosting und Sicherheit usw. gebunden ist und (vorerst) nicht für einen Shiny-Server-Pro bezahlt.

Aber der obige Satz gibt mir Hoffnung, selbst etwas einzurichten, um sie zu überzeugen.

schlusie
quelle
1
Vielleicht mit glänzendem Server anfangen ?
Hrbrmstr

Antworten:

86

Wenn Ihr PC und die PCs Ihrer Mitarbeiter zum selben LAN gehören, ist dies ziemlich einfach zu erreichen. Führen Sie einfach Ihre App durch:

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

Der durch das hostArgument festgelegte Wert besagt, dass jede Verbindung akzeptiert werden soll (nicht nur von localhost). Das portArgument kann einen beliebigen Wert annehmen (stellen Sie nur sicher, dass keine Ports ausgewählt werden, die von anderen Diensten wie sshoder verwendet werden http). Notieren Sie sich dann Ihre lokale IP (wenn Sie unter Linux arbeiten, können Sie diese durchschauen ifconfig). Angenommen, Ihre IP ist 192.168.1.70. Ihre Kollegen können Ihre App verwenden, indem Sie sie in die Adressleiste ihres Browsers einfügen 192.168.1.70:5050, dh Ihre IP gefolgt von :und die von Ihnen ausgewählte Portnummer.

Wenn Sie von außerhalb Ihres LANs zugreifen möchten, können Sie Ihren Router an Ihren PC weiterleiten, wenn jemand über den 5050-Port eine Verbindung zu Ihrer öffentlichen IP herstellt.

nicola
quelle
2
Danke dir. Ich werde es am Montag versuchen. Aber das bedeutet, dass R und die App ausgeführt werden müssen, während andere darauf zugreifen?
Schlusie
2
Ja. Ihre Anwendung muss auf Ihrem PC ausgeführt werden.
Nicole
5
In Ordnung. Ich habe es jetzt versucht und es hat funktioniert. Aber gibt es eine Möglichkeit, ohne die App auf meinem Computer auszuführen? Wie gesagt, wir haben Zugriff auf eine IT-Abteilung und einige Server, und der angegebene Satz weist auf die Möglichkeit hin, dies zu tun.
Schlusie
3
Die App muss irgendwo laufen. Der Computer, auf dem er gehostet wird, muss R, glänzend und alle erforderlichen Abhängigkeiten aufweisen, damit er ausgeführt werden kann.
Nicole
6
Dies ist ein sehr hilfreicher Beitrag. Meine Folgefrage lautet: Wie viele Personen können gleichzeitig auf die App zugreifen?
Md1630
34

Das Teilen von Apps über das LAN ist ziemlich cool, aber es ist eine Art Hack. Ich habe es mit einigen Mitarbeitern versucht, und es funktioniert, aber es ist eher ein Bürotrick als eine nachhaltige Lösung.

Ich habe gerade die Entwicklung des RInno- Pakets für genau dieses Problem abgeschlossen, dh wenn ein Unternehmen nicht für Shiny Server bezahlt oder Sicherheitsbedenken bei Cloud-Diensten bestehen.

So fangen Sie an:

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

Dann müssen Sie nur noch zwei Funktionen aufrufen, um ein Installationsframework zu erstellen:

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

Wenn Sie R für Ihre Mitarbeiter aufnehmen möchten , die haben es nicht installiert, fügen Sie include_R = TRUEzu create_app:

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

Standardmäßig werden Shiny, Magrittr und Jsonlite verwendet. Wenn Sie also andere Pakete wie ggplot2 oder plotly verwenden, fügen Sie sie einfach dem pkgsArgument hinzu. Sie können dem remotesArgument auch GitHub-Pakete hinzufügen:

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

Wenn Sie an anderen Funktionen interessiert sind, besuchen Sie FI Labs - RInno

Jonathan Hill
quelle
3
Nur für Windows ^^
Pawamoy
2
Ja, ich habe einen Linux-Laptop gekauft und suche nach Möglichkeiten, Ubuntu als nächstes zu unterstützen
Jonathan Hill
7

Vielleicht möchten Sie einen Blick auf die Open-Source-Lösung Shinyproxy werfen .

Mit Shinyproxy müssen Sie Ihre Apps in einen Docker-Container packen, um sie zu hosten.

Hier finden Sie eine Anleitung zum Bereitstellen einer glänzenden App in einem Docker-Container (was übrigens auch ohne Verwendung von Shinyproxy eine gute Vorgehensweise ist, um die App-Abhängigkeiten beizubehalten).

Es stehen verschiedene Authentifizierungs- und Skalierungsmethoden zur Verfügung.

ismirsehregal
quelle
3

Ich habe Shiny kürzlich auf einem Centos 7 Linux OS-Server installiert, den wir lokal haben. Wir haben den folgenden Leitfaden größtenteils verwendet. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Sie können hier Fragen zu Einrichtungsproblemen stellen, damit jeder, der die Anleitung verwendet, die Antworten sehen kann!

Wir haben auch versucht, es auf einem AWS-Server zu veröffentlichen. Wir haben uns für unseren eigenen entschieden, da der Inhalt vertraulich ist. Ansonsten sahen beide Lösungen ähnlich aus. Das Linux- und das Shiny-System sind leicht, Sie können es möglicherweise auf dem kostenlosen Amazon-Server ausführen!

Ben
quelle