Le blog de Passionaqua

Mon p'tit chez moi où je raconte des p'tites choses

Les commentaires sur un site statique : Isso ?

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité. NB: ce moteur de commentaire n'est plus utilisé chez moi.

Et oui ! Quand on passe à un blog statique, on a bien évidemment plus de gestion "automatisée" des commentaires ! Il y a alors plusieurs choix qui s'offrent à vous :

  • Vous laissez une adresse mail à laquelle les visiteurs vous laissent un commentaire, et vous le mettez manuellement sur le billet concerné.
  • Vous installez une solution qui aime beaucoup les données de vos visiteurs comme Disqus.
  • Vous faites comme moi, et beaucoup d'autre, vous installez une solution qui respecte la vie privée de vos visiteurs.

Mon choix s'est donc tourné vers Isso, un serveur de commentaires en Python créé par Martin Zimmermann.

Capture d'écran de Isso
Exemple d'utilisation d'Isso

Qu'est-ce qu'a Isso dans le ventre ?

Isso c'est :

  • Léger
  • Des commentaires en Markdown
  • La possibilité de poster anonymement
  • Une base de données en SQLite, argument du développeur : « Les commentaires ne sont pas de grandes données »
  • Pas fait pour des sites à très fort trafic, genre 01Net, nop nop nop : à voir plus bas, il est préférable d'avoir, malheureusement, une instance Disqus.

L'utilisation d'Isso peut perturber au début, mais une fois pris en main et bien configuré, vous pouvez presque l'oublier !

Installation de Isso

Pour l'installer, c'est plutôt simple : c'est du Python, on fait simplement appel à PyPI ! Vous pouvez trouver la documentation officielle, en anglais, en cliquant ici.

Il faut quelques outils utiles à Python et à la compilation d'outils annexes, dans un premier temps :

apt-get install python-setuptools python-virtualenv python-dev sqlite3 build-essential #commande à exécuter sous root

Puis on crée l'environnement virtuel :

virtualenv /chemin/ou/vous/voulez/installer/isso
source /chemin/ou/vous/voulez/installer/isso

Il faut ensuite passer par pip :

pip install isso

On peut créer un symlink si vous le désirer, pour pouvoir lancer plus facilement Isso si besoin :

ln -s /chemin/vers/isso /usr/local/bin/isso #Commande à exécuter sous root

Pour faire une mise à jour, elles sont publiées régulièrement (entre autre quand vous faites remonter des bugs sur le Github du projet), il suffit de re-rentrer dans l'environnement, puis de faire appel à pip :

source /chemin/vers/linstallation/isso
pip install --upgrade isso

Configuration d'Isso

La configuration d'Isso repose sur un fichier au format INI. Pour ma part, après avoir lue la partie configuration du site officiel, j'ai fait ma petite sauce.

Voici donc mon fichier isso.cfg, je l'ai commenté donc il devrait être compréhensible :

[general]
; Le chemin vers la base de donnée SQLite, si le fichier n'existe pas il sera créé
dbpath = /home/pi/isso/blog.passionaqua.me.comments.db

; Le nom de l'instance Isso
name = blog.passionaqua.me

; Les noms de domaines autorisés : mes adresses de tests, et l'adresse du blog
host =
    http://localhost:5001/
    http://192.168.1.12:5001/
    http://blog.passionaqua.me/

; Je veux recevoir les notifications par EMAIL (pour avoir les liens de suppression entre autre)
notify = smtp

; Le temps de modification autorisé d'un commentaire, par son auteur
max-age = 1h

[moderation]
; Si activé, il faudra que vous validiez les commentaires pour qu'ils soient publics.
enabled = false

; Purger les non-validés au bout de 30 jours, dans ce cas inutile, puisqu'ils sont tous validés par défaut.
purge-after = 30d

[guard]
; Permet de limiter des actions par IP : un antispam simple on va dire.
enabled = true
ratelimit = 3
direct-reply = 3
reply-to-self = true

[smtp]
; Cette partie est simple : ce sont les paramètres d'accès pour SMTP.
username = w*****@passionaqua.me
password = MOTDEPASSE
host = mail.gandi.net
port = 465
security = ssl
to = w*****+commentairesblog@passionaqua.me
from = w*****@passionaqua.me
timeout = 10

Vous devez donc avoir un fichier de configuration similaire au mien à présent, je vous conseille aussi de lire la section à props de la configuration du serveur pour pouvoir ajouter ou modifier si besoin des paramètres !

Importation des commentaires de votre ancien blog

Quelque chose de bien sympa, vous pouvez importer les commentaires de Disqus ou Wordpress au format XML !

