Cloud Privé sur Google Compute Engine avec NodeJS et Nginx

Voici un petit article afin de synthétiser mes pérégrinations pour mettre en place un Cloud Privé autour d’un serveur NodeJS. En gros un serveur qui sera bien sécurisé et accessible qu’a certaines adresses IP.

TLDR;
Je suis une méga quiche sous linux…

La platforme

Jusqu’à présent j’utilisais Gandi pour mes tests et le marketplace de SARAH. Pour ce nouveau projet, sous les conseils de maître David, je me suis tourné vers le Google Compute Engine.

  • Compute Engine et non pas App Engine car je souhaite avoir accès à l’OS
  • Google et non pas Azure car l’ergonomie semble plus simple
  • Dans cet article il est indiqué que GCE est HIPAA compliant
  • Les boites comme OVH ne savent pas vraiment faire

La VM

On trouve de nombreux tutorials sur le net. L’IHM de Compute Engine semble avoir pas mal évolué et les tutos ne sont pas forcément à jour.

Pour faire simple:

  • Créer la plus petite machine
  • Choisir la zone Europe
  • Partir sur une instance Debian ou Ubuntu
  • Activer HTTP et HTTPS
  • Mettre une IP Fixe

Le NodeJS

GCE propose un SSH Web directement depuis l’interface ! Ce qui permet d’installer NodeJS.

Remplacer dans cet exemple par la bonne version de NodeJS.

Sur la dernière ligne j’ai du télécharger puis exécuter l’installation de NPM.

Le serveur HTTP

Ensuite il suffit de se faire un petit serveur.js:

Et de le lancer:

Normalement le serveur se lance mais n’est pas accessible depuis l’IP statique de l’instance. Mettre le port 80 pour tester le serveur: Hello World !

Filtrage sur IP

A cette étape vous pouvez normalement définir des règles de Firewall GCE afin de n’autoriser QUE certaines IP à accéder à la machine. Pour cela aller dans Compute Engine > Réseaux > Default et modifier les règles de Firewall.

Mais dans le monde réel nous avons des IP Dynamiques (merci Orange) 🙁 il faut donc passer par un DNS Dynamique et Ngix un reverse proxy qui fera partiellement le boulot.

Je ne vais pas décrire ici l’installation de No-Ip mais sachez que le portail livebox intègre l’option.

Installation de Ngix

Modifier le source list de Debian:

Et ajouter:

Télécharger la clef:

Installer:

Configuration de Ngix

A priori a cette étape le serveur NGix est accessible sur le port 80 et présente une page par défaut. Il faut rooter vers le serveur NodeJS.

Et remplacer location /

Relancer Nginx :

Normalement si votre serveur NodeJS est lancé sur le port 8080 la redirection se fera correctement. Hello World !

IP Dynamiques

Tout comme la console Computer Engine, Nginx ne prends QUE des adresses IP. Une astuce simple consiste à interroger périodiquement le DNS pour mettre à jour un fichier de configuration et relancer Nginx.

Installer les outil nslookup, host, dig:

Créer un script dans /etc/cron.hourly

Ajouter une règle dans Nginx:

Et relancer le serveur:

Conclusion

Le besoin de départ était d’avoir une bête machine linux dans le cloud sécurisée comme à la maison. Des dizaines de lignes de commandes plus tard (je déteste linux) c’est en partie fait.

  • Il faut encore acheter une clef SSL et configurer Nginx en https
  • Le filtrage IP ne se fait QUE sur la partie HTTP(S)
  • Tester le coût et les perfs de la plateforme

Pour en arriver là j’ai mixé plusieurs articles dont celui de Mike Hua et celui de ZenCoffee.

Je suis super preneurs de vos remarques !

One more thing !

Si vous êtes un super Ninja des Nuages, mouton à 5 pattes, intéressé par la mise en place d’une plateforme ambitieuse recoupant:

  • Sécurité & Pentest
  • Internet des objets
  • Machine Learning
  • Virtual Reality

Nous devrions prochainement recruter pour WhatsHome. Alors Contactez-nous !

3 pensées sur “Cloud Privé sur Google Compute Engine avec NodeJS et Nginx

  • 13 mai 2015 à 12 h 02 min
    Permalink

    Après quelques tests avec FFMPEG je me rends compte qu’une instance de base 1 CPU est a peu prêt 3x plus lente que mon Core i7.

    La politique de tarification fonctionne en croisant CPU, Mémoire, Réseau avec des discount sur l’usage dans le mois. Du coup pour savoir ce que coute une conversion FFMPEG c’est super compliqué …

    En jouant un tout petit peu, avec un peu d’upload, etc … j’ai quand même bouffé 10$ ! Ce qui est proportionnellement super cher

    Répondre
    • 4 juillet 2015 à 19 h 10 min
      Permalink

      Salut JP (si je eut me permettre ;-),

      Pour ce qui est de la tarification VM global, je te conseil d’aller chez ceux qui ne tarif pas à l’heure d’utilisation, ces sans doute moins écolo te dirons ces hoster, mais ce n’est pas l’écologie qui les préoccupe (ces pas nouveau), mais vous ne dite pas sur quel CPU (XENON) votre host vous héberge, ni si votre vCPU vous est dédié ou s’il est mutualisé.
      Si vous ne pouvez répondre car votre hébergeur ne donne pas d’information, ces qu’il ne vous ment pas légalement comme ça, et à de très forte chance que vos ressources global (vCPU/vRAM) soit mutualisé ^^

      Le virtualisation ces bien beau, très beau, surtout paradisiaque pour les hosteur/GSP qui évite d’informer et de réellement former à la simple clarification de ce qu’est la virtualisation.

      Amicalement.

      Répondre
      • 4 juillet 2015 à 19 h 42 min
        Permalink

        Salut,

        Bah là ce sont des serveurs Google Compute Engine. J’ai pris le premier modèle ultra minimaliste.
        Mais Google te permets de choisir précisément la machine que tu souhaites: mutualisées, zone euro, plutôt orienté CPU ou Ram suivant les usages, les distrib, etc …

        Le besoin sous-jacent n’etait pas le coût mais surtout la sécurité.

        Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *