/ Raspberry Pi

Mon blog avec Ghost sur un Raspberry Pi

Ceci est l'histoire de quelqu'un qui n'a pas fait de backups, qui a tout perdu et qui a relancé son site et son blog sur de nouvelles bases.

Il y a un mois et quelques jours, la partition système du disque dur de mon serveur, un eeePC 1000h de presque 6 ans, auto-hébergé chez moi à la maison, s'est corrompu. Perdant ainsi tout mon serveur où se retrouve mon blog, mon lecteur de flux rss, jabber, etc... C'est parfaitement ce qu'une personne qui auto-héberge autant de choses redoute le plus.

Alors, oui, c'est ma faute, je n'ai pas fait de backup, ou disons que le dernier datait de presque 2 ans ! Curieusement, c'est la partie la plus négligé dans l'auto-hébergement et on ne trouve pas vraiment de solution simple et efficace sur le web. Disons le truc qui se met en place en 5 minutes chrono.

Heureusement, le dossier web était sur une autre partition, ce qui était déjà un gros soulagement, mais je perdais toute la base de donnée de mon blog sous WordPress... J'avais une vieille sauvegarde datant de 2011 dont je m'en suis servi de base et ensuite j'ai recréé les articles un à un et je remercie d'ailleurs Ohax pour son Autoblog.

Après est venue la question du serveur. Je ne souhaitais plus avoir quelque chose ayant un disque dur mécanique voir même un ventilo. C'est bruyant et ça fini toujours par casser, s'encrasser et ainsi de suite. Puis j'avais un Rapsberry Pi non utilisé sous la main, c'était l'occasion de voir si ça pouvait soutenir un blog.

Raspberry Pi

En réalité je souhaitais avoir un serveur sans ventilo, avec mémoire flash et à moindre coût. Je pensais fortement prendre la Cubieboard2 car je trouvais que le Raspi serait bien trop faible mais j'ai quand même essayé avec ce dernier pour déterminer mes besoins.

Donc j'installe Raspbian de façon très classique en pensant juste à mettre le minimum de mémoire vive pour la partie graphique. Je fais comme d'habitude en installant Apache, MySQL,.. Bref un serveur LAMP tout ce qu'il y a de plus basique. Ca roule plutôt bien. J'installe WordPress et je lui balance ma base de données et là... c'est LENT. Le pauvre Raspi galère vraiment avec un gros mammouth pareil.

La première chose que je fais, c'est de mettre à jour le firmware de la framboise en faisant :

sudo rpi-update

Ce qui améliore déjà pas mal niveau perfs.

Nginx

Ensuite, je me dis qu'il est temps de voir ce que vaut nginx en vue de remplacer Apache, surtout quand on voit ces tests comparatifs fait sur un Raspi ! Après un petit temps d'adaptation, pour comprendre comme il se configure, on peut dire que... ouais, franchement nginx explose Apache côtés performances ! Je vous invite fortement à migrer !

Son seul petit défaut est de ne pas comprendre les .htaccess d'Apache et donc de devoir préciser dans la configuration de nginx ce que les visiteurs peuvent avoir accès ou non.

Pour améliorer encore grandement la rapidité de nginx, pensez à activer la compression Gzip. Allez dans /etc/nginx/nginx.conf et modifiez la partie Gzip settings comme tel :

	##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    
   gzip_types
	application/x-javascript
    application/atom+xml
	application/javascript
    application/json
	application/rss+xml
    application/vnd.ms-fontobject
	application/x-font-ttf
    application/x-web-app-manifest+json
	application/xhtml+xml
    application/xml
	font/opentype
    image/svg+xml
	image/x-icon
	image/png
	image/gif
	image/jpeg
	text/css
	text/plain
	text/x-component;

Testez le avant/après sur GTmetrix, vous comprendrez :)

MySQL

Puis venait la question de MySQL. Sur un Raspi c'est juste pas possible. Ca bouffe trop de CPU, la carte SD est trop lente pour ça (cependant vous pouvez installer Raspbian sur une clé usb pour pallier à ce problème), les temps d'accès sont affreusement longs...

Bref, MySQL, c'est pas possible. Donc WordPress, c'est pas possible. Il me fallait un nouveau moteur de blog et j'ai choisi le petit nouveau dans l'arène : Ghost.

Ghost

Au début, mes possibilités étaient PluXml, BlogoText et Ghost. J'avais déjà longuement utilisé le premier et y revenir ne m'enchantait pas trop. Le second aurait été un bon choix mais il lui manquait ce petit côté fun, nouveau et avec une communauté super active derrière et clairement, Ghost c'était ça.

