Written by

Novembre est déjà là, avec ses feuilles mortes et son vent dans les branches. Il est peut-être temps de vous parler de ce qui nous a occupés durant l’été, et de ce que nous avons développé autour de la piscine1).

Une fonctionnalité que nous voulions reprendre de zéro depuis quelque temps est notre système d’installation en 1‑click. Il vous offre la possibilité de déployer facilement et rapidement des applications préprovisionnées dans votre espace utilisateur. Pourtant, notre architecture était quelque peu obsolète pour facilement nous permettre de supporter de nouvelles applications. Nous avons donc décidé de repartir de la base2).


L’applithèque, un nouvel espace pour démarrer vos projets

Déployer des applications en production suit souvent les mêmes étapes :

  1. Trouver quelque part l’archive contenant la dernière version de l’app ou du service que vous souhaitez déployer ;
  2. Télécharger cette archive dans votre espace utilisateur, la décompresser, et rentrer dans le dossier nouvellement créé ;
  3. Exécuter les différentes tâches, depuis l’installation jusqu’à la configuration, soit en ligne de commande (CLI), soit depuis une interface (Web) ;
  4. Créer la base de données manquante ;
  5. Relancer la configuration de l’app ;
  6. Activer ces %$@! d’extensions manquantes dans l’interpréteur ;
  7. Relancer la configuration pour, espérons-le, la dernière fois ;
  8. Créer un nouveau site qui pointe vers le répertoire de l’application ;
  9. Corriger les permissions ;
  10. Parfois, tout jeter et recommencer depuis 1/ pour corriger le tout (╯°□°)╯︵ ┻━┻.

Nous avons donc conçu un système pour vous permettre de vous simplifier tout ça. En utilisant notre plateforme de déploiement 1‑click, vous pouvez installer et provisionner une app ou un service dans votre espace utilisateur. Plus besoin de configurer des dépendances système, ou de télécharger et d’installer manuellement toute la pile technique. Cliquez sur un bouton, et c’est prêt3) !

Capture d’écran de l’interface d’administration : accéder à l’installation en 1-click
Capture d’écran de l’interface d’administration : accéder à l’installation en 1‑click

Hélas, notre architecture initiale s’appuyait sur l’automatisation des processus de configuration au travers de l’interface Web grâce à des outils scriptés comme PhantomJS. Celui-ci est déprécié depuis longtemps, et tous les projets récents offrent maintenant au moins une CLI pour gérer leurs installation, configuration, et provisionnement. Il était temps de repenser notre outil pour lui offrir plus de fiabilité. Cette nouvelle mouture nous permet également de vous proposer de nouvelles applications que nous ne pouvions pas supporter avec l’ancien système. Bienvenus à nouveau, nous redémarrons la Matrice !

Vos applications favorites déjà disponibles

Nous venons de mettre en production la première version de notre nouvel outil. Après plusieurs semaines de tests intenses, nous ne doutons plus de sa stabilité.

Capture d’écran de l’interface d’administration: l’installation en 1-click<br /><noscript><img decoding=
Capture d’écran de l’interface d’administration : l’installation en 1‑click
(notez que les notes de popularité ici sont purement fictives pour un rendu réaliste)

Une autre tâche (titanesque) a été de porter les applications que nous vous proposions déjà. Il était effectivement hors de question de vous proposer une applithèque moins fournie que celle déjà présente. Notre équipe4) a fait un important travail de portage. Voici la première liste des applications et frameworks que vous pouvez d’ores et déjà installer en 1‑click sur cette nouvelle plateforme :

  • DokuWiki : un wiki simple et efficace, idéal pour maintenir une documentation interne ;
  • Drupal : un Framework / CMS PHP pour gérer les contenus de votre site Web ;
  • Gitea : une alternative à GitHub légère et autohébergeable, pour gérer vos dépôts de code et votre suivi des tickets ;
  • Joomla : un CMS PHP plutôt connu ;
  • Magento : la célèbre plateforme e‑commerce PHP ;
  • MediaWiki : le plus réputé des wikis, qui propulse notamment Wikipédia ;
  • NeoFrag : un CMS à destination des communautés e‑sport ;
  • Nextcloud : le cloud personnel offrant d’importantes fonctionnalités de collaboration ;
  • PrestaShop : une plateforme e‑commerce simple à prendre en main ;
  • Thelia : une autre plateforme e‑commerce, pensé pour les moyens et gros sites ;
  • Wallabag : une solution Read It Later open source ;
  • WordPress : le très connu moteur de blog/CMS.

Note : quelques applications ont disparu, telle phpBB, parce qu’elles n’offrent aucun outil d’automatisation de provisionnement (comme une CLI). Comme ces applications souffrent souvent d’un manque d’intérêt de la part de la communauté, nous avons choisi de les retirer de la liste.

Un nouveau moteur, tout beau, tout chaud

Comme la plupart des applications Web récentes offrent des outils embarqués dédiés à l’installation et la configuration, il nous semble évident de les utiliser. Nous avons donc conçu un moyen de les utiliser au travers d’une mécanique de scripts.

Chaque script déclare un environnement et des variables de configuration dans un dataset sous forme d’un YAML Front Matter.

Ce système nous permet un provisionnement automagique qui va se charger de créer votre site dans le type demandé et de le configurer avec les extensions nécessaires, de configurer les bases de données nécessaires à la bonne marche du service, etc. La dernière version est alors récupérée5), et est extraite dans votre espace utilisateur.