Je n'en ai pas eu besoin personnellement, n'ayant pas de commentaires au format XML. Et j'avais un peu la flemme de retranscrire les 5 commentaires que j'avais en XML. :p

isso -c /chemin/vers/isso.cfg import disqus-or-wordpress.xml

Lancement d'Isso

Le lancement est simple, suffit de lui demander de se lancer !

isso -c /chemin/vers/isso.cfg run

Ensuite, il faut rendre Isso accessible depuis l'extérieur. Pour cela, la documentation nous propose de faire un proxy NGinx, ayant un serveur NGinx je n'ai pas hésité plus longtemps !

En effet, Isso repose sur le contrôle d'accès HTTP, d'où le fait de mettre une liste de host autorisé dans la configuration d'Isso !

Il faut donc créer un host spécial, pour moi c'est commentaires.passionaqua.me : il vous faut créer un sous nom de domaine chez votre Registrar (ou hébergeur de vos DNS) qui pointe sur votre serveur où Isso est installé, etc. Ensuite, j'ai donc créé un fichier /etc/nginx/sites-available/commentaires.passionaqua.me :

server {
        listen 80;
        server_name commentaires.passionaqua.me;

        location / {
                proxy_pass http://localhost:8080;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-Proto $scheme;
        }
}

proxy_pass a pour valeur localhost:8080, parce qu'Isso écoute par défaut sur le port 8080. Il faut activer votre nouveau host, en faisant un lien : ln -s /etc/nginx/sites-available/commentaires.passionaqua.me /etc/nginx/sites-enabled/commentaires.passionaqua.me.

Intégration

Et pour finir : on intègre un p'tit bout de code à la fin de votre template qui gère les billets.

<script data-isso="//comments.example.tld/"
    src="//comments.example.tld/js/embed.min.js"></script>

<section id="isso-thread"></section>

Il faut penser à modifier les URL dans le code, pour les faire pointer sur votre Isso à vous.

Utiliser Isso

L'utilisation d'Isso est assez spéciale, je parle ici de la partie modération. En effet, Isso est très léger et assez jeune : il ne comporte pas de panel admin, même si l'idée est dans les cartons du développeur. Ce sera peut-être pour un jour ? :D

Anyway, vous avez dû le remarquer, dans ma configuration j'ai décidé de recevoir une notification par mail, pour pouvoir recevoir les urls pour supprimer, si besoin, un commentaire n'ayant pas d'utilité (genre un truc sur le Viagra).

Capture d'écran d'un mail
Exemple de mail

Voilà donc le genre d'email que vous pouvez obtenir, vous apercevez dans l'ordre :

  • Le nom avec l'adresse mail (s'ils ont été fourni),
  • Le commentaire posté,
  • L'adresse du site de l'auteur, si elle a été fourni,
  • L'adresse IP de l'auteur,
  • Le lien pour aller voir le commentaire sur le site,
  • Le lien pour supprimer le commentaire.

Pour aller plus loin

Concrètement, si vous allez sur votre site Internet, vous devriez pouvoir voir un formulaire de commentaire s'ouvrir. Vous pouvez le personnaliser, notamment via les attributs data-isso. Ce système est expliqué dans la documentation ici. Ensuite, il faut que Isso se lance à chaque démarrage de votre serveur, pour cela il suffit de faire un init script, moi j'ai une façon de le faire assez sommaire donc je ne vais pas vous en parler, mais vous avez de bons exemples ici. Pour une utilisation d'Isso sur un serveur à fort trafic, le développeur conseille d'avoir une vraie interface web, il explique tout ça ici.

J'espère avoir réussi à vous présenter ce serveur de commentaires, que je trouve vraiment sympathique : il est léger, rapide et fait ce qu'on lui demande. :)

Mon passage à PyKwiki

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité. CE BLOG N'UTILISE PLUS CE MOTEUR DE RENDU, mais je laisse quand même une trace de mes anciens écrits.

Voilà, c'est maintenant fait. Je suis passé à un format statique pour mon blog. L'intérêt est multiple : pour moi, je trouve ça juste plus fun, mais ça me permet aussi de réduire la charge serveur au niveau du blog. Je vais peut-être pouvoir déplacer mon blog dans ma chambre, sur mon Raspberry Pi !

Donc ton blog, il tourne avec quoi là ?

Concrètement, juste un serveur HTTP. Pour ce faire, j'utilise PyKwiki, que j'ai découvert grâce à Julien Biaudet, qui a migré son blog Hal-9000.fr sous ce moteur de blog.

Utilisation de PyKwiki

