Sans faire très long voici deux liens intéressants pour travailler sous la distribution Linux Debian. Notons que la Raspbian pour le Rapsberry Pi est à base de Debian.

Pour commencer, un PDF intitulé « Debian sans se prendre la tête » : il est un résumé efficace de tout ce qu’il faut savoir pour commencer à configurer une Debian sans problème.

Pour aller plus loin, il y a le « Cahier de l’administrateur Debian« , mis à jour avec la Debian Jessie, traduction du « Debian Administrator Handbook« , pour ceux qui le préfèrent dans la langue de Shakespeare.

Donc deux bons documents à connaître !

Une nouvelle version de la distribution Raspbian vient de sortir, version du 10 mai 2016.

Quoi de neuf dans cette nouvelle mise a jour ? Un bref résumé, sans entrer dans les détails :

  • amélioration du Bluetooth et de l’interface de gestion, support à présent du Bluetooth audio
  • la possibilité de copier toute la carte SD système vers une autre carte SD : pratique pour créer une sauvegarde / un clone de notre système à un instant t.
  • une nouvelle bibliothèque pour gérer l’accès aux broches GPIO, et facilité la programmation. Parmi les idées intéressantes : plus besoin de lancer les programmes python en sudo pour utiliser le GPIO. La bibliothèque : pigpio de abyz.co.uk
  • intégration de l’éditeur de texte geany, mon éditeur de base depuis très longtemps
  • mise à jour de pas mal d’applications et du noyau linux
  • le truc manquant depuis si longtemps : on peut vider la corbeille en faisant un clic droit dessus ; Il y a enfin cette option dans le menu contextuel !
  • A l’installation, quelques petites nouveautés dont par exemple le fait qu’au premier boot, le système s’étend pour occuper toute la carte SD, plus besoin de le faire à la main

Pour mettre à jour, comme d’habitude :

sudo apt-get update
sudo apt-get dist-upgrade

Pour installer les autres softs supplémentaires :

sudo apt-get install piclone geany usb-modeswitch python-pigpio python3-pigpio

Liens :

logo_seafileL’objectif de cet article : installer un serveur de fichiers sur mon Raspberry Pi pour me permettre de synchroniser des documents entre plusieurs ordinateurs.

Au départ je voulais me tourner vers Owncloud, mais c’est trop lourd, et ça fait un tas de choses dont je n’ai pas utilité pour le moment.

Seafile est plus léger et fait parfaitement adapté à ce que je souhaite faire. De plus il existe une version prévue pour le Raspberry Pi. Seafile permet de synchroniser des fichiers et de partager des documents.

Seafile est un logiciel libre (pour la version Community), il se décline sous toutes les plates-formes et possède des clients Linux, Windows, Android et Mac. On peut aussi utiliser un navigateur internet pour se connecter. C’est un système de stockage de fichiers en mode Cloud. Comme il est libre, c’est pour moi la garantie de toujours contrôler mes données.

Seafile utilise une base de données pour fonctionner : on peut donc utiliser MySQL ou SQLite. Vu que la base ne prendra pas trop de place, et pour s’éviter une installation de MySQL, j’ai choisi d’utliser SQLite. De même, il peut s’interfacer sur un annuaire LDAP, mais je n’utiliserais pas cette option : pour une utilisation personnelle, cela ne sert pas à grand chose.

Préparer Rasbian pour Seafile

Pour commencer on met a jour le Raspberry, ça coûte rien :

sudo apt-get update
sudo apt-get upgrade

Prérequis pour Seafile : (en mode SQLite)

  • python 2.7 or python 2.6.5+
  • python-setuptools
  • python-imaging
  • (python-ldap)
  • sqlite3

Si vous avez avez la dernière version de Raspbian à jour, il ne manquera que : python-setuptools, python-imaging, sqlite3 :

sudo apt-get install python-imaging python-setuptools sqlite3

 

Télécharger Seafile

Comme je vais avoir des fichiers à stocker, pas la peine de compter sur la carte SD du Raspberry : je vais utiliser un disque externe pour cela (voir cet article sur la mise en place de ce disque externe).

Pour rappel, ce disque dur est accessible dans ma configuration sous /media/Data/. Commençons par ouvrir un terminal pour travailler et plaçons nous sur le disque dur externe :

cd /media/Data/

