Hostowanie i konfigurowanie własnych błyszczących aplikacji bez błyszczącego serwera

97

Próbuję udostępnić moim współpracownikom błyszczące aplikacje bez konieczności ich uruchamiania lub nawet instalowania R.

Przeczytałem więc tę stronę i znalazłem to zdanie:

Jeśli znasz hosting stron internetowych lub masz dostęp do działu IT, możesz samodzielnie hostować swoje aplikacje Shiny.

w sekcji „ Udostępnij jako stronę internetową ”.

Jak mogę to zrobić?

Problem polega na tym, że moja firma jest związana pewnymi ograniczeniami dotyczącymi hostingu, bezpieczeństwa i tak dalej, i nie będzie (na razie) płacić za błyszczący serwer-pro.

Ale powyższe zdanie daje mi nadzieję, że sami ustalę coś, co ich przekona.

schlusie
źródło

Odpowiedzi:

88

Jeśli Twój komputer i komputery współpracowników należą do tej samej sieci LAN, jest to całkiem łatwe do osiągnięcia. Po prostu uruchom swoją aplikację przez:

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

Wartość ustawiona za pomocą hostargumentu mówi, że należy akceptować dowolne połączenie (nie tylko od lokalnego hosta). portArgumentem może przyjmować dowolną wartość, którą chcesz (tylko gwarantujący uniknięcie wybrać porty używane przez inne usługi jak sshlub http). Następnie zanotuj swój lokalny adres IP (jeśli korzystasz z Linuksa, możesz go przejrzeć ifconfig). Powiedz, że masz adres IP 192.168.1.70. Twoi koledzy mogą korzystać z Twojej aplikacji, wstawiając w pasku adresu przeglądarki 192.168.1.70:5050Twój adres IP, a następnie :wybrany przez Ciebie numer portu.

Jeśli chcesz uzyskać dostęp spoza sieci LAN, możesz skierować router do komputera, gdy ktoś połączy się z Twoim publicznym adresem IP przez port 5050.

nicola
źródło
2
Dziękuję Ci. Spróbuję tego w poniedziałek. Ale to oznacza, że ​​muszę mieć R i aplikację uruchomioną, podczas gdy inni mają do niej dostęp?
schlusie
5
W porządku. Teraz spróbowałem i zadziałało. Ale czy jest taka możliwość bez uruchamiania aplikacji na moim komputerze? tak jak mówiłem, mamy dostęp do działu IT i niektórych serwerów, a cytowane zdanie wskazuje na taką możliwość.
schlusie
3
Aplikacja musi gdzieś działać. Maszyna, która go obsługuje, musi mieć R, błyszczącą i wszystkie niezbędne zależności, aby mogła działać.
nicola
7
To bardzo pomocny post - moje dalsze pytanie brzmi: ile osób może jednocześnie uzyskać dostęp do aplikacji?
md1630
3
Cześć @nicola, czy mógłbyś podać mi więcej informacji o tym, jak „przekierować router do komputera, gdy ktoś łączy się z Twoim publicznym adresem IP przez port 5050”? Dziękuję Ci!
just_rookie
35

Udostępnianie aplikacji w sieci LAN w ten sposób jest całkiem fajne, ale to trochę hack. Wypróbowałem to z niektórymi współpracownikami i działa, ale jest to bardziej biurowa sztuczka niż trwałe rozwiązanie.

Właśnie skończyłem opracowywać pakiet RInno dla dokładnie tego problemu, tj. Kiedy firma nie zapłaci za Shiny Server lub istnieją obawy dotyczące bezpieczeństwa usług w chmurze.

Rozpocząć:

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

Następnie wystarczy wywołać dwie funkcje, aby utworzyć platformę instalacyjną:

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

Jeśli chcesz dołączyć R dla swoich współpracowników, którzy go nie mają, dodaj include_R = TRUEdo create_app:

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

Domyślnie zawiera błyszczące, magrittr i jsonlite, więc jeśli używasz innych pakietów, takich jak ggplot2 lub plotly, po prostu dodaj je do pkgsargumentu. Możesz również dołączyć pakiety GitHub do remotesargumentu:

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

Jeśli jesteś zainteresowany innymi funkcjami, sprawdź FI Labs - RInno

Jonathan Hill
źródło
3
Tylko dla Windows ^^
pawamoy
2
Tak, kupiłem laptopa z Linuksem i szukam sposobów na wsparcie Ubuntu w następnej kolejności
Jonathan Hill
7

Możesz rzucić okiem na rozwiązanie shinyproxy typu open source .

Używając shinyproxy, będziesz musiał umieścić swoje aplikacje w kontenerze docker, aby je hostować.

Tutaj możesz znaleźć przewodnik, jak wdrożyć błyszczącą aplikację w kontenerze Dockera (co przy okazji jest dobrą praktyką, nawet bez korzystania z shinyproxy, aby zachować zależności aplikacji).

Dostępne są różne metody uwierzytelniania i skalowania .

ismirsehregal
źródło
4

Niedawno zainstalowałem Shiny na serwerze Centos 7 Linux OS, który mamy lokalnie. W większości korzystaliśmy z poniższego przewodnika. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Zapraszam do zadawania pytań dotyczących problemów z konfiguracją, aby każdy, kto korzysta z przewodnika, mógł zobaczyć odpowiedzi!

Przyjrzeliśmy się również umieszczeniu go na serwerze AWS, zdecydowaliśmy się na własny, ponieważ zawartość jest wrażliwa. Poza tym oba rozwiązania wyglądały podobnie. System Linux i Shiny są lekkie, możesz go uruchomić na darmowym serwerze Amazon!

Ben
źródło