Projets informatiques M2 Parcours MSS

Ce tutoriel a pour but de montrer comment héberger une application Shiny sur le serveur shinyapps.io, et comment utiliser ses propre fichiers au travers de l'application.

Hébergement de l'application sur shinyapps.io

  1. Aller sur le site : https://www.shinyapps.io/. Avec un compte gratuit vous pouvez héberger jusqu'à cinq applications qui ont chacune 25h d'utilisation par mois.

  2. S'inscrire en cliquant sur "Sign Up".

  3. Une fois inscrit, se connecter sur le site.

  4. Sur R, installer le package "rsconnect".

  5. Vous arrivez sur un tableau de bord récapitulatif de vos applications. Cliquant sur l'icône en haut à droite et choisir "Tokens". Ensuite sur la fenètre principale cliquer sur "Show" puis cliquer sur "Show secret" dans la pop-up qui s'ouvre. Il suffit alors de copier les lignes présentées dans la pop-up du type (ceci est un exemple) :

rsconnect::setAccountInfo(name='optimaentendre',
              token='353ED6KI47822F8A1DD7F409CA53E5478B9',
              secret='rg2nFGXAj06lDAjfaAePaiif5gjnNNjsj7')

Exécutez ces lignes sous R : vous êtes alors connecté à votre compte shinyapps.io depuis R.

  1. Il suffit maintenant d'exécuter la ligne suivante.
rsconnect::deployApp("chemin_vers_le_dossier_de_votre_application")

Votre application est maintenant en ligne.

Dans ce dossier, vous devez soit placer votre fichier "app.r" soit vos deux fichiers "ui.r" et "server.r".

Attention, il ne sert à rien de mettre les fichiers que vous utilisez dans le même dossier, ils ne pourront pas être lus par votre application puisque ce n'est pas votre ordinateur qui héberge l'application. Nous allons justement voir comment utiliser vois fichiers au travers de l'application.

Connexion d'un compte DropBox avec l'application

  1. Mettre vos fichiers selon l'arborescence que suit votre application.

  2. Installer rdrop2 install.packages("rdrop2")

  3. Créer un lien vers votre compte DropBox (il faut que vous soyez connecté sur DropBox avant de lancer les lignes suivantes)

token <- drop_auth()
saveRDS(token, "droptoken.rds")

---> Après ça, un fichier "droptoken.rds" se créé à l'endroit où votre setwd pointe. Ce fichier va vous permettre de vous connecter à la DropBox à partir de R depuis n'importe quel PC dès lors qu'il est connecté à internet.

  1. Sauvegardez le fichier "droptoken.rds" à la racine du dossier que vous soumettrez sur le site d'hébergement shinyapps.io. Au passage gardez le précieusement et ne mettez pas des copies n'importe où, si quelqu'un à ce fichier il peut faire ce qu'il veut de votre DropBox. Il faut que le fichier soit au même niveau que les fichiers "ui.r" et "server.r" ou que le fichier "app.r" si vous mettez toute l'appli en un fichier.

  2. Ensuite écrire cette au début de votre code de ui.r ET server.r (ou app.r si un seul fichier):

token <- readRDS("droptoken.rds")
drop_acc(dtoken = token)

Maintenant votre appli est connectée par le web avec votre compte DropBox et ainsi, même hébergée sur shinyapps.io elle peut lire vos fichiers de données.

  1. Vous pouvez aussi regarder si votre arborecence est bien cohérentes :
#Racine du compte DropBox
drop_dir()
#Dossier spécifique dans l'arborescence
drop_dir('images/emoticons')
  1. Vous pouvez récupérer n'importe quel autre type de fichiers (images,cartes,...) avec drop_get() qui va créer un dossier temporaire sur la machine qui héberge votre application. La fonction ne recréé pas votre arborescence sur l'hébergeur, vous avez donc juste à spécifier le nom de votre fichier dans les fonctions de lecture de données.
#Exemple image
drop_get('images/im1.png',overwrite=T)
im <- readPNG('im1.png')

#Exemple carte
drop_get('maps/map1.geojson')
im <- rgdal::readOGR('map1.geojson')

#Exemple csv
drop_get('images/file1.csv')
im <- read.csv('im1.csv',sep=',',header=T)