Menghosting dan menyiapkan aplikasi mengkilap sendiri tanpa server mengkilap


95

Saya mencoba membuat aplikasi mengkilap tersedia untuk rekan kerja saya tanpa harus menjalankan atau bahkan memasang R.

Jadi saya membaca halaman web ini dan menemukan kalimat ini:

Jika Anda terbiasa dengan web hosting atau memiliki akses ke departemen TI, Anda dapat menghosting sendiri aplikasi Shiny Anda.

di bawah bagian ' Bagikan sebagai halaman web '.

Bagaimana saya bisa melakukan ini?

Masalahnya adalah bahwa perusahaan saya terikat pada batasan tertentu mengenai web hosting dan keamanan dan sebagainya, dan tidak akan (untuk saat ini) membayar untuk shiny-server-pro.

Tapi kalimat di atas memberi saya harapan untuk menyiapkan sesuatu untuk meyakinkan mereka.


Jawaban:


87

Jika PC Anda dan PC rekan kerja Anda termasuk dalam LAN yang sama, ini cukup mudah dicapai. Jalankan saja aplikasi Anda melalui:

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

Nilai yang ditetapkan melalui hostargumen mengatakan untuk menerima koneksi apa pun (tidak hanya dari localhost). The portArgumen dapat mengasumsikan nilai apapun yang Anda inginkan (hanya menjamin untuk menghindari untuk memilih port yang digunakan oleh layanan lain seperti sshatau http). Kemudian, catat IP lokal Anda (jika Anda menggunakan linux, Anda dapat melihatnya ifconfig). Katakanlah IP Anda 192.168.1.70. Kolega Anda dapat menggunakan aplikasi Anda dengan memasukkan di bilah alamat browser mereka 192.168.1.70:5050, yaitu IP Anda diikuti oleh :dan nomor port yang Anda pilih.

Jika Anda menginginkan akses dari luar LAN Anda, Anda dapat mengarahkan router ke PC Anda ketika seseorang terhubung ke IP publik Anda melalui port 5050.


2
Terima kasih. Saya akan mencobanya pada hari Senin. Tetapi ini berarti saya harus menjalankan R dan aplikasi sementara yang lain mengaksesnya?
schlusie

2
Iya. Aplikasi Anda harus berjalan di komputer Anda.
nicola

5
Baik. Sekarang saya mencobanya dan berhasil. Tetapi apakah ada kemungkinan tanpa menjalankan aplikasi di komputer saya? seperti yang saya katakan, kami memiliki akses ke departemen TI dan beberapa server dan kalimat yang dikutip menunjukkan kemungkinan untuk melakukannya.
schlusie

3
Aplikasi harus berjalan di suatu tempat. Mesin yang menghostingnya harus memiliki R, shiny dan semua dependensi yang diperlukan untuk membuatnya berjalan.
nicola

6
Ini adalah posting yang sangat membantu - pertanyaan tindak lanjut saya adalah, berapa banyak orang yang dapat mengakses aplikasi pada saat yang sama?
md1630

35

Berbagi aplikasi melalui LAN seperti ini cukup keren, tetapi ini semacam peretasan. Saya mencobanya dengan beberapa rekan kerja, dan berhasil, tetapi ini lebih merupakan trik kantor daripada solusi berkelanjutan.

Saya baru saja selesai mengembangkan paket RInno untuk masalah yang sebenarnya ini, yaitu ketika perusahaan tidak mau membayar Shiny Server atau ada masalah keamanan dengan layanan cloud.

Untuk memulai:

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

Maka Anda hanya perlu memanggil dua fungsi untuk membuat kerangka kerja instalasi:

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

Jika Anda ingin menyertakan R untuk rekan kerja Anda yang belum menginstalnya, tambahkan include_R = TRUEke create_app:

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

Secara default menyertakan shiny, magrittr dan jsonlite, jadi jika Anda menggunakan paket lain seperti ggplot2 atau plotly, tambahkan saja ke pkgsargumen. Anda juga dapat menyertakan paket GitHub ke remotesargumen:

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

Jika Anda tertarik dengan fitur lain, lihat FI Labs - RInno


3
Hanya untuk Windows ^^
pawamoy

2
Ya, saya membeli laptop Linux dan mencari cara untuk mendukung Ubuntu berikutnya
Jonathan Hill

7

Anda mungkin ingin melihat solusi open source shinyproxy .

Menggunakan shinyproxy Anda harus membungkus aplikasi Anda dalam wadah buruh pelabuhan untuk menghostingnya.

Di sini Anda dapat menemukan panduan tentang cara menerapkan aplikasi mengkilap di kontainer buruh pelabuhan (yang btw. Adalah praktik yang baik, bahkan tanpa menggunakan shinyproxy, untuk mempertahankan ketergantungan aplikasi).

Ada berbagai metode otentikasi dan penskalaan yang tersedia.


3

Saya baru-baru ini menginstal Shiny di server Centos 7 Linux OS yang kami miliki secara lokal. Kami menggunakan panduan di bawah ini untuk sebagian besar. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Jangan ragu untuk mengajukan pertanyaan apa pun tentang masalah penyiapan di sini sehingga siapa pun yang menggunakan panduan ini dapat melihat jawabannya!

Kami juga mempertimbangkan untuk mendorongnya di server AWS, memilih milik kami sendiri karena kontennya sensitif. Jika tidak, kedua solusi tersebut tampak serupa. Sistem Linux dan Shiny ringan, Anda mungkin dapat menjalankannya di server Amazon gratis!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.