Comment exécuter une application Meteor en toute sécurité avec Sandstorm sur Ubuntu 14.04

Écrit en collaboration avec Sandstorm

introduction

Meteor est une structure pour JavaScript qui permet aux développeurs Web d’écrire du code JavaScript une fois et de le réutiliser à la fois côté client et côté serveur. Un autre tutoriel décrit how pour déployer des applications Meteor à l’aide de Nginx. et Upstart, mais ce tutoriel couvre une approche différente pour le déploiement d’applications Meteor: créer et exécuter un paquet Sandstorm.

Sandstorm est une plate-forme open source pour serveurs personnels, ce qui signifie qu’elle peut être utilisée pour installer de nombreuses applications différentes sur un serveur avec une interface très facile à utiliser. Un tutoriel précédent a montré how pour installer Sandstorm pour exécuter des applications comme WordPress et MediaWiki; Ce didacticiel explique comment exécuter une application personnalisée, telle que celle que vous avez écrite vous-même.

Dans Sandstorm, l’installation d’une application vous permet de créer de nouveaux documents à l’aide de cette application. Chaque document est une instance en cours d’exécution distincte de l’application, et le code qui sous-tend chaque document (appelé par Sandstorm un grain) est privé par défaut. C’est la raison pour laquelle Sandstorm facilite l’exécution sécurisée des applications Meteor; Sandstorm gère le contrôle d’accès. Dans ce tutoriel, vous verrez comment installer l’application, puis créer plusieurs instances d’application.

Il existe plusieurs cas d’utilisation pour créer une application Sandstorm. Le premier cas d’utilisation est destiné à un usage personnel ou professionnel. Cela signifierait empaqueter une application et la déployer sur votre serveur Sandstorm ou celui de votre entreprise et utiliser le sandboxing et le contrôle d’accès de Sandstorm. Un autre cas d’utilisation est la création d’une application Sandstorm pour la publier pour les autres utilisateurs de Sandstorm. Cela pourrait par exemple être publié sur apps.sandstorm.io, mais vous pourriez aussi le distribuer vous-même. L’utilisateur saura que le développeur des applications ne peut pas lire leurs données. Ce tutoriel s’applique aux deux scénarios.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • Un ordinateur local, qui sera utilisé pour créer le paquet Sandstorm. Cet ordinateur doit:

  • Être une machine 64 bits avec au moins 1 Go de RAM. Ce tutoriel contient des instructions pour Ubuntu 14.04 et Mac OS X.

  • Avoir Git installé, qui sera utilisé pour télécharger + vagrant-spk + et notre exemple d’application. Vous pouvez installer Git en suivant this Git dans Ubuntu 14.04, ou https: // git -scm.com/download/mac[the Git Mac Guide d’installation] pour OS X.

  • Faites installer Vagrant, à partir de la page d’installation Vagrant. Vagrant est utilisé pour créer une machine virtuelle dans laquelle Sandstorm s’exécute en mode développement.

  • Installez un logiciel de virtualisation, tel que VirtualBox.

  • Une Ubuntu 14.04 Droplet avec Sandstorm est installée pour tester votre paquet. Pour cela, procédez comme suit: previous Didacticiel.

  • Éventuellement, une application que vous souhaitez conditionner, écrite à l’aide du cadre Meteor. Ce tutoriel montre les étapes à suivre à l’aide d’un exemple d’application de liste de tâches fourni par Meteor si vous ne souhaitez pas utiliser une autre application.

Étape 1 - Télécharger l’exemple d’application et vagrant-spk

Dans cette étape, nous allons télécharger l’application Meteor pour laquelle nous allons créer un paquet Sandstorm, ainsi que l’outil d’empaquetage de Sandstorm, + vagrant-spk +.

Tout d’abord, créez un nouveau répertoire appelé + projects + et déplacez-le pour éviter que votre répertoire personnel ne soit encombré de nouveaux fichiers.

mkdir ~/projects
cd ~/projects

L’exemple d’application que nous allons utiliser dans ce didacticiel est simple-todos, une application fournie par Meteor. Toutefois, vous pouvez également ignorer cette option si vous souhaitez utiliser votre propre application Meteor.

Téléchargez cette application en la clonant à partir de GitHub de Meteor.

git clone https://github.com/meteor/simple-todos.git

Ensuite, nous installerons + vagrant-spk + (qui est l’outil d’emballage de Sandstorm) à partir de GstHub de Sandstorm.

git clone git://github.com/sandstorm-io/vagrant-spk

Déplacez-vous dans le répertoire + vagrant-spk +.