je commence par y créer le répertorie dans lequel sera Seafile, et je m’y déplace :

mkdir seafile
cd seafile

Il me faut à présent télécharger une version de Seafile compatible avec le Raspberry. L’archive de Seafile pour le Raspberry se trouve ici : https://github.com/haiwen/seafile-rpi. Nous allons prendre la dernière version stable, soit la 5.0.5 qui se trouve : https://github.com/haiwen/seafile-rpi/releases/download/v5.0.5/seafile-server_stable_jobenvil_5.0.5_pi.tar.gz

Nous allons faire tout ça dans notre terminal (nous sommes dans /media/Data/seafile/ pour rappel) :

  1.  télécharger notre archive de seafile
  2. l’extraire
  3. créer un répertoire (seafile_archive) et la déplacer dedans dedans (pour l’avoir sous la main au cas où)

Ce qui donne :

wget https://github.com/haiwen/seafile-rpi/releases/download/v5.0.5/seafile-server_stable_jobenvil_5.0.5_pi.tar.gz
tar -xzvf seafile-server_stable_jobenvil_5.0.5_pi.tar.gz
mkdir seafile_archive
mv seafile-server_stable_jobenvil_5.0.5_pi.tar.gz seafile_archive/

Installation de Seafile

Les fichiers ont été extraits, on peut lancer l’installation. Déplaçons-nous dans le répertoire du serveur Seafile pour lancer l’installation :

cd seafile-server-5.0.5
./setup-seafile.sh

Le script  setup-seafile.sh va poser quelques questions pour configurer Seafile :

Seafile1

Seafile nous donnes quelques infos, on fait juste [ENTER] pour passer à la suite.

Seafile2

Seafile commence par vérifier les dépendances : comme nous avons mis tout ce qu’il faut, il demande un nom pour le serveur.

Seafile3

On donne ensuite l’IP du Raspberry. Donc une bonne idée est de lui mettre une IP fixe, comme expliqué dans cet article ou celui-ci pour le wifi.

Seafile4

Seafile nous demande ensuite où stocker les données. Puisque nous l’avons installé sur un disque externe, les données seront la aussi : il nous propose donc /media/Data/seafile/seafile-data. Je fais juste [Entrée] pour valider car c’est ce que je veux.Seafile5

On peut changer le Port du serveur. C’est une bonne idée si on déploie Seafile en production. Si on veut conserver la valeur par défaut, on fait jsute [Entrée].

Seafile6

Seafile nous résume notre configuration avant de passer à la suite.

Seafile7

Puis conclut la configuration :

Seafile-8

Seafile crée les bases de données. Il termine en précisant les deux commandes à lancer pour être exécuté :

  • ./seafile.sh (avec l’option start, restart et stop) qui lance Seafile
  • ./seahub.sh (même genre d’options) qui lance le serveur web SeaHub, pour se connecter avec son navigateur

Lancement de Seafile

Dernière étape : lancer Seafile et se connecter avec son navigateur internet. Dans le terminal on lance :

./seafile.sh start

Puis il faut lancer le serveur SeaHub pour pouvoir se connecter en web :

./seahub.sh start

Au premier lancement de SeaHub, il nous est demandé de créer le compte admin : on complète alors avec une adresse mail (qui sera le login) et le mot de passe.

Seafile9

Il ne reste plus qu’à se connecter avec son navigateur internet : on utilise l’ip de la machine et le port. Si notre IP local est 192.168.1.100 et que l’on n’a pas changé le port par defaut (8000), on se rendra à l’adresse http://192.168.1.100:8000.

Et voila le résultat :

Seafile10

Petite correction sur une Raspbian configurée FR

Comme on peut le remarquer au premier lancement de seahub j’ai une ligne d’erreur qui n’empêche pas Seafile de tourner :

LC_ALL is not set in ENV, set to en_US.UTF-8 […]

En gros soucis du paramétrage de la langue. Il se trouve que lors de la configuration de ma Raspbian, j’ai mis comme charset le fr_FR.UTF-8. Dans mon cas, si je laisse comme ça, Seafile tourne bien, mais au lancement de la page web de login, il me faut systématiquement repasser sur le Français.

J’ai réglé ce problème en éditant le fichier seahub.sh. On cherche la ligne où se trouve ce bloc de code :

