Written by

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

Une fonc­tion­na­li­té que nous vou­lions reprendre de zéro depuis quelque temps est notre sys­tème d’installation en 1-click. Il vous offre la pos­si­bi­li­té de déployer faci­le­ment et rapi­de­ment des appli­ca­tions pré­pro­vi­sion­nées dans votre espace uti­li­sa­teur. Pourtant, notre archi­tec­ture était quelque peu obso­lète pour faci­le­ment nous per­mettre de sup­por­ter de nou­velles appli­ca­tions. Nous avons donc déci­dé de repar­tir de la base2).


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

Déployer des appli­ca­tions en pro­duc­tion suit sou­vent les mêmes étapes :

  1. Trouver quelque part l’archive conte­nant la der­nière ver­sion de l’app ou du ser­vice que vous sou­hai­tez déployer ;
  2. Télécharger cette archive dans votre espace uti­li­sa­teur, la décom­pres­ser, et ren­trer dans le dos­sier nou­vel­le­ment créé ;
  3. Exécuter les dif­fé­rentes tâches, depuis l’installation jusqu’à la confi­gu­ra­tion, soit en ligne de com­mande (CLI), soit depuis une inter­face (Web) ;
  4. Créer la base de don­nées man­quante ;
  5. Relancer la confi­gu­ra­tion de l’app ;
  6. Activer ces %$@! d’extensions man­quantes dans l’interpréteur ;
  7. Relancer la confi­gu­ra­tion pour, espé­rons-le, la der­nière fois ;
  8. Créer un nou­veau site qui pointe vers le réper­toire de l’application ;
  9. Corriger les per­mis­sions ;
  10. Parfois, tout jeter et recom­men­cer depuis 1/ pour cor­ri­ger le tout (╯°□°)╯︵ ┻━┻.

Nous avons donc conçu un sys­tème pour vous per­mettre de vous sim­pli­fier tout ça. En uti­li­sant notre pla­te­forme de déploie­ment 1-click, vous pou­vez ins­tal­ler et pro­vi­sion­ner une app ou un ser­vice dans votre espace uti­li­sa­teur. Plus besoin de confi­gu­rer des dépen­dances sys­tème, ou de télé­char­ger et d’installer manuel­le­ment toute la pile tech­nique. Cliquez sur un bou­ton, 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 archi­tec­ture ini­tiale s’appuyait sur l’automatisation des pro­ces­sus de confi­gu­ra­tion au tra­vers de l’interface Web grâce à des outils scrip­tés comme PhantomJS. Celui-ci est dépré­cié depuis long­temps, et tous les pro­jets récents offrent main­te­nant au moins une CLI pour gérer leurs ins­tal­la­tion, confi­gu­ra­tion, et pro­vi­sion­ne­ment. Il était temps de repen­ser notre outil pour lui offrir plus de fia­bi­li­té. Cette nou­velle mou­ture nous per­met éga­le­ment de vous pro­po­ser de nou­velles appli­ca­tions que nous ne pou­vions pas sup­por­ter avec l’ancien sys­tème. Bienvenus à nou­veau, nous redé­mar­rons la Matrice !

Vos applications favorites déjà disponibles

Nous venons de mettre en pro­duc­tion la pre­mière ver­sion de notre nou­vel outil. Après plu­sieurs semaines de tests intenses, nous ne dou­tons plus de sa sta­bi­li­té.

Capture d’écran de l’interface d’administration: l’installation en 1-click<br><small>(notez que les notes de popularité ici sont purement fictives pour un rendu réaliste)</small>
Capture d’écran de l’interface d’administration : l’installation en 1-click
(notez que les notes de popu­la­ri­té ici sont pure­ment fic­tives pour un ren­du réa­liste)