cd vagrant-spk

Enfin, créez un lien symbolique vers le binaire dans + / usr / local / bin + pour rendre la commande + vagrant-spk + disponible.

sudo ln -s $PWD/vagrant-spk /usr/local/bin

Après l’installation, vous pouvez vérifier si + vagrant-spk + est installé en exécutant:

vagrant-spk --help

Vous devriez voir un message comme:

Outputusage: vagrant-spk [-h]
                      [--work-directory WORK_DIRECTORY]
                      {destroy,dev,global-status,halt,init,pack,publish,setupvm,ssh,up}
                      [command_specific_args [command_specific_args ...]]
. . .

Étape 2 - Exécution de la machine virtuelle Sandstorm

Dans cette section, nous allons créer le package Sandstorm actuel. Commencez par vous déplacer dans le répertoire de l’application sur votre ordinateur local.

cd ~/projects/simple-todos

Ensuite, configurez la machine virtuelle qui sera utilisée pour générer le package.

vagrant-spk setupvm meteor

Vous verrez une sortie semblable à celle-ci:

OutputInitializing .sandstorm directory in /home/sammy/projects/simple-todos/.sandstorm
Creating /home/sammy/.sandstorm to hold developer keys.
Creating /home/sammy/.sandstorm/caches to hold sandstorm installer caches.

Ensuite, démarrez la machine virtuelle.

vagrant-spk up

Cette commande prendra un moment pour s’exécuter.

Étape 3 - Création de la définition du package

Dans cette section, nous allons réellement empaqueter l’application Meteor.

Tout d’abord, créez la définition de package que Sandstorm utilisera.

vagrant-spk init

Cette commande créera un fichier nommé + sandstorm-pkdef.capnp + dans le répertoire + .sandstorm +. Nous devrons apporter quelques modifications à ce fichier.

Connectez-vous à la machine virtuelle vagabonde.

vagrant-spk ssh

Ensuite, ouvrez + / opt / app / .sandstorm / sandstorm-pkdef.capnp + en utilisant + nano + ou votre éditeur de texte favori.

nano /opt/app/.sandstorm/sandstorm-pkgdef.capnp

Trouvez la section suivante:

Original ~/.sandstorm/sandstorm-pkgdef.capnp. . .
   # This manifest is included in your app package to tell Sandstorm
   # about your app.

   appTitle = (defaultText = "Example App"),

   appVersion = 0,  # Increment this for every release.
. . .

Modifiez la valeur dans la ligne + appTitle + en «Todo».

Modified ~/.sandstorm/sandstorm-pkgdef.capnp. . .
   # This manifest is included in your app package to tell Sandstorm
   # about your app.

   appTitle = (defaultText = ""),

   appVersion = 0,  # Increment this for every release.
. . .

Puis enregistrez et fermez le fichier.

Étape 4 - Ajout de la connexion Sandstorm à l’application

À l’heure actuelle, l’application Todos dispose d’une authentification distincte de Sandstorm. Toutefois, nous souhaitons être connectés à l’application Todos lorsque nous sommes connectés à Sandstorm. Nous devons donc ajouter un package séparé à l’application Meteor.

Tout en restant connecté à la machine virtuelle, accédez au répertoire du package principal.

cd /opt/app

Ensuite, nous allons ajouter le package + kenton: accounts-sandstorm + à l’application Meteor, qui expose le compte Sandstorm actuel à l’application Meteor.

meteor add kenton:accounts-sandstorm

Vous pouvez maintenant quitter la connexion avec la machine virtuelle vagabonde.

exit

Dans le cas de cette application Todo, la page contient toujours des boutons de connexion et de déconnexion, qui ne sont pas nécessaires. Ensuite, nous les supprimerons.

Ouvrez le fichier + simple-todos.html + dans le répertoire + project / simple-todos + en utilisant votre éditeur de texte favori.

nano simple-todos.html

Recherchez la section suivante et supprimez la ligne + loginButtons +, surlignée en rouge ci-dessous. Puis enregistrez et fermez le fichier.

simple-todos.html. . .
       Hide Completed Tasks
     </label>



     {{#if currentUser}}
. . .

Ensuite, ouvrez le fichier + simple-todos.js +.

nano simple-todos.js

Comme auparavant, supprimez les lignes suivantes surlignées en rouge, puis enregistrez et fermez le fichier. Veillez à ne pas supprimer la dernière accolade.

simple-todos.js. . .
   "click .toggle-private": function () {
     Meteor.call("setPrivate", this._id, ! this.private);
   }
 });




}
. . .