if [[ -z "$LANG" ]]; then
    echo "LANG is not set in ENV, set to en_US.UTF-8"
    export LANG='en_US.UTF-8'
fi
if [[ -z "$LC_ALL" ]]; then
    echo "LC_ALL is not set in ENV, set to en_US.UTF-8"
    export LC_ALL='en_US.UTF-8'
fi

Je remplace alors tous les en_US.UTF-8 par fr_FR.UTF-8. Ce qui donne :

if [[ -z "$LANG" ]]; then
    echo "LANG is not set in ENV, set to fr_FR.UTF-8"
    export LANG='fr_FR.UTF-8'
fi
if [[ -z "$LC_ALL" ]]; then
    echo "LC_ALL is not set in ENV, set to fr_FR.UTF-8"
    export LC_ALL='fr_FR.UTF-8'
fi

Puis je relance le serveur SeaHub par :

./seahub.sh restart

Et hop : le problème est résolu.

Il ne reste plus qu’à jouer un peu avec Seafile.

Les liens qui vont bien :

Dernier article d’une série de trois et point final du projet : Installer Calibre sur un Raspberry Pi, le lancer en mode serveur OPDS et me connecter dessus avec ma tablette ou mon téléphone pour parcourir ma bibliothèque numérique et télécharger des livres avec FBReader ou tout autre lecteur de e-book compatible OPDS. Rappel des épisodes précédents :

  1. Monter de manière permanente un disque dur USB
  2. Optimiser les accès en écriture sur la carte SD

Je commence par ouvrir une console. Pour installer Calibre, rien de plus simple :

sudo apt-get install calibre

Je veux que Calibre gère ma bibliothèque sur mon disque externe. Je crée tout d’abord un répertoire pour calibre dedans. Comme mon disque externe est monté sur /media/datas, je vais créer un répertoire ici :

mkdir /media/datas/calibre

A présent, je lance calibre : un assistant de bienvenue me guide pour configurer Calibre. La chose la plus importante à préciser est le répertoire.

calibre1

On précise ici le répertoire sur le disque externe

 

calibre2

 

calibre3

C’est fini

Il ne reste plus qu’à utiliser calibre pour construire sa bibliothèque numérique.

Lancer Calibre en mode serveur

Deux méthodes pour cela :

  1. lancer Calibre et dans le menu Connecter / Partager, choisir Démarrer le serveur de contenu.
  2. lancer le serveur directement dans un terminal

Je vais opter pour la seconde option, cela consommera moins de mémoire, je n’ai pas besoin de l’interface graphique de Calibre, juste du mode serveur.

Pour une info complète : Calibre Commande line interface

Pour lancer le mode serveur :

calibre-server &

Le fait de mettre & après une commande lance cette dernière et rend la main au terminal. Je peux donc fermer ma fenêtre terminal sans arrêter le serveur.

FBReader et l’OPDS

J’utilise FBReader (sous android) mais cela fonctionne avec tout autre lecteur e-books compatible OPDS.

Lançons FBReader. Choisir dans le menu : Bibliothèque Réseau

fbr1

Puis Ajouter un catalogue :

fbr2

Si on connaît l’adresse IP du Raspberry sur lequel se trouve Calibre, on peut saisir directement l’URL, sinon, on cherche sur le réseau local, c’est très rapide.

fbr3

Mon Raspberry est trouvé ainsi que le serveur Calibre. Je le sélectionne.

fbr4

C’est terminé, je peux parcourir ma bibliothèque numérique et télécharger les documents que je souhaite.

fbr5Pas besoin de relancer le scan du serveur Calibre lors d’une autre utilisation de FBReader : ma bibliothèque reste dans le menu de FBReader.

fbr6

Et voilà, tout fonctionne à merveille.

Cet article est le 2e d’une série de trois. Je vous rappelle ici mon but : faire tourner un serveur calibre sur mon Raspberry. Ma feuille de route :

  1. Monter de manière permanente un disque dur USB
  2. Optimiser les accès en écriture sur la carte SD
  3. Installer Calibre en mode serveur

La distribution Linux Raspbian pour le Raspberry est une bonne distribution, basée sur la Debian, qui est stable et performante. Mais un système Linux écrit souvent sur le disque dur pour deux raisons principales (autres que l’écriture de fichiers bien sur) :

  1. le swap
  2. les fichiers log

