Je recherche depuis quelques temps la meilleure manière d’organiser les aspects techniques de ma vie sur le web (Les tâches techniques sont les activités qui me prennent le plus de temps et j’ai du mal à les rationaliser).
Jusqu’ici, je gérais en 4 endroits différents les outils et les informations nécessaires au développement et à la gestion de mes serveurs. Parmi ces outils, on retrouve : un éditeur de texte (jusqu’ici Coda 2), un client FTP/SFTP (Transmit, oui, je travaille sur mac !), un client SQL (Sequel Pro, une autre spécialité du monde mac), une base d’information contenant mes identifiants, mal organisée, avec des informations dans Gmail et dans Evernote et enfin le terminal de base du mac pour les sessions SSH (efficace mas peu pratique tout de même). Inutile de vous dire que la maintenance d’un écosystème aussi disparate prenait du temps et suscitait chez moi de la fatigue… intellectuelle…
J’ai donc recherché la meilleure manière de rationaliser tous ces outils, en rêvant qu’un IDE surpuissant puisse le faire. Une des conditions était qu’il ne soit pas trop technique ou orienté spécifiquement vers le versioning, méthode de travail que je ne mets pas encore en application (même si certaines collaborations m’y pousseront à l’avenir).
Première étape de ma réflexion : CodeAnywhere
CodeAnywhere semblait pour moi l’outil idéal afin de répondre à toutes ces problématiques mais il est coûteux et l’éditeur de texte de qualité moyenne. Il me rappelle le début des éditeurs en ligne, avant que Brackets et sa kyrielle de modules complémentaires ne fasse son apparition. J’ai donc été un peu déçu par le positionnement de l’outil et j’ai trouvé son niveau de fonctionnalité assez réduit.
Tout faire soi-même ?
Dans les domaines où les développeurs et les ingénieurs informatique interviennent, certains estiment être mieux servis par eux-même que par des tiers. Ils n’ont pas forcément tord. C’est assez logique quand on la capacité de créer et configurer soi-même ses outils de production. Mais réinventer la roue dès que l’on a besoin d’un éditeur de texte peut paraître ridicule et chronophage. En revanche, configurer et assembler des outils sur son propre serveur pour obtenir une solution sur mesure peut être une bonne solution. On obtient alors un outil de pilotage ajusté, configuré avec précision, jusque dans les moindres détails.
C’est la conclusion à laquelle je suis arrivé après mon échec avec CodeAnywhere. J’ai donc entrepris la sélection des bons outils, open source et installables facilement (on y reviendra) sur mon propre serveur. Les heureux gagnants de ce concours très personnel ont été : Owncloud pour la gestion de fichiers et l’éditeur de texte léger, dbNinja pour la gestion des bases de données SQL et Gateone pour la gestion des sessions SSH. A part dbNinja qui est un script PHP très facile à installer sur un serveur Apache/PHP/MySQL, les autres outils ont demandé un peu plus de travail.
Ownloud est une application de gestion de fichier très puissante qui permet de créer des serveurs de fichier de type NAS ou de type Google Drive, mais aussi de se comporter comme un client FTP en se connectant à des serveurs distants (Webdav, Google Drive, DropBox, FTP, SFTP, etc.).
L’environnement d’installation est assez exigeant quant à la précision des droits sur les fichiers et dossiers ainsi que sur la version de PHP qui doit toujours être la plus élevée possible (rien n’est envisageable en dessous de PHP 5.4 et même PHP 6 ou 7 qui ont été obligatoires dans mon cas). Il est donc plus simple d’utiliser le package apt-get sur Debian ou Ubuntu pour installer automatiquement l’application et l’ensemble des dépendances qu’elle nécessite.
Une fois l’ensemble de vos comptes configurés dans Owncloud, vous pouvez vous connecter à celui-ci en utilisant le protocole WebDav. Owncloud se comporte alors comme un super agrégateurs de comptes de stockage et peut vous faire gagner un temps considérable dans un contexte d’accès régulier à des fichiers sur différents serveurs de configuration et protocoles hétérogènes. Je dois reconnaître que je ne me suis pas posé de question de sécurité dans la conceptualisation de cet outil pour mes propres besoins, je laisserai les experts du domaine statuer sur cet aspect.
L’éditeur de texte proposé par Owncloud n’est pas très riche en fonctionnalités mais il fait simplement son job avec une coloration syntaxique de base, et c’est out ce qu’on lui demande. On notera la prise en charge du raccourci ctrl + s (cmd + s sur mac) pour sauvegarder un fichier modifié. Je pense que cette approche deviendra un standard de fait à l’avenir mais les développeurs web sont encore timides dans ce domaine.
L’installation de dbNinja ne nécessite pas de commentaire spécifique. L’outil se substitue parfaitement à Sequel Pro, on y retrouve même un ensemble de fonctions très similaires et organisées de manière beaucoup plus ergonomique que dans phpMyAdmin, que je n’apprécie pas. La seule limite d’un tel outil estqu’il ne propose pas de tunneling SSH (connexion directe au serveur de base de données via SSH) mais on peut le comprendre pour des raisons de sécurité évidentes. Il faudra donc créer les tunnels SSH à la main sur le serveur avant de pouvoir s’en servir dans dbNinja (en passant par localhost des des ports inutilisés).
Mais comme je recherchais des solutions simples et assez rapides à mettre en place, je me suis arrêté en chemin, me limitant à configurer et tester les connections SQL que je pouvais réaliser par socket sur des serveurs qui acceptaient les connexions extérieures. Les outils parfaits n’existent malheureusement pas non plus ici…
La configuration de Gateone pourrait occuper plusieurs pages d’un article à elle seule. En effet, c’est long, compliqué et nécessite des compétences en SSH, en Linux et en Python. C’est sur la configuration du framework Tornado qui est utilisé par Gateone dans une version très ancienne (avant la v3) que j’ai bloqué le plus longtemps. Je n’ai pas compris tout de suite que si Gateone refusait de démarrer, c’était parce que la version de Tornado installée était trop récente. Les message d’erreur retournés n’étaient pas du tout explicites.
J’apprécie beaucoup Gateone car l’interface est simple et l’affichage des sessions (colorées et même en mode graphique, s’il vous plait) est rapide. Un système de bookmark permet de conserver les informations sur les comptes SSH sans avoir à faire appel à un stockage d’information externe. On peut même sauvegarder ses mots de passe, ce qui est assez rare pour être souligné !
Bien que cet outil soit formidable, il est difficile de le maintenir car chaque nouvelle mise à jour du système luit fait courir des risques d’indisponibilité. En effet, la mise à jour Tornado s’effectue automatiquement dans la version la plus récente et rend Gateone inutilisable (c’est du vécu, on repasse alors 20 minutes à rechercher la cause du dysfonctionnement et à le corriger).
OVH me permet de disposer d’un beau VPS à base de disque SSD pour configurer tout cela et c’est très rapide à l’utilisation, mais la maintenance d’un tel système me semble bien trop chronophage à long terme. Cette solution n’est donc pas pérenne.
Tiens, ShiftEdit se rappelle discrètement à mon souvenir !
J’avais bien remarqué ShiftEdit dans la bibliothèque d’applications proposées par Google Chrome (oui, car étudier la liste des éditeurs offline proposée par Google Chrome app Store est un bon point de départ dans la quête de l’IDE idéal), mais je n’avais pas identifié son potentiel applicatif. En effet, ce petit éditeur de texte regorge de fonctionnalités bien pensées et regroupe un grand nombre des choses que je recherche depuis des années :
- Gestion de fichier muti-comptes (FTP, SFTP, Google Drive, etc.)
- Editeur de texte avec coloration syntaxique (mais aussi le bon thème de couleurs, la sélection par ligne, le soulignement de la ligne active, beautify intégré, etc.)
- Une fonctionnalité live preview pour suivre les changement apportés au code
- Une fonction preview intégrée qui gère des url différentes des chemins serveurs
- Une intégration de phpMyAdmin (je ne l’ai pas encore testée)
- Un terminal SSH intégré
- La possibilité de gérer les droits sur les fichiers directement dans le gestionnaire de fichiers
- Un rechercher / remplacer efficace
- La possibilité de rechercher un terme dans des fichiers se trouvant sur le serveur mais jamais ouverts dans l’éditeur (trouver où se trouve une fonction php à travers un grand nombre de fichier, par exemple)
- La possibilité de comparer deux fichiers directement dans l’éditeur de texte
- Une division des fenêtres par volets (basique mais indispensable)
Et, pour finir la version illimitée de l’outil est plutôt bon marché, à 6$ par mois.
Je vais donc poursuivre mes tests mais j’envisage d’abandonner mon VPS dans les temps à venir et de basculer toute ma gestion serveur vers Shiftedit. Il me reste juste une inconnue quant à la sécurité du système mais tout m’a l’air sérieux du côté de l’éditeur. Et vous, vous en pensez quoi ?
voir TablePlus, MySQL GUI: https://tableplus.io/