PyKwiki, c'est simple : vous écrivez vos articles en Markdown puis vous exécutez PyKwiki qui génèrera le site HTML.

Il faut commencer par installer PyKwiki avec un simple # pip install pykwiki, ensuite il faut créer son projet avec $ pykwiki new TonProjet. Cette commande va créer l'environnement de base de votre projet.

Par la suite, il suffit d'aller dans le dossier créé TonProjet si on reste avec l'exemple. L'architecture est assez simple :

  • un dossier docroot/, qui est la racine à mettre sur Internet. Vous pouvez uploader le contenu du dossier sur un serveur, ou configurer un VirtualHost (ou autre, selon le serveur) qui pointe sur ce dossier.
  • un dossier source/, dossier qui contiendra vos fichiers .md, c'est-à-dire vos billets. Je vous conseille de nommer les fichiers en y indiquant la date, ça pourrait être plus pratique pour s'y retrouver.
  • un dossier themes/, qui contient le thème par défaut de PyKwiki. Je vous parle plus bas des thèmes.
  • Trois fichiers de configuration config.yaml, links.yaml et social.yaml. Ces trois fichiers servent simplement à configurer différents aspects de PyKwiki, comme les titres, descriptions, extension de fichiers, le menu et les différents liens sociaux.

Je vous fait part de mon petit problème avec Vim, qui ne me faisait pas du markdown syntax highlight pour les fichiers en .md, puisqu'il le fait par défaut que sur les .markdown. Il suffit de faire un :set syntax=markdown ou plus généralement d'éditer le .vimrc en y ajoutant cette ligne :

au BufRead,BufNewFile *.md set filetype=markdown

Configuration de PyKwiki

Les paramètres par défaut devrait fonctionner, mais c'est plus sympa d'avoir quelque chose de propre à soi même ! Concernant le fichier config.yaml je n'ai pas modifié grand chose à part author, description, keywords et title.

Pour avoir la page d'accueil avec la liste des posts, il faut initiliser home_page avec posts.html.

Concernant links.yaml, la structure est très simple : le nom du lien à afficher, le type d'URL (si c'est un post, mettre post: NomDuPost ; une adresse, href: /cequejeveux.html). Je vous laisse vous référer à la documentation sur links.yaml pour plus d'options.

Ensuite, pour social.yaml c'est assez simple à remplir, il suffit de remplacer la valeur null en face des variables que vous souhaitez remplir, ce qui donne par exemple twitter_name: passionaqua dans mon cas. À noter que l'on peut renseigner des IDs Google Analytics, il serait intéressant de voir s'il est possible de modifier tout ça pour avoir Piwik à la place !

Les thèmes

Pour les thèmes, c'est simple, jetez un oeil sur la page les mettant en avant sur le site officiel, choisissez en un et faite un simple $ pykwiki theme install <nom du thème>. Il faut penser ensuite à modifier config.yaml pour sélectionner le thème !

Pour exécuter PyKwiki, il suffit de faire $ pykwiki cache. Vous pouvez visualiser rapidement le résultat en faisant fonctionner un serveur HTTP Python : dans le dossier docroot/ exécuter $ python -m SimpleHTTPServer 5000 puis se rendre à l'adresse http://localhost:5000/.

Voilà c'est tout pour moi, je vous laisse jeter un oeil sur le site de PyKwiki pour de plus larges informations. :)

Un client mail : Mutt

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité.

Bonjour à tous !

Cela fait un millénaire que l'on me dit sur les chans IRC ou les muc XMPP que Mutt ça rox du poney. Je veux bien croire ces personnes, mais d'abord je dois me convertir !

On ne change pas ses habitudes en claquant des doigts, même si je suis habitué à une interface en ligne de commande. :D

Qu'est-ce que Mutt ?

Mutt.png
Capture d'écran de « Mutt ».
Sous licence GPL via Wikimedia Commons.

Mutt est un client mail créé en 1995 par Michael Elkins et est publié sous licence GPLv2+ (GPLv2 et supérieure). Ce client mail s'utilise comme je l'ai dit plus haut, dans votre terminal. Il supporte nativement la plupart des protocoles ainsi que GPG/PGP et maildir. Je vous laisse voir par vous même sur le site officiel ou sur la page Wikipédia pour de plus amples informations. :)

Pourquoi ne pas avoir changé de client mail plus tôt ?