On va donc essayer de réduire ces deux choses pour limiter les accès en écriture sur la carte et ainsi augmenter sa durée de vie. Car c’est le problème principal des cartes SD : elles se fatiguent vite si on écrit souvent dessus.

Le swap

Le swap est un fichier d’échange qui intervient lorsque la RAM commence à être pleine ou qu’elle est sollicitée par un logiciel qui a besoin de ressource : le système va alors écrire sur le disque dur une partie de la RAM pour libérer de la place. C’est une zone d’échange, une sorte de RAM virtuelle qui augmente la taille de la RAM, mais qui est bien sur plus lente car elle passe par un accès disque. Le problème ici : le swap se trouve sur le disque, donc sur la carte SD du Raspberry.

On peut donc se passer de swap tant qu’on ne demande pas au Raspberry des taches trop gourmandes en RAM (ex : retouche d’images, …)

Vérifions cette histoire de swap par la commande top (en lançant simplement top dans un terminal). On obtient ceci :

swapon

On remarque qu’il y a du swap, pour l’instant non utilisé, mais réservé à cet effet, au niveau de la ligne qui commence par KiB Swap.

Pour rappel sur la commande Top et d’autres commandes du même style par ici….

Supprimons le swap par la commande :

sudo dphys-swapfile swapoff

et relançons top pour vérifier :

swapoff

Comme on le voit à présent, il n’y a plus de mémoire réservée pour le swap. Si jamais le système devient instable ou mou, par besoin de swap, on peut le réactiver avec la commande :

sudo dphys-swapfile swapon

Il y a toutefois un soucis : au redémarrage du Raspberry, le swap est réactivé, notre commande le désactive juste quand on lui demande. On peut enlever le swap automatiquement au démarrage par la commande :

sudo update-rc.d -f dphys-swapfile remove

Voilà une affaire de régler : plus de swap pour de bon !

Les fichiers log et temporaires

Le système Linux est très bavard et il écrit pas mal de chose à tout bout de champ. Le problème est que la carte SD subit de nombreuses écritures, ce qui n’est pas bon pour elle. On va donc déplacer les fichiers log dans la RAM du Raspberry, on profitera pour faire pareil avec les fichiers temporaires. Le seul soucis est qu’on perd les fichiers log du système. Ce n’est pas gênant de manière générale, mais ça le devient en cas de serveur web.

Pour cela on va modifier un peu le fichier /etc/fstab. On l’édite par la commande :

sudo nano /etc/fstab

Puis on ajoute ces lignes à la fin :

# les fichiers de log et tempo passent en RAM
tmpfs   /tmp            tmpfs   defaults,noatime,mode=1777,size=10m     0       0
tmpfs   /var/spool      tmpfs   defaults,noatime,mode=1777              0       0
tmpfs   /var/tmp        tmpfs   defaults,noatime,mode=1777,size=10m     0       0
tmpfs   /var/log        tmpfs   defaults,noatime,mode=0755,size=10m     0       0

Je précise pour certains répertoires size = 10m, pour limiter la taille et ne pas occuper trop de RAM. Cela préserve la RAM de trop gros fichiers. J’enregistre et je reboote. A présent mes 4 répertoires sont montés en RAM et plus sur la carte SD.

C’est gagné !

[Mise à jour du 16/11/2016] :

Attention toutefois avec le répertoire /var/spool. En effet ce répertoire contient le répertoire crontab qui gère tous les appelle à cron. Cron permet de définir des taches qui seront lancées à un instant donné, ou lancées périodiquement. Le fait que le répertoire crontab soit en ram détruira à chaque reboot du Raspberry la listes des taches programmées.

Donc si vous utilisez cron sur votre Raspberry, ne mettez pas /var/spool dans la ram.

Merci à ThePhenix pour l’info !

 

 

Je souhaite utiliser mon Raspberry Pi comme serveur de e-books, de manière à pouvoir consulter ma collection de livres et autres documents numériques sur ma tablette.

J’utilise sur cette dernière FBReader pour lire mes e-books et pdf. Et sur mon pc, Calibre pour gérer ma collection de livres numériques. Calibre possède une fonctionnalité intéressante qui permet de l’activer en mode serveur OPDS: il partage le catalogue de livres sur mon réseau local et me permet de les télécharger. FBReader possède un plugin qui permet de se connecter sur ce catalogue OPDS. Je peux ainsi consulter ma bibliothèque numérique et récupérer des livres sur ma tablette pour les lire.