Ghost, comme le dit son slogan, c'est vraiment juste pour bloguer. Une fois installé et configuré, je vais dans l'interface et... je blogue quoi !

C'est tellement loin de WordPress qui à côté est une usine à gaz incroyablement lourde, complexe et visuellement chargée juste pour balancer un billet.

Ghost, c'est aussi un magnifique éditeur en Markdown avec un aperçu direct de ce que vous écrivez ou des photos que vous glissez-déposez. Sous WP, on passe pas mal de temps à se battre avec l'éditeur pour arriver au résultat que l'on souhaite et avec beaucoup de vérifications à chaque fois alors qu'ici... je blogue, c'est tout. Ca fait tellement plaisir de ne pas se casser la tête et de juste écrire ce qu'on veut écrire.

Au niveau de sa configuration ou des modifications que l'on veut faire niveau HTML ou CSS là aussi ça fait plaisir car il y a une sorte d'utilisation de fonctions que l'on peut utiliser partout et du coup tout est très simple, voir même intuitif.

De plus, pour le Raspberry Pi c'est parfait, ça consomme presque rien !

Si vous êtes blogueur, je vous invite fortement à tester Ghost rien que pour vous faire votre avis ! Vous pourriez l'aimer ;)

Il ne faut pas non plus oublier qu'il est à ses débuts et que beaucoup de surprises vont venir.

Je précise que je ne vais pas expliquer ici comment installer Ghost, c'est largement documenté sur le web mais je vais juste donner quelques petits trucs.

node.js et Raspi

L'un des trucs les plus embêtant pour installer Ghost sur le Raspi, c'est qu'il faut node.js et que la version dans les dépôts est trop ancienne.

Pour ça, faites ceci :

sudo wget http://node-arm.herokuapp.com/node_latest_armhf.deb

Puis :

sudo dpkg -i node_latest_armhf.deb

C'est tout !

Petit bug lors du login

Avec le Raspi, il y a un petit bug lors du login sur Ghost : ça prend beaucoup trop de temps dû à un algorithme de chiffrage.

Pour résoudre ça, allez ici.

Configuration pour nginx

Pour nginx, il est nécessaire de lui donner une configuration pour Ghost que voici :

server {
listen 0.0.0.0:80;
server_name sous_domaine.domaine.tld;
access_log /var/log/nginx/blog.log;

location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff|)$ {
    access_log off;
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
    proxy_pass http://127.0.0.1:2368;
}
location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header HOST $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://127.0.0.1:2368;
    proxy_redirect off;
}
	#attention, à ne mettre qu'après s'être soi-même inscrit
    location ~ /ghost/signup {
    deny all;
    return 404;
    }
}

Migration

Pour migrer ses articles de WordPress vers Ghost, il faut prendre ce plugin et de juste faire ce qu'ils demandent, ça prend 5 minutes pas plus.

Les commentaires

Un des plus "gros défaut" de Ghost, c'est qu'il n'incorpore pas la possibilité de mettre des commentaires sous les articles. Pour ça vous avez 2 choix : soit vous prenez Disqus, mais ça pue un peu, soit vous prenez Isso qui est un formidable petit programme à mettre pour les commentaires. C'est encore jeune mais ça fonctionne déjà très bien et son papa est très réactif sur Github ou sur IRC.

Son seul défaut c'est qu'on ne peut pas exporter directement les commentaires de WordPress vers Isso, il ne peut qu'importer une sauvegarde venant de Disqus. En tout cas pour le moment.

Mise à jour : la migration à partir de WordPress est maintenant possible.

Je n'ai pas très envie de détailler comment l'installer car je ne m'en souviens plus trop mais n'hésitez pas à me demander si vous n'arrivez pas :)

Agrégateur RSS

Un des trucs que j'ai aussi dû changer en passant au Raspi, c'est mon agrégateur RSS. J'utilisais Tiny Tiny RSS qui est affreusement lourd et utilisait MySQL.

Je suis passé à Selfoss qui est tout léger et tout sympa !

Configuration pour nginx ici.

Conclusion

Je suis très agréablement surpris de la combinaison du Raspberry Pi et de Ghost. Je ne pensais pas cette petite machine capable de tenir tout un serveur web avec multiple services. Mais avec les bons outils (et surtout sans les gros lourds) ça se passe vraiment très bien.

Bien contant d'avoir viré WordPress et MySQL et maintenant bloguer est un vrai plaisir !

Puis maintenant pour les backups, je fais simplement une image de la carte SD de temps en temps.

J'espère vous donner envie d'essayer ça chez vous et si vous avez besoin d'aide, n'hésitez pas à me demander dans les commentaires ou par emails !

Neros

Neros

Étudiant en Physique à l'Université de Strasbourg

Read More