Une autre tâche (tita­nesque) a été de por­ter les appli­ca­tions que nous vous pro­po­sions déjà. Il était effec­ti­ve­ment hors de ques­tion de vous pro­po­ser une appli­thèque moins four­nie que celle déjà pré­sente. Notre équipe4) a fait un impor­tant tra­vail de por­tage. Voici la pre­mière liste des appli­ca­tions et fra­me­works que vous pou­vez d’ores et déjà ins­tal­ler en 1-click sur cette nou­velle pla­te­forme :

  • DokuWiki : un wiki simple et effi­cace, idéal pour main­te­nir une docu­men­ta­tion interne ;
  • Drupal : un Framework / CMS PHP pour gérer les conte­nus de votre site Web ;
  • Gitea : une alter­na­tive à GitHub légère et auto­hé­ber­geable, pour gérer vos dépôts de code et votre sui­vi des tickets ;
  • Joomla : un CMS PHP plu­tôt connu ;
  • Magento : la célèbre pla­te­forme e-com­merce PHP ;
  • MediaWiki : le plus répu­té des wikis, qui pro­pulse notam­ment Wikipédia ;
  • NeoFrag : un CMS à des­ti­na­tion des com­mu­nau­tés e-sport ;
  • Nextcloud : le cloud per­son­nel offrant d’importantes fonc­tion­na­li­tés de col­la­bo­ra­tion ;
  • PrestaShop : une pla­te­forme e-com­merce simple à prendre en main ;
  • Thelia : une autre pla­te­forme e-com­merce, pen­sé pour les moyens et gros sites ;
  • Wallabag : une solu­tion Read It Later open source ;
  • WordPress : le très connu moteur de blog/CMS.

Note : quelques appli­ca­tions ont dis­pa­ru, telle phpBB, parce qu’elles n’offrent aucun outil d’automatisation de pro­vi­sion­ne­ment (comme une CLI). Comme ces appli­ca­tions souffrent sou­vent d’un manque d’intérêt de la part de la com­mu­nau­té, nous avons choi­si de les reti­rer de la liste.

Un nouveau moteur, tout beau, tout chaud

Comme la plu­part des appli­ca­tions Web récentes offrent des outils embar­qués dédiés à l’installation et la confi­gu­ra­tion, il nous semble évident de les uti­li­ser. Nous avons donc conçu un moyen de les uti­li­ser au tra­vers d’une méca­nique de scripts.

Chaque script déclare un envi­ron­ne­ment et des variables de confi­gu­ra­tion dans un data­set sous forme d’un YAML Front Matter.

Ce sys­tème nous per­met un pro­vi­sion­ne­ment auto­ma­gique qui va se char­ger de créer votre site dans le type deman­dé et de le confi­gu­rer avec les exten­sions néces­saires, de confi­gu­rer les bases de don­nées néces­saires à la bonne marche du ser­vice, etc. La der­nière ver­sion est alors récupérée5), et est extraite dans votre espace uti­li­sa­teur.

Le script est alors exé­cu­té pour pro­vi­sion­ner l’application avec les réglages spé­ci­fiques à votre compte always­da­ta. Génération des fichiers de confi­gu­ra­tion, exé­cu­tion des migra­tions des bases de don­nées, cor­rec­tion des per­mis­sions, et toute tâche labo­rieuse : tout est auto­ma­tique.

C’est tout. Votre app est prête à être uti­li­sée.

Wôw, ça semble top !

En fait, ça l’est. Ce sys­tème nous offre de nom­breux avan­tages :

  • Ce ne sont que des scripts, ce qui les rend simples à écrire et à main­te­nir, et nous per­met de vous pro­po­ser faci­le­ment et rapi­de­ment de nou­velles apps et fra­me­works sur la pla­te­forme ;
  • Nous nous sommes débar­ras­sés de toutes les bidouilles à base de scrip­ting de l’interface Web, ce qui rend les scripts plus robustes et plus tes­tables ;
  • En tant que scripts, seules quelques connais­sances en shell sont néces­saires pour les écrire. Vous n’aimez pas Bash ? Utilisez le lan­gage de script de votre choix (Python, Ruby…), ils fonc­tion­ne­ront tout aus­si bien ;
  • Nous uti­li­sons les outils embar­qués dans les appli­ca­tions pour l’automatisation des tâches, ce qui laisse l’éditeur res­pon­sable de la main­te­nance entre deux ver­sions sur une com­mande dédiée ;
  • Les scripts sont beaux, les scripts sont mer­veilleux, les scripts sont les enfants des licornes ;
  • Obtenir des traces d’erreur détaillées per­met­tant de cor­ri­ger les pro­blèmes d’installation est infi­ni­ment plus simple qu’avec une auto­ma­ti­sa­tion d’interface ;
  • J’ai dit que ce n’était que des scripts ?

Notre objec­tif est de vous four­nir la plu­part des outils, ser­vices, et appli­ca­tions les plus cou­rants, sans cas­ser les scripts d’installation à chaque nou­velle ver­sion. Cette solu­tion nous per­met de vous offrir ce confort, et nous espé­rons bien vous four­nir de nou­velles apps régu­liè­re­ment.

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