La réponse est simple : qui aujourd'hui n'a qu'une seule boîte mail ? C'est très loin d'être mon cas. Le multi-comptes avec Mutt est possible, mais assez difficile à mettre en place si on ne trouve pas de tutoriel qui correspond aux versions récentes de Mutt (il existe des tutos qui datent de 2005, je ne sais pas si vous voyez ô comment c'est utile). Bref, après avoir remué toute la toile à la recherche d'un tutoriel ou de quelques informations qui pourraient m'aider, j'ai enfin trouvé bonheur ! Du coup, je viens partager ma découverte avec vous. :D

Dans un premier temps, il faut installer Mutt (sans blague !) via votre gestionnaire de paquets, ou toute autre manière.

# apt-get install mutt

Vous pouvez dans votre terminal lancer Mutt en l'appelant tout simplement par son nom : $ mutt. Il devrait normalement ronchonner ou essayer d'ouvrir les maildirs : c'est normal, rien n'a été configuré !

Pour configurer la bête, il faut utiliser des fichiers de configurations. Par défaut, Mutt va vouloir charger le fichier ~/.muttrc. Ouvrez ou créez ce fichier et rentrez ces informations :

#Folder hooks, ce sont vos différentes boîtes mails
folder-hook 'adrienpassionaqua.me' 'source ~/.mutt/adriepassionaqua.me'
folder-hook 'contactpassionaqua.me' 'source ~/.mutt/contactpassionaqua.me'

#On set les macro, pour pouvoir basculer entre les boîtes !
# <f2> et <f3> correspondent aux touches que j'ai attribué
macro index <f2> '<sync-mailbox><enter-command>source ~/.mutt/adrienpassionaqua.me<enter><change-folder>!<enter>'
macro index <f3> '<sync-mailbox><enter-command>source ~/.mutt/contactpassionaqua.me<enter><change-folder>!<enter>'

#Ensuite on choisi quelle boîte devra être chargée par défaut :
source ~/.mutt/adrienpassionaqua.me

Pensez à modifier les noms de fichiers pour qu'ils correspondent à vos comptes, ici j'ai pris user+domain pour les reconnaître facilement.

Ensuite, le travail consiste à configurer les boîtes mails : il faut créer le dossier ~/.mutt ainsi que les fichiers que vous avez mis dans le muttrc. Voici ce que cela donne pour ~/.mutt/adrienpassionaqua.me :

color status cyan default #Correspond au thème utilisé pour cette boîte, pour mieux les distinguer.

# IMAP
set imap_user = '__USER__'
set imap_pass = '__PASSWORD__'
set folder = imaps://mail.gandi.net:993/
set realname = "Adrien ______"
set from = "tonmail@machin.tld"
set use_from = yes
set spoolfile = "+INBOX"
set postponed ="+Drafts"
set record = "+Sent"
set trash = "+Trash"

#Si vous utilisez PGP, pour fournir votre clef.
set my_header = "X-PGP-Key: http://passionaqua.me/public.asc"

# SMTP
set smtp_url = "smtp://user%40passionaqua.me:__PASSWORD__@mail.gandi.net:587"

L'exemple montre une connexion sur un compte chez Gandi. :)

Pour configurer votre deuxième compte, faite de même (ou à peu près, suivant les fournisseurs mails, je vous laisse regarder sur Internet pour le comment faire. Vous pouvez utiliser la couleur : color status green default pour vous y retrouver. :)

À présent, si vous lancez Mutt, en appuyant sur la touche F3 et F2 vous pourrez changer de boîte presque instantanément. :)

Voilà pour cet article, je n'ai pas fait à vrai dire un article "clef en main" pour utiliser Mutt, mais j'ai montré comment on peut faire un multi-comptes dans Mutt.

Source qui m'a aidé à faire mon multi-comptes chez moi : https://gist.github.com/miguelmota/9456162

Projet : fabriquer un commutateur audio pour choisir entre deux entrées et deux sorties audio

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité.

Bonjour à tous !

Je viens vous présenter le petit projet que je vais réaliser d'ici quelque jours, le temps que mes parents me commandent les pièces dont j'ai besoin ou que je les trouve moins cher en magasin.

Mon projet est assez simple : je souhaite tout simplement pouvoir choisir simplement en commutant deux interrupteurs l'entrée et la sortie audio pour un ... flux audio (logique non ? :D ).

Mon utilisation est assez basique, j'ai deux entrées : Sortie audio ordinateur (jack 3.5mm) Sortie audio Raspberry Pi (jack 3.5mm) et deux sorties possibles : Hauts-parleurs Casque-audio

L'idée est que je dois pouvoir simplement écouter la musique diffusée par mon RPI (via MPD) sur mes hauts-parleurs qui sont en temps normal branchés à mon ordinateur. Le problème actuel, c'est que je dois à chaque fois débrancher le jack du pc pour le brancher sur celui du Raspberry Pi, et ce n'est vraiment pas pratique. De même, si je veux passer simplement des hauts-parleurs au casque, par exemple quand on m'appelle sur mon ordinateur, je veux être capable de passer directement sur mon casque facilement.

