MouTonLibre

10 commentaires

J'ai failli appeler cet article « Bozon, c'est bon. Mangez-en ! » ou « Bozon, c'est pas de la bouse ! », mais voyez que j'arrive encore à me retenir... Toujours est-il que l'idée est là : BoZoN, dont j'ai appris l'existence par Cyrille, est un logiciel plutôt exceptionnel.

Du fait que j'auto-héberge mes services web sur Raspberry et que je débute dans ce domaine, j'ai besoin de services légers, faciles d'accès et facilement maintenables. Au contraire d'un Owncloud tendant vers l'usine à gaz (CozyCloud étant exclu car mono-utilisateur), BoZoN est une plateforme de stockage et partage de fichiers très minimaliste. Tout fonctionne sans base de données et repose uniquement sur le parcours de l''arborescence des dossiers utilisateurs et la création de liens de partage uniques, permettant une gestion complète (installation, sauvegardes, mises à jour, etc.) via de simples copier/coller. Et c'est le pied.

Je ne vais pas faire l'étalage de toutes les fonctionnalités ici, vous les retrouverez sur le site officiel, mais le seul manque éventuel est l'impossibilité de synchroniser des dossiers afin d'effectuer des sauvegardes facilement. Mais on finit par se faire aux *.zip.

Maintenant passons aux choses sérieuses. Premièrement, afin d'avoir un espace de stockage adapté au cloud (la carte SD du Raspberry étant un peu limite...), j'ai acheté un disque dur externe de 1.5 To. Ce qui laisse quand même pas mal de marge... À noter que ce disque dur est alimenté via une prise secteur, indispensable dans le cas d'un branchement sur Raspberry puisque ce dernier ne délivre nativement pas assez de puissance pour alimenter un disque dur via les ports USB. Afin que le disque dur soit monté automatiquement au démarrage du Raspberry, il faut rajouter une ligne au fstab. Pour cela, vous pouvez dans un premier temps brancher et monter votre disque dur puis copier la ligne correspondante dans le fichier /etc/mtab pour la coller dans le fichier /etc/fstab. Attention cependant, il est nécessaire de faire quelques adaptations. Dans mon cas, il a fallu modifier :

  1. l'identifiant de l'utilisateur à uid=33 pour qu'il corresponde à www-data ;
  2. l'identifiant du groupe à gid=33 pour qu'il corresponde également à www-data ;
  3. le point de montage vers l'emplacement sur le serveur ;
  4. le driver en ntfs-3g (et non ntfs) afin de pouvoir avoir accès en écriture au disque dur.

Ce qui donne finalement une ligne de ce type dans mon cas :

/dev/sda1 <emplacement sur le serveur> ntfs-3g rw,relatime,uid=33,gid=33,fmask=0177,dmask=077,nls=utf8,noserverino,errors=continue 0 0