Maintenant, l’application utilise les comptes Sandstorm au lieu des comptes Meteor.

Étape 5 - Test de l’application en développement

+ vagrant-spk + a une commande + dev + qui permet à la VM Sandstorm de s’exécuter en mode développement, rendant ainsi votre paquet disponible. Exécutez donc la commande à partir du répertoire de votre application (dans ce cas, + simple-todos +).

vagrant-spk dev

Une fois l’initialisation terminée, le message suivant sera imprimé:

OutputApp is now available from Sandstorm server. Ctrl+C to disconnect.

Cela signifie que vous pouvez maintenant visiter Sandstorm à l’adresse http://local.sandstorm.io:6080/. Vous pouvez maintenant vous connecter en appuyant sur * avec un compte Dev *.

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/8HOgzgk.png [Écran de connexion]

Puis cliquez sur * Alice (admin) *. Cela vous connectera avec un compte administrateur, ce qui vous permettra de créer de nouvelles instances. Vous pouvez laisser les valeurs par défaut pour la page * Confirmer votre profil * et appuyer sur le bouton violet * Continuer * sans rien changer.

Ensuite, cliquez sur l’application Todo, puis cliquez sur * Créer une nouvelle instance *.

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/FjejSbS.png [Nouvelle instance]

Étape 6 - Création et téléchargement d’un fichier SPK

La dernière étape de la création d’un package Sandstorm consiste à créer un fichier SPK contenant l’application, une copie de Meteor et toutes les dépendances supplémentaires de l’application. Cette étape est entièrement automatisée par l’outil + meteor-spk +.

Tout d’abord, arrêtez votre serveur de développement en appuyant sur + CTRL + C +. Ensuite, emballez l’application.

vagrant-spk pack todo.spk

Cela crée un fichier SPK dans votre répertoire actuel.

En passant, dans notre cas, le fichier SPK fait environ 11 Mo. Les applications Sandstorm représentent généralement une poignée de mégaoctets, même si elles contiennent l’application et toutes les dépendances, y compris les dépendances éventuelles du système d’exploitation.

Lorsque vous avez terminé de développer une application, vous devez arrêter la machine virtuelle avant de créer une deuxième application. Par conséquent, exécutez la commande suivante:

vagrant-spk halt

Si vous voulez continuer le développement pour quelque raison que ce soit, vous pouvez simplement lancer + vagrant-spk up +.

Étape 7 - Création d’une liste de tâches

Dans cette section, nous allons installer le package sur le serveur Sandstorm sur votre Droplet et créer une nouvelle instance de l’application.

Connectez-vous à votre tempête de sable sur votre Droplet et vous verrez un bouton * Télécharger l’application * sur votre écran d’accueil. Cliquez sur ce bouton et choisissez le fichier SPK via votre navigateur Web que vous avez créé à l’étape 6.

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/GJPNJRX.png [Application de chargement Sandstorm]

Cela créera un nouvel élément sur votre écran d’accueil Sandstorm nommé * Todo *. L’installation d’une application dans Sandstorm vous permet de créer de nouvelles instances (ou documents). Par conséquent, cliquez sur l’élément * Todo *. Cela vous mènera à l’écran suivant:

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/Bfwx5XN.png [Écran Todo App]

Cliquez sur * Créer une nouvelle instance *. Cela vous mènera à une nouvelle instance Todo, alimentée par une instance unique de l’application de liste Todo.

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/27iAXMa.png [Liste de contrôle]

Chaque instance s’appelle un grain dans Sandstorm. Cette instance d’application est unique pour votre utilisateur Sandstorm. Si vous essayez d’ouvrir l’URL dans une fenêtre de navigation privée de votre navigateur Web, vous obtiendrez une erreur Forbidden. Vous pouvez utiliser le bouton bleu * Partager * dans la barre supérieure de Sandstorm pour créer un lien de partage, si vous souhaitez que d’autres personnes aient accès à la liste Todo.

Vous pouvez quitter cette liste de tâches en cliquant sur le logo Sandstorm en haut à gauche. Une fois que vous avez terminé, vous verrez que vous pouvez créer une autre liste Todo. Toutes les données que vous entrez dans une instance de liste Todo sont totalement indépendantes des autres.

Conclusion

Nous avons vu comment prendre une base de code écrite dans Meteor et l’emballer pour Sandstorm. Il s’appuie sur Sandstorm pour le contrôle d’accès et peut facilement être partagé avec d’autres. Pour en savoir plus sur Meteor, visitez their leur site Web. Pour en savoir plus sur Sandstorm, visitez sandstorm.io.