Pour faire tout ça, j'ai cherché sur Internet pour voir si des objets répondant à mon besoin existaient. Oui, c'est le cas, mais il y a très peu de choix et la plupart coûte assez cher. En plus, parfois ils ne gèrent pas toutes les fonctionnalités que je demande. Résultat : je suis allé me renseigner en tapant la fameuse demande à Google Startpage : "How to make a 3.5mm audio switch"

J'ai obtenus divers résultats, dont quelques uns sur de vieux forums pas très à jours, et surtout des résultats sur le site dont j'ai fait la découverte, un site où l'on trouve des merveilles quand on cherche à se débrouiller avec des tutos sur différentes thématiquesInstructables : visiblement des personnes sont dans le même problème que moi. Il doit bien y avoir une dizaine de tutos sur le site, dont celui-ci où ElKinesis a fait un petit montage avec des Lego® ou encore celui-la où r00tdemon a fait son installation dans une boîte à bonbons.

Pour ce qui suit, si des noms de composant vous pose problème, je vous conseille de vous référer à une autre source comme Wikipedia, ou tout simplement de lire si vous le pouvez les tutos des liens ci-dessus.

Pour faire cela, ils ont simplement eu besoin de trois embases jack 3.5mm (2 entrées 1 sortie) et d'un switch DPDT (Double Pole Double Throw) ce qui correspond en France à un commutateur 2xOn/Off/On ou 2xOn/On selon les utilisations. Le commutateur permet de basculer l'électricité d'un pôle a un autre, selon son montage. Ci-dessous, les rectangles en pointillés sont des DPDT. À l'achat il faut bien faire attention à l'embase : en effet, il existe des embases en mono, qui n'ont que deux pôles (courant et la terre), or en stéréo les embases ont trois pôles (+, - et la terre). Il faut aussi faire attention au switch, en France le DPDT correspond à un 2On/On ou 2On/Off/On, le 2 a toute son importance sinon il sera impossible de faire du stéréo, à moins d'utiliser deux switchs simple, mais je ne l'expliquerai pas.

Ayant des besoins différents, je me suis tout de même inspiré des liens mentionnés pour donner ce schéma :

Schéma de montage

A_1 correspond au flux droit (ou gauche, n'importe) de l'embase A, A_2 à son copain de gauche, B suit la même logique. C et D sont les sorties, qui suivent encore ici la même logique.

Attention quand même au branchement des embases de sorties, il faut penser à ne pas inverser les flux de gauches et de droites ! Un flux pris à "gauche" de l'input doit aller à "gauche" de l'output ! Sinon vous risquez d'avoir quelques surprises ^^

Voilà, je n'ai plus qu'à me fournir en matériel et je réalise ce montage !

RainLoop, un webmail à la maison, tout beau.

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité.

Bon, cela fait très longtemps que je m'étais dit, faudrait que j'en parle ! Je me lance.

Screenshot de Rainloop

RainLoop, je l'ai installé il y a deux semaines. Je dois vous dire, qu'habituellement je ne suis pas fan des webmails, je préfère encore mon bon vieux Thunderbird avec mes réglages aux petits oignons pour gérer mes mails.

Mais là, je découvre un webmail que j'aime : il permet de gérer tout ce dont je voulais, ou presque : multi-comptes et PGP/GPG. J'adore.

Concrètement, RainLoop est un webmail fonctionnant à l'aide de PHP (>= 5.3 et cURL, iconv, json, libxml, dom, openssl, DateTime, PCRE et SPL), RainLoop a été conçu pour fonctionner assez bien sur les petites configurations (Raspberry Pi par exemple). Pour ma part, c'est sur ce dernier que ce webmail séjourne, et ça rox du poney. Voir les features sur le site officiel Les mails ne sont pas stockés dans le webmail, la bête fonctionne en contact direct avec le serveur mail de votre boîte. RainLoop comporte aussi un système de cache, pour éviter de surcharger votre connexion et celle de votre serveur mail.

Le panel admin est assez simple d'utilisation, pour ajouter une boîte mail (en réalité, il s'agit d'un serveur mail) il faut aller dans l'onglet « Domains » puis ajouter un domaine comme sur l'image ci-dessous :

Screenshot de Rainloop

Pour l'instant je l'utilise surtout quand je ne suis pas chez moi, donc majoritairement au lycée. :)

Fil RSS des articles