Projets personnels
Je suis critique pour moi-même
La semaine dernière, mon quartier a subi une coupure électrique qui a rendu inaccessible mon serveur auto-hébergé pendant 2 heures.
Il m'a fallu seulement quelques petites minutes pour me rendre compte qu'il y avait un problème et pendant tout le temps de la panne, je me suis rendu compte que la très grande majorité de mes outils étaient indisponibles :
- Mes mails
- Mes calendriers
- Mon gestionnaire de tâches
- Mes contacts téléphoniques
- Mes fichiers et mes partages
- Mes dépôts pour mes projets
- Mon lecteur de flux RSS et mon instance Wallabag qui m'aide aussi à partager ma veille
- Des outils de monitoring
- Et encore d'autres services…
C'est pénible mais ce n'est pas insurmontable quand on sait que rien n'est cassé et que c'est juste un problème de courant. Cette une grosse centralisation de données et services que j'aurais largement critiquée dans un autre contexte. Cependant, comme tout est hébergé à la maison, ça ne me pose véritablement aucun problème et il faut accepter des coupures de temps en temps.
Je crois que c'est une étape importante qui a été franchie avec la reprise en main de toutes les données numériques qui m'appartiennent qui et ne devraient pas stockées ailleurs.
Bilan de l’année 2019
On est arrivé en 2020 depuis plusieurs jours et j’avais envie de faire le bilan de 2019. Cette année a été assez productive du coté des logiciels libres. J’ai pu contribuer avec la réalisation de quelques projets :
- Un outil pour récapituler les dates d’expirations de nom de domaines et sa mise à jour pour récapituler les dates d’expirations de certificats SSL
- Une refonte et la publication du code pour générer des rapports serveur
- Une API pour récupérer les informations OpenGraph et les données générées par Graby
- Un générateur de configuration de vhost pour Apache
J’ai également publié d’autres projets sans en parler sur mon blog :
- Un script pour envoyer des SMS depuis un shell en s’appuyant sur KDEConnect
- Un outil de publication sur Mattermost de liens provenants de flux RSS
En enfin, j’ai maintenu des projets existants comme Gist et l’outil pour s’identifier sur Office 365 (je cherche d’ailleurs des contributions pour implémenter la double authentification). Du côté de l’auto-hébergement, j’ai ajouté quelques services comme wallabag et cyberchef. Au 31 décembre, 15 services étaient proposés gratuitement avec un accès libre ou sur inscription et 36 personnes m’ont fait une demande d’accès à un service restreint (hébergement web, service mail, Nextcloud, …).
Cela fait maintenant plus de 10 ans que je m’auto-héberge et j’héberge maintenant pas mal de monde. Ça tourne super bien et je suis très content que de plus en plus de gens s'y intéressent. Je suis sollicité par des associations qui veulent d'affranchir des GAFAM et c'est bien !
Tout cela demande de l'investissement mais c’est essentiel pour ne pas laisser ses données n’importe où.
On verra comment 2020 va se passer 😉
Mes scripts i3blocks pour générer les éléments de ma barre i3-wm
i3-wm est le gestionnaire de fenêtres que j'utilise depuis quelques d'années maintenant. Au fur et à mesure du temps, j'ai fais évoluer mon interface et j'ai écris des scripts pour générer les informations affichées dans la barre du dessus.
Parce que je suis plus à l'aise avec ce langage, l'ensemble des scripts est écrit en PHP 7. Ces scripts sont exécutés au travers de i3blocks, l'utilitaire qui gère les exécutions et les rendus des blocs.
Le fichier de configuration a cette forme et voici les détails techniques des blocs. Ils incluent tous base/block.php et le code source est libre. Le code n'est pas toujours élégant mais ça fonctionne pas trop mal 😀
Dépendance globale des scripts : interpréteur PHP 7.
Bande passante
Affiche la bande passante UP et DOWN d'une interface réseau.
- Code source
- Dépendances :
ip
,grep
,awk
,cut
,ifstat
ettail
- 1er paramètre : l'interface réseau (défault :
eth0
) - 2ème paramètre :
inet
pour l'IPV4 (par défaut) ouinet6
pour l'IPV6
IP locale
Affiche l'adresse IP d'une interface réseau. Au clic, l'IP est copiée dans le presse-papier.
- Code source
- Dépendances :
ip
,grep
,awk
,cut
,xclip
- 1er paramètre : l'interface réseau (défault :
eth0
) - 2ème paramètre :
inet
pour l'IPV4 (par défaut) ouinet6
pour l'IPV6
IP publique
Affiche votre adresse IP publique via une requête DNS à opendns.com. Au clic, l'IP est copiée dans le presse-papier.
- Code source
- Dépendances :
dig
etxclip
- 1er paramètre :
0
pour l'IPV4 (par défaut) ou1
pour l'IPV6
Espace libre
Affiche le pourcentage d'espace libre d'un point de montage. Au clic, le gestionnaire de fichiers affiche le répertoire du point de montage.
- Code source
- Dépendances :
df
,tail
etxdg-open
- 1er paramètre : le nom du point de montage (défault :
root
) - 2ème paramètre : le chemin vers le point de montage (défault :
/
) - 3ème paramètre : pourcentage du niveau d'alerte "moyen" (défault :
70
) - 4ème paramètre : pourcentage du niveau d'alerte "critique" (défault :
90
)
Spotify
Affiche l'artiste et le titre de la musique jouée. J'affiche le workspace
6. MEDIA
lors d'un clic.
- Code source
- Dépendance :
playerctl
Affiche un bouton pour lancer ou mettre en pause le titre en court.
- Code source
- Dépendances :
playerctl
etdbus-send
Volume
Affiche le volume du son.
- Code source
- Dépendances :
amixer
etgrep
Météo
Affiche la météo du lieu détecté par fr.wttr.in. Au clic, le site est affiché dans le navigateur web.
- Code source
- Dépendance :
curl
etxdg-open
Application
Affiche une lettre colorée et lance un script quand on clique dessus. Dans ma configuration, ça affiche des sites web dans le navigateur web.
- Code source
- 1er paramètre : la lettre à afficher
- 2ème paramètre : le script à exécuter au clic
- 3ème paramètre : la couleur de fond (défaut :
#333
) - 4ème paramètre : la couleur du texte (défaut :
#fff
)
Heure et date
Affiche l'heure et la date.
- Code source
- 1er paramètre : le format (documentation). Par défault :
H:i:s
.
Flux RSS
Affiche le nombre d'articles non lus. Au clic, le navigateur affiche le client web du votre lecture RSS (tt-rss chez moi).
- Code source
- Dépendance :
xdg-open
- 1er paramètre : URL du flux RSS
- 2ème paramètre : adresse du lecture RSS (optionnel)
Batterie
Affiche l'état de charge de la batterie.
- Code source
- Dépendance :
acpi
Gist 1.9.0 en ligne… Vive le monde du dev front !
La version 1.8.3 aussitôt publiée, j'avais complètement oublié la mort de bower au profit de yarn. Du coup, une tentative d'installation et tout fonctionne sauf les assets qui étaient gérés avec bower.
J'avais 2 choix possibles : utiliser yarn pour remplacer bower pour sans doute le voir disparaître dans quelques mois ou choisir un outil un peu plus bas niveau : NPM. La version 1.9.0 inclue donc NPM pour gérer les assets de Gist.
Dans cette version, il y a également un script exécuté à la fin des commandes composer pour configurer l'application sans passer par une édition manuelle des fichiers :
Pour mettre à jour votre application Gist coté client et serveur : make
à la racine du projet.
Gist 1.8.3 released! 2 bugs majeurs fixés
Gist est un service en ligne et une application auto-hébergeable pour partager du code sur le web et en ligne de commande.
J'ai publié à l'instant la version 1.8.3 qui corrige 2 bugs majeurs concernant l'API :
- La mise à jour d'un GIST requêtait le mauvais end point (diff)
- Le contrôleur PHP pour la mise à jour d'un Gist pouvait récupérer un Gist qui n'était pas celui qu'on voulait mettre à jour (diff)
Pour mettre à jour votre application Gist coté client et serveur :