I am making a shiny app that should download a .html file from dropbox and show it in said shiny app via a htmlOutput()
. Furthermore, I have it running on a AWS EC2 t2.micro instance (with all the shiny server configurations based on this article). The problem is that my app works on localhost, shinyapps.io; but, it does not work on my EC2 instance. The app runs on Shiny Server (inside the EC2 instance).
Here is the source code (app.R):
library(shiny)
library(rdrop2)
library(httr)
# token <- drop_auth()
# saveRDS(token, "droptoken.rds")
# Upload droptoken to your server
# ******** WARNING ********
# Losing this file will give anyone
# complete control of your Dropbox account
# You can then revoke the rdrop2 app from your
# dropbox account and start over.
# ******** WARNING ********
# read it back with readRDS
token <- readRDS("droptoken.rds")
# Then pass the token to each drop_ function
drop_acc(dtoken = token)
ui <- fluidPage(
h1("rdrop2 practice"),
htmlOutput("viewFile")
)
server <- shinyServer(function(input, output, session) {
directoryPath <- paste0("path1/", "path2/")
fileName <- "file.html"
filePath <- paste0(directoryPath, fileName)
# Download File
filePut <-
try({
withProgress(message = "Generating File",
detail = "This may take few seconds depending of your Internet connection",
drop_download(path = filePath,
local_path = "./www",
overwrite = TRUE,
dtoken = token)
)
fileName
}, silent = TRUE)
# Show File
output$viewFile <- renderUI({
validate(
need(filePut, 'File Not Available')
)
tags$div(class="resp-container")
tags$iframe(class="resp-iframe",
seamless = "seamless",
src = filePut)
})
})
shinyApp(ui, server)
When the app runs on localhost or shinyapps.io, the app does the proper thing and shows the html file on the htmlOutput('viewFile')
. Meanwhile, it does not work on the EC2 instance. I searched all over the internet for some solution, but nothing I try works.
If somebody has some idea on what is causing this behavior, I will appreciate the help !
Note: I noticed that my EC2 instance does not send XHR requests during the app runtime (unlike in shinyapps.io)
My shiny app (using rdrop2) should find a .html file on my dropbox account, download it, and then be able to display it using htmlOutput()
The file is not found an it displays the error on the try()
"File Not Available"
Dropbox Basic
I happened to find a fix for my problem. It was all a matter of chmod(ing) the www folder. This way, the shiny user can have access to my .html files 😄