Maintenant que le disque dur est monté automatiquement au démarrage, il ne reste plus qu'à installer BoZoN ! Pour cela, seules quelques étapes sont nécessaires.

  1. Téléchargez l'archive.
    wget https://github.com/broncowdd/BoZoN/archive/master.zip
  2. Décompressez l'archive (unzip est une dépendance à BoZoN, à installer au préalable).
    unzip master.zip
  3. Copiez le dossier vers la racine de votre site.
    cp -R BoZoN-master/* <emplacement sur votre serveur>
  4. Ajoutez la configuration Nginx suivante. (Attention à mettre à jour les différents champs.)
    server {
    	listen 80;
    	listen [::]:80; #ipv6
    	server_name <nom de domaine>;
    	return 301 https://$server_name$request_uri;
    }
    server {
    	listen 443 ssl;
    	listen [::]:443 ssl; #ipv6
    	server_name <nom de domaine>;
    
    	index index.php;
    	root <emplacement sur votre serveur>;
    	client_max_body_size XXXXM; # XXXX à remplacer avec la taille maximale autorisée pour l'envoi de fichiers. Attention à actualiser le fichier php.ini également.
    
    	location ~ \.php$ { 
    		try_files $uri = 404;
    		fastcgi_pass unix:/var/run/php5-fpm.sock;
    		include fastcgi_params;
    		fastcgi_intercept_errors on;
    		fastcgi_param HTTPS on;
    		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    	}
    
    	# On protège certains dossiers.
    	location / {
    		location ~ (uploads|private|thumbs) {
    			deny all;
    		}
    		location ~ core {
    			deny all;
    			location ~* \.js$ {
    				allow all;
    			}
    		}
    	}
    
    	# Configuration HTTPS
    	ssl_certificate <emplacement du certificat>;
    	ssl_certificate_key <emplacement de la clé>;
    	ssl_trusted_certificate <emplacement de la chaîne de contrôle de l'autorité de certification>;
    
    	ssl_protocols TLSv1.2;
    	ssl_ecdh_curve secp384r1;
    
    	ssl_ciphers EECDH+AESGCM:EECDH+AES;
    	ssl_prefer_server_ciphers on;
    
    	resolver 80.67.169.12 80.67.169.40 valid=300s;
    	resolver_timeout 5s;
    	ssl_stapling on;
    	ssl_stapling_verify on;
    
    	ssl_session_cache shared:SSL:10m;
    	ssl_session_timeout 5m;
    	ssl_session_tickets off;
    
    	add_header Strict-Transport-Security "max-age=15552000; includeSubdomains; preload";
    }
    
  5. Relancez Nginx.
    service nginx reload

Rendez-vous sur votre site avec votre navigateur préféré, et il ne vous reste plus qu'à vous connecter ! À noter qu'à la première connexion, il vous sera demandé de créer le compte administrateur.

Le petit plus que j'apprécie vraiment est que suite à la copie de ma bibliothèque musicale sur BoZoN, je peux maintenant l'écouter n'importe où grâce au lecteur intégré. Allez si je peux me permettre une suggestion, il serait vraiment génial de pouvoir créer des playlists... La création de liens symboliques dans un dossier via BoZoN ne pourrait pas être envisageable ? ;)

À noter que, du fait de mon amateurisme, il se peut que la configuration de Nginx soit perfectible. BoZoN est prévue pour fonctionner de base avec Apache, et la configuration que je vous ai donnée relève du bricolage. N'hésitez donc surtout pas à me faire part de vos remarques.

35 commentaires

Le fait que vous pouvez lire ce texte aujourd'hui ne repose que sur une seule raison.

Comme tout lecteur de blog, vous vous attendez certainement à ce que cette raison soit une envie de partage, le besoin d'une fenêtre afin d'exprimer publiquement ses opinions, le désir d'un espace d'échange, mais non ce n'est pas la raison principale. Disons que ces divers aspects sont en quelque sorte la cerise sur le gâteau. Assez de suspens maintenant, la principale raison est tout simplement... Le challenge !

De nos jours, ouvrir un blog n'est cependant pas un challenge en soit. En quelques clics, il est possible de s'acheter un espace sur bien des hébergeurs ou même des fournisseurs d'accès à internet. Mais le challenge que je me suis fixé est d'auto-héberger quelques services internet. Pas question d'utiliser un serveur chez un tiers, je dois le voir, le toucher et pouvoir brancher un clavier et un écran dessus. Ce n'est pas la solution la plus simple, la plus sécurisée aussi, de s'offrir un espace sur le web, mais elle a le mérite de forcer l'apprentissage. La lecture de tutoriels ou diverses documentations ne remplacera jamais l'expérience. Sans mettre les mains dans le cambouis, il est impossible de savoir si l'on est capable de le faire ou non. Voilà la vraie raison de l'ouverture de cet espace.

L'objectif initial reposait donc sur quatre choses :

  • disposer d'un serveur à domicile ;
  • ouvrir un blog ;
  • proposer un espace de cloud pour les proches ;
  • le tout devant être basé sur des technologies libres.

Pour cela, et comme un serveur est destiné à rester allumer 24h/24 et 7 jours/7, il est essentiel que la consommation électrique et la pollution sonore soient réduites à leur strict minimum. Les nano-ordinateurs à processeur ARM remplissent parfaitement ces critères. Si les premières versions de ces cartes avaient des ressources trop limitées pour servir de serveur, les nouvelles générations peuvent satisfaire la majorité des besoins. Pour un blog et un espace de cloud personnel limité à quelques utilisateurs, cela est amplement suffisant. Le Raspberry Pi 2 Model B, bien que pas forcément la carte la plus puissante, a la force d'être soutenu par une immense communauté. Ainsi il est très facile de trouver des ressources pour configurer un serveur grâce à un Raspberry Pi.

La configuration du serveur a été réalisée grâce à l'excellente documentation de mon Thuban adoré (qui sera, je n'en doute pas une seconde, le premier à déposer un commentaire sur ce blog). Cela consiste en l'installation d'une version minimale du système d'exploitation Raspbian (Debian pour Raspberry Pi), puis en l'installation progressive des différents services nécessaires à un serveur.

Les ressources d'un Raspberry étant limitées, il était impossible d'installer des usines à gaz comme système de gestion des contenus. Pour le blog, j'ai suivi les conseils de Thuban et j'ai installé BlogoText développé par Timo van Neerden. Ce moteur, actuellement en version 3.2.8, a l'avantage d'être très léger et de proposer un ensemble de services nécessaires à l'activité de blogueur (partage/sauvegarde de liens, partage de fichiers, micro-blogging, lecteur de flux rss, etc.). Tout repose sur une base de donnée SQLite qui n'agit que sur un fichier, ce qui facilite grandement les sauvegardes. J'utilise ce moteur dans l'ombre depuis quelques temps et je dois dire que j'en suis très satisfait. Le seul petit manque serait une gestion des pages statiques afin de réutiliser facilement le template du blog. Timo si tu m'entends... ;)

Pour le cloud personnel, j'ai longtemps hésité à vrai dire. Quand on parle de cloud dans le monde du logiciel libre, le premier nom qui vient à l'esprit est Owncloud. Ce logiciel, très complet, est certainement trop lourd pour une utilisation sur un Raspberry Pi. Je ne dis pas que c'est impossible, mais le choix d'un Raspberry Pi entraîne la recherche de logiciels minimalistes. Plus qu'une restriction imposée par le matériel, c'est aussi un choix (dicté par le principe KISS). Cozy ne disposant pas de fonctionnalités multi-utilisateurs, ce choix a également été mis de côté. Sans d'autres alternatives à ma connaissance il y a quelques semaines, Owncloud s'avérait être le choix par défaut. Mais voilà que le blogueur le plus radical (par ses avis plus que tranchés mais respectables) du logiciel libre, j'ai nommé Cyrille Borne, a jeté son dévolu sur un petit logiciel inconnu au doux nom de BoZoN. Après un déferlement de remarques comme lui seul peut le faire, Bronco a su tenir bon sous la charge de travail et a fournit une magnifique version 2.4. Après une installation des plus simples et l'ajout d'un disque dur externe de 1.5 To à mon Raspberry, je suis maintenant en mesure de proposer un espace de cloud gratuit à ma famille. Et autant le dire tout de suite, ça marche du tonnerre. :)

Les petites technologies libres rendues disponibles par des personnes avides de partage, mises bout à bout grâce à la volonté de certaines personnes de vouloir transmettre leur savoir, permettent à des petits gars comme moi sans bagage initial en informatique d'installer leur propre espace web.

C'est ça la magie du libre.