web-dev-qa-db-ja.com

光沢のあるサーバーなしで独自の光沢のあるアプリをホストおよび設定する

同僚が実行したり、Rをインストールしたりすることなく、同僚に光沢のあるアプリを提供しようとしています。

だから私は このウェブページ を読んで、この文を見つけました:

Webホスティングに精通している場合、またはIT部門にアクセスできる場合は、自分でShinyアプリをホストできます。

ウェブページとして共有」セクションの下。

これどうやってするの?

問題は、私の会社がWebホスティングやセキュリティなどに関する特定の制限に縛られており、(今のところ)shiny-server-proの費用を支払わないことです。

しかし、上記の文は、彼らを説得するために自分で何かを設定する希望を与えてくれます。

80
schlusie

PCと同僚のPCが同じLANに属している場合、これは非常に簡単に実現できます。アプリを実行するには:

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

Host引数で設定された値は、(localhostからだけでなく)すべての接続を受け入れるように指示します。 port引数には、任意の値を指定できます(sshhttpなどの他のサービスで使用されるポートを選択しないようにしてください)。次に、ローカルIPをメモします(Linuxを使用している場合は、ifconfigで確認できます)。あなたのIPは192.168.1.70。同僚は、ブラウザのアドレスバーに挿入することでアプリを使用できます192.168.1.70:5050、つまり、IPの後に:および選択したポート番号。

LANの外部からアクセスしたい場合、誰かが5050ポートを介してパブリックIPに接続したときに、ルーターをPCに転送できます。

75
nicola

このようにLANを介してアプリを共有するのはかなりクールですが、それは一種のハックです。何人かの同僚と試してみましたが、うまくいきましたが、持続可能な解決策というよりはオフィスのトリックです。

この正確な問題、つまり企業がShiny Serverにお金を払わない場合、またはクラウドサービスにセキュリティ上の懸念がある場合のために、 RInno パッケージの開発を終了しました。

開始するには:

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

次に、インストールフレームワークを作成するために2つの関数を呼び出す必要があります。

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

Rをインストールしていない同僚にRを含めたい場合は、include_R = TRUEからcreate_app

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

デフォルトではshiny、magrittr、jsonliteが含まれるため、ggplot2やplotlyなどの他のパッケージを使用している場合は、pkgs引数に追加するだけです。 GitHubパッケージをremotes引数に含めることもできます。

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

他の機能に興味がある場合は、 FI Labs-RInno をご覧ください。

26
Jonathan Hill

あなたはオープンソースソリューションを見てみたいかもしれません shinyproxy

Shinyproxyを使用して、アプリをドッカーコンテナーにラップしてホストする必要があります。さまざまな認証およびスケーリング方法が利用可能です。

4
ismirsehregal

最近、ローカルにあるCentos 7 Linux OSサーバーにShinyをインストールしました。ほとんどの場合、以下のガイドを使用しました。 https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

ここでセットアップの問題についてご質問がある場合は、このガイドを使用している他のユーザーが回答を確認できるようにしてください。

また、AWSサーバーにプッシュすることも検討しました。コンテンツは機密であるため、独自のものを選択しました。それ以外の場合、両方のソリューションは同様に見えました。 LinuxおよびShinyシステムは軽量で、無料のAmazonサーバーで実行できる場合があります。

2
Ben