Mon idée est donc la suivante : utiliser mon Raspberry Pi comme serveur pour calibre. C’est un des avantages du Raspberry Pi : il est petit, consomme peu, idéal pour des petits serveurs sur son réseau local. Toutefois, je veux diminuer au maximum les écritures sur la carte SD pour augmenter la durée de vie de cette dernière. Et il me faut en plus monter un disque externe USB sur le Raspberry automatiquement à chaque boot. Ma feuille de route pour mon projet :

  1. Monter de manière permanente un disque dur USB
  2. Optimiser les accès en écriture sur la carte SD
  3. Installer Calibre en mode serveur

Commençons donc par ce premier post d’une série de trois qui va détailler toutes les actions.

Comme toujours, ouvrons un terminal. Puis branchons le disque dur USB. Le mien est déjà formaté en ext4 : en effet, comme je le réserve pour l’usage du Raspberry et que mon autre pc est sous linux, je l’ai formaté sur un système de fichier linux.

J’ai besoin de connaître le nom de ma partition usb pour pouvoir la monter sur le système de fichier du Raspberry. Pour cela :

sudo fdisk -l

Cette commande nous renvoie quelques informations (je fais un peu le ménage pour ne garder que les lignes qui m’intéressent) :

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   131071   122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 62333951 62202880 29,7G 83 Linux

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1        2048 975400959 975398912 465,1G 83 Linux

Je vois les deux partitions de ma carte SD avec la Raspbian, et en dernier mon disque externe avec son unique partition : /dev/sda1

Je veux que mon disque externe soit accessible dans le répertoire /media/datas. Je commence par créer ce répertoire en root :

sudo mkdir /media/datas

Puis je monte le disque externe avec la commande :

sudo mount -t ext4 /dev/sda1 /media/Data/

Pour le démonter :

sudo umount /media/Data

Je vérifie que tout fonctionne bien et que mon disque est bien monté et accessible dans le bon répertoire. Si je reboote le Raspberry (le disque externe connecté au boot) : il n’est pas monté. Je dois donc à présent automatiser le montage du disque. Pour cela, j’édite le fichier /etc/fstab

sudo nano /etc/fstab

Je le modifie en ajoutant à la fin :

/dev/sda1    /media/datas    ext4    defaults    0    0

On enregistre et c’est bon. Bien sur et comme toujours, il faut modifier certaines valeurs en fonction du nom de la partition à monter (/dev/sda1) et du point de montage (/media/datas) que vous souhaitez avoir.

On redémarre le Raspberry pour une ultime vérification : et là, oh joie !, tout fonctionne !

Dans le prochain épisode nous verrons comment diminuer l’usure de la carte SD en essayant de réduire les accès en écriture sur la carte SD.

 

Le Raspberry PI 3

La Fondation Raspberry vient de sortir un nouveau modèle : le Raspberry Pi 3.

Plutôt que de faire un long commentaire sur ce raspi3nouveau modèle, je n’insisterai que sur les point que j’apprécie le plus, en comparaison avec le Raspberry Pi 2 :

  • le processeur passe de 1000 à 1200 MHz, toujours en quadcore, mais sur du 64 bits au lieu de 32. Il faudra donc la dernière version de Raspbian qui supporte le 64 bits. D’où le petit soucis sur le réglage du wifi.
  • toujours 1 Go de ram, pas de changement
  • Wifi et bluetooth intégré : plus besoin d’ajouter un dongle, la carte possède tout ce qu’il faut, ça libère de l’usb.
  • alimentation : usb 2.5 A. Ceci est une bonne nouvelle car cela permet de brancher un disque externe usb en ayant assez de courant pour l’alimenter. Plus besoin d’un hub usb alimenté, le Rapsberry 3 fournira le courant nécessaire au disque.
  • C’est un modèle B, donc comme le Raspberry Pi 2, les boîtiers sont les mêmes

Après avoir téléchargé la dernière version de la Raspbian, puis l’avoir installée sur la carte SD, j’essaie de refaire ma configuration de connexion Wifi avec IP fixe, comme je l’avais déjà expliquer ici.

