RSSHub

Ayant testé un moment la plateforme Instagram et souhaitant être en mesure de suivre les publications d’une sélection de comptes publiques directement dans mes flux RSS, je me suis tourné, après quelques recherches, vers une solution open source plus que prometteuse, à savoir RSSHub.

On peut constater rapidement en parcourant le github du projet que les principaux contributeurs sont d’origines asiatiques, comme l’attestent les caractères. Cela ne nuit en rien au projet, puisque la documentation en langue de Shakespeare est plutôt complète, si ce n’est pour la lecture des commentaires présents dans le code, ou des issues sur Github.

J’ai donc fait le choix de tester cette solution, et pour une fois, plutôt que de l’héberger sur l’une de mes machines, j’ai choisi de suivre la solution GCP décrite dans la documentation du projet. Le but étant de savoir si mon utilisation reste dans le palier gratuit fournit par Google pour l’utilisation d’un App Engine, et surtout, de pouvoir tester facilement l’intégration avec FreshRSS. Enfin dernier point, cela me permet de ne pas me poser la question de l’hébergement d’une solution NodeJS, qui nécessiterait un peu de travail de configuration pour arriver à une situation satisfaisante dans mon infrastructure auto-hébergée.

Commençons par quelques notes concernant la gestion de profils au niveau de l’utilitaire gcloud. En premier lieu, création d’un profil rsshub.

gcloud config configurations create rsshub

Voir le détail de la configuration active.

gcloud config list

Lister toutes les configurations de comptes disponibles.

gcloud config configurations list

Et enfin, activer la configuration rsshub.

gcloud config configurations activate rsshub

Passons ensuite à la préparation du déploiement de l’application. Pour cela, je créé un fichier app.yaml à la racine du projet afin de décrire la façon de déployer le programme sur la GCP et le configurer.

# [START app_yaml]
runtime: nodejs10
basic_scaling:
   max_instances: 1
network:
   forwarded_ports:
       - 80:1200
       - 443:1200
# environment variables section, refer to Settings
env_variables:
   CACHE_EXPIRE: '300'
   HTTP_BASIC_AUTH_NAME: '<username>'
   HTTP_BASIC_AUTH_PASS: '<password>'
#[END app_yaml]

Pour terminer, déploiement de l’application dans App Engine.

gcloud app deploy

À ce stade, je dispose donc d’un RSSHub agissant comme proxy entre mon lecteur de flux RSS et Instagram. Celui-ci est hébergé sur le cloud Google et la faible utilisation ne semble pas dépasser les paliers gratuits, ce qui n’est pas plus mal. RSSHub permet également de générer des RSS pour des comptes Twitter ou encore, pour des résultats de recherche leboncoin; la liste est plutôt bien fournie et semble aller en augmentant.

RSSHub est donc un programme que je trouve particulièrement intéressant pour ne plus dépendre d’un compte ou d’une application téléphone pour consommer du contenu. C’est un véritable gain sur bien des aspects, pour Instagram en tout cas, je note: pas de publicité dans le flux (sauf contenu sponsorisé d’un compte), possibilité de supprimer l’application, donc pas de tentation de l’utiliser pour passer le temps ou en cas d’ennui, pas de pistage (ou en tout cas, moins aisé). Au final, retour à un système qui me convient et que je maîtrise, où l’information arrive quand je l’ai décidé et sans essayer de me rendre accro.

[GCP] Logs du script exécuté au démarrage d’une VM sur Compute Engine

Pour référence, petite note sur la manière de consulter les logs d’exécution d’un script de démarrage attaché à une VM Compute Engine de la Google Cloud Platform (via l’option –metadata-from-file startup-script=<script>).

Sur Container-Optimized OS :

sudo journalctl -u google-startup-scripts.service

Sur les images Debian, CentOS, RHEL, SLES, Container-Optimized OS et Ubuntu :

sudo google_metadata_script_runner --script-type startup --debug

Référence: Exécuter des scripts de démarrage

[ArchLinux] unclutter

Petit pense-bête concernant l’intégration du programme unclutter à mon système ArchLinux. Ce programme ayant pour but de cacher l’affichage du pointeur de la souris après quelques secondes d’inactivité.

L’installation coule de source.

sudo pacman -S unclutter

Démarrage au lancement de la session graphique par ajout dans le fichier .xprofile de la ligne suivante :

# Hide the cursor when idle.
unclutter &

Mon curseur disparaît désormais au bout de quelques secondes. Je n’ai pour l’instant pas détecter de problème de fonctionnement ou de comportement perturbant de réinitialisation de l’emplacement du curseur, tels que mentionnés dans le wiki ArchLinux.

[ArchLinux] Nettoyage du cache pacman

J’ai constaté très récemment que la partition contenant mon système ArchLinux disposait de moins d’une dizaine de Go libre. N’ayant pas installé de jeux, ou de logiciels gourmands en espace disque, je me suis donc immédiatement intéressé à la taille du cache de pacman.

# du -sh /var/cache/pacman/pkg/
75G /var/cache/pacman/pkg/

La commande ci-dessus m’informe donc que le cache de pacman occupe un total de 75 giga. Je procède donc au nettoyage des anciennes versions des paquets, pour descendre à une taille plus raisonnable de 3,3 giga.

# sudo pacman -Sc
Paquets à conserver :
  Tous les paquets installés
Répertoire du cache : /var/cache/pacman/pkg/
:: Voulez-vous supprimer tous les autres paquets du cache ? [O/n] o
suppression des paquets obsolètes du cache…
Répertoire des dépôts : /var/lib/pacman/
:: Voulez-vous supprimer les dépôts non utilisés ? [O/n] o
suppression des dépôts synchronisés inutilisés…
# du -sh /var/cache/pacman/pkg/
3,3G /var/cache/pacman/pkg/

Pour réaliser ce nettoyage, on peut également utiliser le programme paccache :

# sudo pacman -S pacman-contrib
# sudo paccache -r
==> no candidate packages found for pruning

Une action à réaliser périodiquement pour éviter de se retrouver avec un cache gigantesque.

Citation [12] – Brandon Sanderson

Par conséquent, la destination importe-t-elle ? Ou seulement le chemin que nous empruntons ? Je déclare qu’aucune réussite ne possède de substance aussi grande que la route qui mène à elle. Nous ne sommes pas des créatures de destination. C’est le voyage qui nous façonne. Nos pieds calleux, nos dos renforcés d’avoir supporté le poids de nos voyages, nos yeux ouverts par le ravissement nouveau des expériences vécues.

La Voie des rois – Brandon Sanderson

And so, does the destination matter? Or is it the path we take? I declare that no accomplishment has substance nearly as great as the road used to achieve it. We are not creatures of destinations. It is the journey that shapes us. Our callused feet, our backs strong from carrying the weight of our travels, our eyes open with the fresh delight of experiences lived.

The Way of Kings – Brandon Sanderson