Certaines tâches auto­ma­ti­sées néces­sitent ou vous retournent des infor­ma­tions, et notre sys­tème vous per­met d’y accé­der faci­le­ment. Voici la liste non exhaus­tive des consi­dé­ra­tions rela­tives à la sécu­ri­té lors du déploie­ment.

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

Vous avez sou­vent besoin de four­nir un mot de passe admi­nis­tra­teur, pour l’interface back-office, lorsque vous ins­tal­lez une nou­velle appli­ca­tion. Notre outil peut géné­rer un mot de passe aléa­toi­re­ment pour vous, ou vous lais­ser choi­sir le vôtre lors de l’installation. Quel que soit votre choix, nous ne sto­ckons jamais votre mot de passe sur notre pla­te­forme. Vous res­tez seul•e pro­prié­taire de votre outil.

Note : Nous ne sto­ckons pas d’information sen­sible, mais si votre appli­ca­tion uti­lise un mot de passe en clair dans ses fichiers de confi­gu­ra­tion, celui-ci res­te­ra plei­ne­ment lisible. Les fichiers de confi­gu­ra­tion étant sto­ckés dans votre espace uti­li­sa­teur, et dis­po­sant des per­mis­sions cor­rectes, ce n’est sou­vent pas trop grave. Cependant si vous consi­dé­rez qu’il s’agit d’une mau­vaise pra­tique, n’hésitez pas à ouvrir une issue sur le tra­cker de votre appli­ca­tion pour deman­der le sup­port du mot de passe chif­fré ;).

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

Certaines solu­tions vous per­mettent de per­son­na­li­ser plu­sieurs élé­ments, comme les URL d’administration. Nous avons sou­vent fait des choix par défaut, pour sim­pli­fier le déploie­ment. Vous êtes bien enten­du libres de per­son­na­li­ser ces URL une fois l’installation ter­mi­née, pour cor­res­pondre à vos besoins.

Globalement, notre pla­te­forme s’occupe seule­ment de pro­vi­sion­ner le déploie­ment avec une confi­gu­ra­tion sécu­ri­sée par défaut. Libre à vous de modi­fier, mettre à jour, ou per­son­na­li­ser votre ins­tal­la­tion par la suite.

Création des bases de données

Les bases de don­nées rela­tives à votre app sont créées auto­ma­ti­que­ment avec un uti­li­sa­teur dédié, avec un mot de passe géné­ré aléa­toi­re­ment. Nous ne sto­ckons aucune infor­ma­tion rela­tive à la connexion durant ce pro­ces­sus. Vos don­nées res­tent pro­té­gées.

Logs (à venir dans la prochaine release)

Vous pou­vez accé­der aux logs géné­rés durant le pro­ces­sus auto­ma­tique depuis votre espace uti­li­sa­teur. Si l’installation échoue pour une quel­conque rai­son, vous y trou­ve­rez les infor­ma­tions néces­saires au débo­gage. Si vous avez besoin de trans­mettre ces rap­ports, les infor­ma­tions sen­sibles y sont déjà omises : aucun nom de comptes, che­min d’accès, ou mot de passe n’y figurent.


Nous cher­chons tou­jours à vous four­nir une pla­te­forme d’hébergement qui soit à la fois simple et puis­sante dans ses fonc­tion­na­li­tés. Nous espé­rons que cette nou­velle solu­tion en 1-click vous aide­ra dans vos pro­ces­sus de déploie­ment et vous aide­ra à déli­vrer vos conte­nus encore plus rapi­de­ment.

Dans les pro­chains jours, nous publie­rons un deuxième article qui vous mon­tre­ra toute la puis­sance de notre nou­vel outil d’installation en 1-click #tea­sing.

Pour trom­per votre attente, que diriez-vous de nous pro­po­ser une liste des appli­ca­tions que vous aime­riez voir rejoindre celles déjà sup­por­tées ? Laissez-nous un com­men­taire ou envoyez-nous un mes­sage à community@alwaysdata.com pour nous faire part de vos sug­ges­tions.

Notes   [ + ]

1. histoire de se rap­pe­ler encore un peu nos beaux jours de soleil
2. spoi­ler : il y a une autre très bonne rai­son à vou­loir reprendre toute cette archi­tec­ture, vous en sau­rez plus très rapi­de­ment dans un pro­chain article
3. on n’a pas fait mieux depuis le microonde
4. particulièrement Héloïse et Nicolas, qu’ils en soient remer­ciés pour les siècles à venir
5. soit par un cURL clas­sique, soit en uti­li­sant un outil de ges­tion de dépen­dances si dis­po­nible