Mais soucis : cela ne fonctionne plus du tout. La modification proposée du fichier /etc/network/interfaces ne me permet plus de configurer ma wifi en ip fixe.

D’où le correctif de ce jour.

Donner une IP fixe en Wifi

Première étape : Définir le ssid et le mot de passe de la connexion wifi

Ouvrir un terminal et éditer en root le fichier /etc/wpa_supplicant/wpa_supplicant.conf

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

A la fin du fichier, on ajoute ceci :

network={
ssid="MonSSID"
psk="LaCleWifiDeLaBox"
key_mgmt=WPA-PSK
}

On remplace bien sur MonSSID et LaCleWifiDeLaBox par les bonnes valeurs. Key_mgmt indique que notre clé wifi est de type WPA. Pour d’autres valeurs et tout savoir sur le fichier wpa_supplicant, c’est par ici.

On peut reproduire ce bloc avec d’autres valeurs, si on doit se connecter à d’autre réseau wifi : dans ce cas, faire un bloc network par réseau différent. On enregistre et c’est bon

Deuxième étape : Configurer son IP

Pour cela, et c’est là vraiment la nouveauté, il faut éditer le fichier suivant (toujours en root avec sudo) :

sudo nano /etc/dhcpcd.conf

A la fin du fichier, ajouter ceci :

# configuration ip static pour wlan0
interface wlan0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_serveurs=192.168.1.1

L’adresse 192.168.1.20 correspondra à l’IP que l’on veut pour l’interface wifi. Routers correspond à l’ip de la box de son fournisseur d’accès. En général on mettra cette même adresse pour le domain name servers.

On redémarre le Raspberry Pi, et voilà, on a la bonne ip !

raspbian-logoUne nouvelle mise à jour de la distribution Raspbian pour le Raspberry pi est sortie hier !

Parmi les changements intéressants autres que les correctifs de bug, meilleures performances et améliorations (ce qui est déjà très bien) :

Comme toujours, deux  méthodes pour installer : soit en installant une image toute neuve que l’on aura téléchargée, soit en faisant un update.

Rappel pour updater la Raspbian :
sudo apt-get update
sudo apt-get dist-upgrade

puis pour le gpio :
sudo apt-get raspi-gpio

Pour le driver openGL :
sudo apt-get install xcompmgr libgl1-mesa-dri

Pour activer le driver expérimental par la suite : aller dans raspi-config (menu ou ligne de commande), puis Advanced Options, et finallement, GL Driver.

Il est à remarquer que le driver consommant beaucoup de ressource, cela ne fonctionnera que sur Raspberry 2.

Près de 2 mois après mon précédent post, je viens de finir enfin le nouveau design de limen-arcanum.org, mon site sur la cathédrale d’Amiens.

Le plus dur est fait, il me reste à présent à migrer toutes les pages dans la nouvelle mouture. L’occasion de revoir en totalité les photos, pour en mettre plus, ainsi que l’arborescence du site, qui me permettra de laisser plus de place à quelques textes plus symboliques.

Oui je sais que ce type de site n’est plus trop au goût du jour, les gens préférant les moteurs de blog , où la recherche est facilement réalisable, mais je persiste. La cathédrale n’a pas bougé au fil des siècles, et son message reste caché à ceux qui sont sourds et aveugles (c’est exactement le sens de « ésotérique » : qui est caché au regard profane, aussi bien dans le sens qu’on ne peut voir, mais surtout dans le sens : qui est sous nos yeux mais que nous ne savons point voir, car il nous manque les clés de décryptage). Le site est plus conçu comme un livre qu’on lit et relit (pourquoi pas !) qu’à un blog où on lit pour ne jamais relire, texte jetable d’une société qui fait du jetable son mode de pensée…

J’ai commencé la migration des pages mais c’est très long et le temps me manque pour aller plus vite. De plus je veux rester compatible avec l’ancienne version (enfin celle qui le deviendra quand la nouvelle sera déployée), de manière à ce que les liens qui pointent sur le site ne soient pas cassés.

Tout le nouveau design a été pensé pour mettre en valeur l’image, et proposé un site plus fluide et plus beau, et surtout, lisible même sur téléphone. J’ai profité pour me mettre au responsive design, et je suis assez content du résultat.

Voilà donc à quoi ressemblera le nouveau site limen-arcanum.org :

limen-arcanum_new