Хостинг и настройка собственных блестящих приложений без блестящего сервера

97

Я пытаюсь сделать блестящие приложения доступными для моих коллег, чтобы они не запускали или даже не устанавливали R.

Итак, я прочитал эту веб-страницу и нашел это предложение:

Если вы знакомы с веб-хостингом или имеете доступ к ИТ-отделу, вы можете самостоятельно размещать свои приложения Shiny.

в разделе " Опубликовать как веб-страницу ".

Как я могу это сделать?

Проблема в том, что моя компания связана определенными ограничениями в отношении веб-хостинга, безопасности и так далее и не будет (пока) платить за shiny-server-pro.

Но приведенное выше предложение дает мне надежду самому придумать что-то, чтобы убедить их.

Schlusie
источник

Ответы:

88

Если ваш компьютер и компьютеры ваших коллег принадлежат к одной локальной сети, этого довольно легко добиться. Просто запустите свое приложение:

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

Значение, установленное в hostаргументе, говорит о том, что нужно принимать любое соединение (не только от localhost). portАргумент может принимать любое значение , которое вы хотите (только гарантировать , чтобы избежать выбора портов , используемых другими службами , как sshи http). Затем запишите свой локальный IP-адрес (если вы работаете под Linux, вы можете его увидеть ifconfig). Скажите, что ваш IP 192.168.1.70. Ваши коллеги могут использовать ваше приложение, указав в адресной строке своего браузера 192.168.1.70:5050ваш IP-адрес :и номер порта, который вы выбрали.

Если вам нужен доступ из-за пределов локальной сети, вы можете направить маршрутизатор на свой компьютер, когда кто-то подключается к вашему общедоступному IP-адресу через порт 5050.

Никола
источник
2
Спасибо. Я попробую в понедельник. Но это означает, что у меня должны быть запущены R и приложение, пока к нему обращаются другие?
schlusie
5
Ладно. Я сейчас попробовал, и это сработало. Но есть ли возможность без запуска приложения на моем компьютере? как я уже сказал, у нас есть доступ к ИТ-отделу и некоторым серверам, и цитируемое предложение указывает на возможность сделать это.
schlusie
3
Приложение должно где-то запускаться. На компьютере, на котором он установлен, должен быть установлен R, shiny и все необходимые зависимости для его запуска.
Никола
7
Это очень полезный пост - у меня следующий вопрос: сколько людей могут получить доступ к приложению одновременно?
md1630
3
Привет, @nicola, не могли бы вы дать мне больше информации о том, как «направить маршрутизатор на компьютер, когда кто-то подключается к вашему общедоступному IP-адресу через порт 5050»? Спасибо!
just_rookie 05
35

Совместное использование приложений по локальной сети довольно круто, но это своего рода взлом. Я попробовал это с некоторыми коллегами, и он работает, но это скорее офисный трюк, чем надежное решение.

Я только что закончил разработку пакета RInno именно для этой проблемы, то есть когда компания не будет платить за Shiny Server или есть проблемы с безопасностью облачных сервисов.

Для начала:

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

Затем вам просто нужно вызвать две функции для создания среды установки:

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

Если вы хотите включить 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аргумент. Вы также можете включить в remotesаргумент пакеты GitHub :

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

Джонатан Хилл
источник
3
Только для Windows ^^
pawamoy
2
Да, я купил ноутбук с Linux, и в следующий раз я ищу способы поддержки Ubuntu
Джонатан Хилл,
7

Возможно, вы захотите взглянуть на решение shinyproxy с открытым исходным кодом .

Используя shinyproxy, вам нужно будет поместить свои приложения в контейнер докеров для их размещения.

Здесь вы можете найти руководство о том, как развернуть блестящее приложение в контейнере докера (что, кстати, является хорошей практикой, даже без использования shinyproxy, для поддержания зависимостей приложения).

Доступны различные методы аутентификации и масштабирования .

Ismirsehregal
источник
4

Недавно я установил Shiny на локальном сервере под управлением ОС Centos 7 Linux. По большей части мы использовали приведенное ниже руководство. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Не стесняйтесь задавать любые вопросы о проблемах с установкой здесь, чтобы все, кто использует руководство, могли увидеть ответы!

Мы также рассмотрели возможность размещения его на сервере AWS и выбрали наш собственный, поскольку контент является конфиденциальным. В остальном оба решения выглядели одинаково. Система Linux и Shiny легкая, возможно, вы сможете запустить ее на бесплатном сервере Amazon!

Бен
источник