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 :
- Trouver quelque part l’archive contenant la dernière version de l’app ou du service que vous souhaitez déployer ;
- Télécharger cette archive dans votre espace utilisateur, la décompresser, et rentrer dans le dossier nouvellement créé ;
- Exécuter les différentes tâches, depuis l’installation jusqu’à la configuration, soit en ligne de commande (CLI), soit depuis une interface (Web) ;
- Créer la base de données manquante ;
- Relancer la configuration de l’app ;
- Activer ces %$@! d’extensions manquantes dans l’interpréteur ;
- Relancer la configuration pour, espérons-le, la dernière fois ;
- Créer un nouveau site qui pointe vers le répertoire de l’application ;
- Corriger les permissions ;
- 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) !
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é.
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.
1 2 3 4 5 6 7 | site: type: php path: '{INSTALL_PATH_RELATIVE}' php_version: '7.2' database: type: mysql |
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.
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash set -e composer global require wonderfulapp/console php .composer/vendor/bin/wonderfulapp app:download --www="$INSTALL_PATH" default php .composer/vendor/bin/wonderfulapp app:install --www="$INSTALL_PATH" --mysql-login="$DATABASE_USERNAME":"$DATABASE_PASSWORD" --mysql-host="$DATABASE_HOST" --mysql-database="$DATABASE_NAME" --skip-exists-check --drop default rm -rf .composer |
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
↑1 | histoire de se rappeler encore un peu nos beaux jours de soleil |
---|---|
↑2 | spoiler : 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 |
↑3 | on n’a pas fait mieux depuis le microonde |
↑4 | particulièrement Héloïse et Nicolas, qu’ils en soient remerciés pour les siècles à venir |
↑5 | soit par un cURL classique, soit en utilisant un outil de gestion de dépendances si disponible |
Super nouvelle !! Je m’étais fait la remarque en octobre lorsque j’ai installé à la main MediaWiki, avec votre aide pour Parsoïd et la conf node.js (mais je sais pas si c’est prévu aujourd’hui par votre 1click).
Sinon j’ai bien une demande, mais c’est pas tant pour le 1click mais de citer le fil du forum qui date de quelques années, pour la mise en place des listes de diffusion :D
Sylvain : pour les listes de diffusion, encore un peu de patience, ça arrive très bientôt :)
Excellent, comme nouvelle application, ce serait bien d’avoir un lecteur de flux rss, comme freshrss ou leed.
Très bonne idée ! Je note ça pour les prochains scripts à développer :)
@Cyril : j’espère :)
Ah oui pour un lecteur de flux RSS. J’utilise Selfoss si besoin d’une autre référence ;)
Sinon en terme de solution de chat en ligne, il y a des solutions pas trop gourmande ? Est-ce c’est jouable Let’s Chat ? http://sdelements.github.io/lets-chat/
Merci pour les suggestions, je le note. Il y a aussi The Lounge qui est un excellent client IRC :)
Ah et scrumblr peut-être ? (je viens seulement de le découvrir via l’annuaire Framalibre en lisant mes RSS et qu’il y a une instance Framemo).
Et si on reste dans du node.js, pourquoi pas une 1click pour TiddlyWiki :) (à venir une version avec authentification pour sécuriser un peu l’accès).
Pour scrumbler, pourquoi pas :)
Pour TiddlyWiki, c’est même encore plus simple que ça en a l’air puisque c’est juste un fichier HTML à téléverser sur le serveur, et auquel il suffit d’accéder en WebDav pour avoir la sauvegarde automatique. Tout est dans le fichier, rien à déployer, pas même une instance Node.js. Je le note !
Ce matin je pense à Selfoss, que j’apprécie beaucoup dans le confort de lecture des flux RSS (https://selfoss.aditu.de/).
Pour WebDav et TiddlyWiki j’avais essayé car connaissant le support WebDav (je m’en sers sous Fedora), mais je n’avais réussi à l’époque à enregistrer mes modifs. Un petit tuto ?
Salut Sylvain,
j’avais noté Selfoss, c’est dans la liste des suivants ;)
Pour TiddlyWiki, tu peux accéder à ton fichier via
https://webdav-<compte>.alwaysdata.net/<chemin_dans_home>/tiddlywiki.html
(je te laisse adapter le chemin). Normalement, TiddlyWiki doit détecter qu’il est servi depuis un serveur WebDAV et activer le support et la sauvegarde automatique (dans mon cas ça fonctionne sans souci). Cela dit, je vais écrire le script pour installer la version Node.js®, ce sera plus pratique :)Cool pour Selfoss :)
Je suis impatient de tester pour la version Node.js, surtout que la 5.1.18 permet de servir aussi des fichiers statiques, en mode lecture seule ! (j’ai un doute pour la version Node.js native et lecture seule), mais je veux bien bêta tester !
Ce soir je découvre https://github.com/kevinpapst/kimai2, qui pourrait sans doute être dans liste je trouve :)
Sinon Mattermost mais c’est peut-être moins évident sur du mutualisé (j’ai planté Nextcloud l’autre jour en mode maintenance prolongé simplement en mettant à jour un module, c’est peut-être non plus trop adapté peut-être ; où alors je n’ai pas de succès avec, j’avais aussi abonné sur Yunohost avec).
Bonjour,
Vous pouvez maintenant contribuer à l’ajout de nouvelles applications installables en 1 clic : https://blog.alwaysdata.com/fr/2018/12/18/et-si-on-simplifiait-la-livraison-vous-etes-prets/. Plus besoin de passer par nous (bien sûr si vous avez des questions dans l’écriture du script, il ne faut pas hésiter ;) ). Pour Mattermost, si mes souvenirs sont bons ce n’est pas possible en serveurs mutualisés actuellement car il a besoin de tourner tout le temps.