Le script est alors exécuté pour provisionner l’application avec les réglages spécifiques à votre compte alwaysdata. Génération des fichiers de configuration, exécution des migrations des bases de données, correction des permissions, et toute tâche laborieuse : tout est automatique.

C’est tout. Votre app est prête à être utilisée.

Wôw, ça semble top !

En fait, ça l’est. Ce système nous offre de nombreux avantages :

  • Ce ne sont que des scripts, ce qui les rend simples à écrire et à maintenir, et nous permet de vous proposer facilement et rapidement de nouvelles apps et frameworks sur la plateforme ;
  • Nous nous sommes débarrassés de toutes les bidouilles à base de scripting de l’interface Web, ce qui rend les scripts plus robustes et plus testables ;
  • En tant que scripts, seules quelques connaissances en shell sont nécessaires pour les écrire. Vous n’aimez pas Bash ? Utilisez le langage de script de votre choix (Python, Ruby…), ils fonctionneront tout aussi bien ;
  • Nous utilisons les outils embarqués dans les applications pour l’automatisation des tâches, ce qui laisse l’éditeur responsable de la maintenance entre deux versions sur une commande dédiée ;
  • Les scripts sont beaux, les scripts sont merveilleux, les scripts sont les enfants des licornes ;
  • Obtenir des traces d’erreur détaillées permettant de corriger les problèmes d’installation est infiniment plus simple qu’avec une automatisation d’interface ;
  • J’ai dit que ce n’était que des scripts ?

Notre objectif est de vous fournir la plupart des outils, services, et applications les plus courants, sans casser les scripts d’installation à chaque nouvelle version. Cette solution nous permet de vous offrir ce confort, et nous espérons bien vous fournir de nouvelles apps régulièrement.

Un mot concernant la sécurité durant le déploiement

Certaines tâches automatisées nécessitent ou vous retournent des informations, et notre système vous permet d’y accéder facilement. Voici la liste non exhaustive des considérations relatives à la sécurité lors du déploiement.

Génération de mots de passe aléatoires

Vous avez souvent besoin de fournir un mot de passe administrateur, pour l’interface back-office, lorsque vous installez une nouvelle application. Notre outil peut générer un mot de passe aléatoirement pour vous, ou vous laisser choisir le vôtre lors de l’installation. Quel que soit votre choix, nous ne stockons jamais votre mot de passe sur notre plateforme. Vous restez seul•e propriétaire de votre outil.

Note : Nous ne stockons pas d’information sensible, mais si votre application utilise un mot de passe en clair dans ses fichiers de configuration, celui-ci restera pleinement lisible. Les fichiers de configuration étant stockés dans votre espace utilisateur, et disposant des permissions correctes, ce n’est souvent pas trop grave. Cependant si vous considérez qu’il s’agit d’une mauvaise pratique, n’hésitez pas à ouvrir une issue sur le tracker de votre application pour demander le support du mot de passe chiffré ;).

URL d’administration, configurations personnalisées, et plus

Certaines solutions vous permettent de personnaliser plusieurs éléments, comme les URL d’administration. Nous avons souvent fait des choix par défaut, pour simplifier le déploiement. Vous êtes bien entendu libres de personnaliser ces URL une fois l’installation terminée, pour correspondre à vos besoins.

Globalement, notre plateforme s’occupe seulement de provisionner le déploiement avec une configuration sécurisée par défaut. Libre à vous de modifier, mettre à jour, ou personnaliser votre installation par la suite.

Création des bases de données

Les bases de données relatives à votre app sont créées automatiquement avec un utilisateur dédié, avec un mot de passe généré aléatoirement. Nous ne stockons aucune information relative à la connexion durant ce processus. Vos données restent protégées.

Logs (à venir dans la prochaine release)

Vous pouvez accéder aux logs générés durant le processus automatique depuis votre espace utilisateur. Si l’installation échoue pour une quelconque raison, vous y trouverez les informations nécessaires au débogage. Si vous avez besoin de transmettre ces rapports, les informations sensibles y sont déjà omises : aucun nom de comptes, chemin d’accès, ou mot de passe n’y figurent.


Nous cherchons toujours à vous fournir une plateforme d’hébergement qui soit à la fois simple et puissante dans ses fonctionnalités. Nous espérons que cette nouvelle solution en 1‑click vous aidera dans vos processus de déploiement et vous aidera à délivrer vos contenus encore plus rapidement.

Dans les prochains jours, nous publierons un deuxième article qui vous montrera toute la puissance de notre nouvel outil d’installation en 1‑click #teasing.

Pour tromper votre attente, que diriez-vous de nous proposer une liste des applications que vous aimeriez voir rejoindre celles déjà supportées ? Laissez-nous un commentaire ou envoyez-nous un message à community@alwaysdata.com pour nous faire part de vos suggestions.

Notes

Notes
1histoire de se rappeler encore un peu nos beaux jours de soleil
2spoiler : il y a une autre très bonne raison à vouloir reprendre toute cette architecture, vous en saurez plus très rapidement dans un prochain article
3on n’a pas fait mieux depuis le microonde
4particulièrement Héloïse et Nicolas, qu’ils en soient remerciés pour les siècles à venir
5soit par un cURL classique, soit en utilisant un outil de gestion de dépendances si disponible