tag:linuxfr.org,2005:/users/cpaluiLinuxFr.org : les contenus de cpalui2014-11-12T14:27:39+01:00/favicon.pngtag:linuxfr.org,2005:News/343532014-11-09T14:42:10+01:002014-11-09T14:42:10+01:00Votre blogue à la maison sur Raspberry PiLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Nous verrons dans ce tutoriel comment installer un Raspberry Pi pour en faire un serveur web hebergé chez vous, derriere votre box internet.</p></div><ul></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#conventions-%C3%A9tablies">Conventions établies</a></li>
<li><a href="#achat-du-rpi">Achat du rpi</a></li>
<li><a href="#installation-de-raspbian-et-partitionnement">Installation de Raspbian et partitionnement</a></li>
<li>
<a href="#configuration-de-base-du-rpi">Configuration de base du rpi</a><ul>
<li><a href="#raspi-config">Raspi-config</a></li>
<li><a href="#ip-statique">IP statique</a></li>
<li>
<a href="#faisons-un-peu-de-m%C3%A9nage">Faisons un peu de ménage</a><ul>
<li><a href="#gestion-des-utilisateurs-et-des-groupes">Gestion des utilisateurs et des groupes</a></li>
<li><a href="#les-modules-son">Les modules son</a></li>
<li><a href="#suppression-des-services-inutiles">Suppression des services inutiles</a></li>
<li><a href="#gestion-des-logiciels-raspbian">Gestion des logiciels Raspbian</a></li>
<li><a href="#suppression-des-paquets-inutiles">Suppression des paquets inutiles</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#le-serveur-web">Le serveur web</a><ul>
<li><a href="#installation-de-nginx">Installation de Nginx</a></li>
<li><a href="#configuration-de-nginx">Configuration de Nginx</a></li>
</ul>
</li>
<li>
<a href="#hello-the-world">Hello The World</a><ul>
<li><a href="#la-box-internet">La box Internet</a></li>
<li><a href="#votre-nom-de-domaine-chez-noip">Votre nom de domaine chez noip</a></li>
</ul>
</li>
<li>
<a href="#installation-et-configuration-de-pluxml">Installation et configuration de Pluxml</a><ul>
<li><a href="#modifier-le-th%C3%A8me">Modifier le thème</a></li>
<li><a href="#corriger-un-bogue">Corriger un bogue</a></li>
</ul>
</li>
<li>
<a href="#administration-du-serveur">Administration du serveur</a><ul>
<li><a href="#le-pare-feu-iptables">Le pare-feu Iptables</a></li>
<li><a href="#rsyslog">Rsyslog</a></li>
<li><a href="#ssh">SSH</a></li>
<li><a href="#les-clefs-ssh">Les clefs SSH</a></li>
<li><a href="#logwatch">Logwatch</a></li>
<li><a href="#logrotate">Logrotate</a></li>
<li><a href="#sauvegarde-du-syst%C3%A8me">Sauvegarde du système</a></li>
</ul>
</li>
<li>
<a href="#analyse-et-tests">Analyse et tests</a><ul>
<li><a href="#awstats">Awstats</a></li>
<li><a href="#tests-du-site">Tests du site</a></li>
</ul>
</li>
<li><a href="#r%C3%A9f%C3%A9rences">Références</a></li>
</ul><h2 id="conventions-établies">Conventions établies</h2>
<pre><code>adresse IP du rpi = 192.168.1.10 (nom : rpi)
adresse IP de votre ordinateur = 192.168.1.11 (nom : pc)
adresse IP de votre box Internet = 192.168.1.1 (nom : box)
votre compte sur le pc = votre_login_pc
votre compte sur le rpi = votre_login_rpi
nom du site = nomsite.sytes.net (un fournisseur de DNS dynamique gratuit)
</code></pre>
<ul>
<li>Je n'utilise pas sudo, donc les commandes se font par un passage en root par su ;</li>
<li>Sur le rpi, la connexion est possible par wifi avec une clé USB, mais j'utilise l'Ethernet ;</li>
<li>Le tutoriel est entièrement basé sur Linux et il n'y a pas d'interface graphique, sauf accident. J'ai testé TV + souris + clavier, je n'en ai pas trouvé l'intérêt dans le cadre choisi ici ;</li>
<li>Lorsque le système sera sur la clé USB, il restera une seule sortie USB, suffisante pour une utilisation du clavier s'il y a besoin d'une connexion en mode console pour un dépannage ;</li>
<li>La légèreté a été privilégiée contre toute autre considération, entraînant le choix de Nginx et de Pluxml. Nginx est réputé pour être moins lourd qu'Apache, et Pluxml n'utilise pas de bases de données. Mais d'autres choix peuvent être faits.</li>
</ul><h2 id="achat-du-rpi">Achat du rpi</h2>
<p>J'ai acheté les produits ci-dessous chez <a href="http://www.kubii.fr">www.kubii.fr</a>.</p>
<pre><code>32,99 € Raspberry Pi 512Mo Model B
3,15 € Cordon d'alimentation 1.8 mètres, USB A M-MICRO B M
7,90 € Adaptateur USB euro noir
2,40 € Cable HDMI 2 mètres
6,87 € Boitier
11,95 € Expédition
65,26 € TOTAL
</code></pre>
<p>Après cet achat et après avoir fait du rangement chez moi, j'ai trouvé un vieux mini-hub USB 4 ports avec son câble USB mâle-mini mâle (ou micro) qui permet d'assurer l'alimentation du rpi et d'avoir plus d'entrées USB. Mais il faut avoir la bonne tension, je n'y connais rien, donc si vous n'êtes pas sûr, achetez tout le nécessaire. La longueur des câbles doit être décidée en fonction de l'endroit où vous poserez votre rpi (prise de courant, boîtier Internet, TV). De plus, si vous n'en avez pas, achetez aussi un câble Ethernet. Vous aurez aussi besoin d'une carte SD et d'une clé USB de 8 Go. Si vous suivez ma configuration, achetez la carte SD la plus petite et la moins chère, elle ne servira qu'à démarrer, le reste étant sur la clé USB. Celle-ci servira de disque dur, elle doit donc être robuste et rapide, mais les spécifications ne sont jamais précisées. Je possède trois clés USB et une carte SD de classe 4, j'ai donc fait des tests de lecture/écriture, peu fiables apparemment, mais qui donnent peut-être des indications. J'ai tout formaté en ext4.<br>
Tests de lecture (relancer plusieurs fois pour trouver une moyenne) :</p>
<pre><code class="sh">hdparm -t --direct /dev/sdc sd <span class="m">20</span> MB/s
hdparm -t --direct /dev/sdd usb1 <span class="m">29</span> MB/s
hdparm -t --direct /dev/sde usb2 <span class="m">22</span> MB/s
hdparm -t --direct /dev/sdf usb3 <span class="m">22</span> MB/s</code></pre>
<p>Tests d'écriture (relancés plusieurs fois pour trouver une moyenne) :</p>
<pre><code class="sh">sync<span class="p">;</span><span class="nb">time </span>bash -c <span class="s2">"(dd if=/dev/zero of=/mnt/test bs=8k count=10000; sync)"</span>
sd <span class="m">930</span> MB/s
usb1 1.1 GB/s
usb2 1.1 GB/s
usb3 <span class="m">850</span> Mb/s</code></pre>
<p>Bien sûr, ces résultats en écriture sont délirants, mais je constate que la SD et l'USB3 sont les moins rapides, et que l'USB1 s'en sort le mieux, c'est donc celle que j'ai choisie pour installer Raspbian.</p>
<h2 id="installation-de-raspbian-et-partitionnement">Installation de Raspbian et partitionnement</h2>
<p>Plusieurs distributions sont disponibles, j'ai choisi la Raspbian Wheezy, une dérivée de la Debian Wheezy, téléchargeable <a href="http://www.raspberrypi.org/downloads/">ici</a>. Elle se présente sous la forme AAAA-MM-JJ-wheezy-raspbian.img et pèse 500 Mb. Vous la dézippez sur le PC et l'installez sur la clef USB (/dev/sdX avec X=c dans mon cas, mais ça peut changer chez vous) par la commande :</p>
<pre><code class="sh">dd <span class="k">if</span><span class="o">=</span>AAAA-MM-JJ-wheezy-raspbian.img <span class="nv">of</span><span class="o">=</span>/dev/sdX</code></pre>
<p><strong>Attention :</strong> /dev/sdX doit bien être votre clef USB, et non un disque dur, sinon le contenu sera écrasé. Vous obtiendrez le partitionnement suivant :</p>
<ul>
<li>un espace vide de 4 Mb (taille probablement aléatoire)</li>
<li>partition /dev/sdX1 en FAT32 d'une taille de 56 Mb, c'est la partition /boot</li>
<li>partition /dev/sdX2 en ext4 d'une taille de 1.75 Gb, la partition système /</li>
</ul><p>Sur le PC vous formatez votre carte SD en FAT32 (/dev/sdY avec Y=d dans mon cas). Ensuite vous montez la partition /boot de votre clef USB, et la partition de la carte SD, afin de copier les fichiers de démarrage de la carte USB vers la carte SD :</p>
<pre><code class="sh">mkdir /tmp/mnt_usb <span class="p">;</span> mount -t vfat /dev/sdX1 /tmp/mnt_usb
mkdir /tmp/mnt_sdcard <span class="p">;</span> mount -t vfat /dev/sdY1 /tmp/mnt_sdcard
cp -av /tmp/mnt_usb/* /tmp/mnt_sd/</code></pre>
<p>Il faut indiquer maintenant au rpi où se situe la partition système. Pour cela éditez le fichier cmdline.txt de la carte SD, /tmp/mnt_sd/cmdline.txt, et remplacez root=/dev/mmcblk0p2 (ce nommage de la carte SD peut être différent chez vous) par root=/dev/sda2 : ce qui se présente actuellement sous le nom de /dev/sdY2 (ou autre) sur votre ordinateur, sera nommé /dev/sda2 sur le rpi. Vous pouvez démonter la carte et la clef USB. Cette dernière peut être laissée en l'état ou repartitionnée selon vos besoins. </p>
<p>Personnellement j'ai supprimé l'espace vide et la partition FAT32 puis déplacé /dev/sdY2 au début du disque en l'agrandissant à 3 Go (actuellement mon / ne dépasse pas 1,5 Go). </p>
<p>Il est aussi possible de créer d'autres partitions (swap, données, etc.), mais vous pourrez toujours le faire ultérieurement si besoin. Il y a aussi un fichier de swap de 100 Mo dans le système qu'on peut réduire ou agrandir (/etc/dphys-swapfile & /var/swap), mais n'ayant pas de problème de mémoire je n'y ai pas touché (mon blogue est très léger et requiert entre 200 et 250 Mo sur les 512 Mo du rpi). </p>
<p>Vous pouvez maintenant insérer la carte SD et la clef USB sur le rpi, connecter le câble Ethernet et le câble d'alimentation, et enfin lancer la petite bestiole.</p>
<h2 id="configuration-de-base-du-rpi">Configuration de base du rpi</h2>
<h3 id="raspi-config">Raspi-config</h3>
<p>Le rpi a démarré et devrait fonctionner. Comment vous connecter ? La première chose à faire est de consulter votre boîtier Internet pour connaître l'adresse IP dynamique attribuée au rpi. Vous trouvez par exemple 192.168.1.30. La commande <code>ssh pi@192.168.1.30</code> avec le mot de passe <code>raspberry</code> vous permet de vous identifier avec l'utilisateur par défaut <code>pi</code>. Cette commande <code>ssh nom_user@adresse_ip_rpi</code> est la seule commande vous permettant d'accéder au rpi sans interface graphique. Commencez par attribuer un mot de passe à root par <code>sudo passwd root</code>, vous permettant de vous identifier en root par <code>su</code>, afin de de configurer le rpi avec la commande raspi-config (ce menu peut changer si votre version de raspbian est plus récente que la mienne). Il est imprudent de s'indentifier directement en root par SSH, nous verrons comment l'interdire plus loin. </p>
<p>Dorénavant nous serons presque exclusivement en root pour toute la suite des démarches :</p>
<pre><code class="sh">ssh pi@192.168.1.30
sudo passwd root password
su
raspi-config</code></pre>
<p>La dernière commande affiche cet écran sur 2 colonnes, chaque ligne pouvant être sélectionnée pour modification; je mets en commentaire à droite mes propres choix.</p>
<pre><code class="sh">info Information about this tool
expand_rootfs Expand root partition to fill SD card <span class="c"># inutile</span>
overscan Change overscan <span class="c"># inutile</span>
configure_keyboard Set keyboard layout <span class="c"># mettez fr pour avoir l'azerty en cas de connexion TV</span>
change_pass Change password <span class="k">for</span> <span class="s1">'pi'</span> user <span class="c"># votre mot de passe</span>
change_locale Set locale <span class="c"># je garde par défaut [*] en_GB.UTF-8 UTF-8, sinon la connexion SSH est graphiquement polluée</span>
change_timezone Set timezone <span class="c"># Europe/Paris</span>
change_hostname Set hostname <span class="c"># raspberrypi par défaut</span>
memory_split Change memory split <span class="c"># gpu=4 : l'utilisation de la carte graphique étant inutile, je donne au GPU la valeur minimale de 4 Mb, tout le reste étant disponible pour le CPU</span>
overclock Configure overclocking :
* None 700MHz ARM, 250MHz core, 400MHz SDRAM, <span class="m">0</span> overvolt
* Modest 800MHz ARM, 250MHz core, 400MHz SDRAM, <span class="m">0</span> overvolt
* Medium 900MHz ARM, 250MHz core, 450MHz SDRAM, <span class="m">2</span> overvolt <span class="c"># j'ai choisi Medium</span>
* High 950MHz ARM, 250MHz core, 450MHz SDRAM, <span class="m">6</span> overvolt
* Turbo 1000MHz ARM, 500MHz core, 600MHz SDRAM, <span class="m">6</span> overvolt
ssh Enable or disable ssh server <span class="c"># enable</span>
boot_behaviour Start desktop on boot? <span class="c"># non</span>
camera Enable/Disable camera addon support <span class="c"># non</span>
rastrack Add this Pi to Raspberry Pi Map - Rastrack <span class="c"># non</span>
update Try to upgrade raspi-config <span class="c"># non (on le fera plus tard)</span></code></pre>
<p>Vous pouvez redémarrer, vous reconnecter par SSH, puis passer en root et vérifier que le surcadencement (« overclocking ») est correct de différentes manières :</p>
<pre><code class="sh">vcgencmd get_config int
vcgencmd get_config arm_freq
cat /boot/config.txt</code></pre>
<p>Il est aussi conseillé de modifier le fichier <code>/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</code> en remplaçant powersave par ondemand.</p>
<p>Au fait, ça chauffe un rpi? Allez voir <code>/opt/vc/bin/vcgencmd measure_temp</code>.</p>
<h3 id="ip-statique">IP statique</h3>
<p>Pour un serveur Web je préfère une IP statique, ce qui s'obtient en modifiant <code>/etc/network/interfaces</code> (j'ai diésé les options se référant au DHCP et au wifi)</p>
<pre><code>auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.1
broadcast 192.168.1.255
gateway 192.168.1.1
</code></pre>
<p>Après un redémarrage, vous vous connectez par <code>ssh pi@192.168.1.10</code></p>
<h3 id="faisons-un-peu-de-ménage">Faisons un peu de ménage</h3>
<p>Le rpi va nous servir uniquement à créer un blogue, et c'est tout. Pour un serveur Web, de nombreux éléments sont inutiles, ce qui va nous permettre de faire un grand nettoyage à la tronçonneuse. Pour commencer, supprimons des consoles inutiles dans notre cas. Dans le fichier /etc/inittab vous pouvez diéser les 4 dernières lignes, c'est-à-dire les consoles 3 à 6.</p>
<pre><code class="sh">1:2345:respawn:/sbin/getty --noclear <span class="m">38400</span> tty1
2:23:respawn:/sbin/getty <span class="m">38400</span> tty2
<span class="c">#3:23:respawn:/sbin/getty 38400 tty3</span>
<span class="c">#4:23:respawn:/sbin/getty 38400 tty4</span>
<span class="c">#5:23:respawn:/sbin/getty 38400 tty5</span>
<span class="c">#6:23:respawn:/sbin/getty 38400 tty6</span></code></pre>
<h4 id="gestion-des-utilisateurs-et-des-groupes">Gestion des utilisateurs et des groupes</h4>
<p>Je préfère supprimer l'utilisateur <code>pi</code> qui est connu et donc identifiable pour les intrus. Créons d'abord un nouvel utilisateur et son groupe, qui par convention auront pour nom <code>votre_login_rpi</code></p>
<pre><code class="sh">useradd --home-dir /home/votre_login_rpi --create-home --skel /etc/skel --user-group --uid <span class="m">1000</span> votre_login_rpi
passwd votre_login_rpi</code></pre>
<p>Vérifiez que votre nouvel utilisateur est bien créé :</p>
<pre><code class="sh">id votre_login_rpi
<span class="nv">uid</span><span class="o">=</span>1000<span class="o">(</span>votre_login_rpi<span class="o">)</span> <span class="nv">gid</span><span class="o">=</span>1000<span class="o">(</span>votre_login_rpi<span class="o">)</span> <span class="nv">groups</span><span class="o">=</span>1000<span class="o">(</span>votre_login_rpi<span class="o">)</span></code></pre>
<p>Vous devez vous déconnecter en faisant 2 fois Ctrl+d (exit de root, puis exit de pi), puis vous reconnecter par <code>ssh votre_login_rpi@192.168.1.10</code>, repasser en root et supprimer l'utilisateur pi:</p>
<pre><code class="sh">userdel --remove pi
groupdel pi</code></pre>
<p>Je décide aussi de supprimer les utilisateurs et groupes inutiles<br><code>userdel</code></p>
<ul>
<li>games</li>
<li>lp</li>
</ul><p><code>groupdel</code></p>
<ul>
<li>fax</li>
<li>voice</li>
<li>cdrom</li>
<li>floppy</li>
<li>tape</li>
<li>sudo</li>
<li>audio</li>
<li>video</li>
<li>lpadmin</li>
<li>indiecity</li>
</ul><h4 id="les-modules-son">Les modules son</h4>
<p>lsmod affiche des modules de son dont nous n'aurons pas besoin. Dans le fichier <code>/etc/modules</code> il suffit de commenter le module son <code>#snd-bcm2835</code></p>
<h4 id="suppression-des-services-inutiles">Suppression des services inutiles</h4>
<p>Pour désactiver un service sans supprimer son script de lancement (dans /etc/init.d/):</p>
<pre><code class="sh">/etc/init.d/nom_service stop
update-rc.d -f nom_service remove</code></pre>
<p>Procédez ainsi avec les services triggerhappy plymouth plymouth-log.</p>
<p>Pour visualiser les services présents et/ou actifs il faut installer sysv-rc-conf avec les commandes:</p>
<pre><code class="sh">apt-get update
apt-get install sysv-rc-conf
sysv-rc-conf --list <span class="c"># liste de tous les services présents</span>
sysv-rc-conf <span class="c"># interface minimale (mais ça rame) pour activer/désactiver les services</span></code></pre>
<h4 id="gestion-des-logiciels-raspbian">Gestion des logiciels Raspbian</h4>
<p>La version de Raspbian que vous avez installée peut nécessiter une première mise à jour, opération que vous effectuerez de temps à autre de cette manière :<br><code>apt-get update</code> qui réactualise le fichier répertoriant les logiciels disponibles ; <strong>relancez cette commande chaque fois</strong> que vous souhaitez rechercher, mettre à jour ou installer des paquets ; <code>apt-get dist-upgrade</code> fait une mise à jour globale de la distribution</p>
<p>Il se peut qu'une mise à jour du micrologiciel (« firmware ») du rpi soit nécessaire, pour cela il faut lancer <code>rpi-update</code>. Depuis peu c'est un paquet intégré à Raspbian, mais je ne sais pas s'il est intallé d'office. Si la commande ne répond pas, installez ce paquet par <code>apt-get install rpi-update</code><br>
Avant cette mise à jour lancez les commandes <code>/opt/vc/bin/vcgencmd version</code> et <code>uname -a</code> et notez les résultats.<br>
Puis lancez <code>rpi-update</code>, redémarrez, et comparez les nouvelles versions du système.</p>
<h4 id="suppression-des-paquets-inutiles">Suppression des paquets inutiles</h4>
<p>Vous pouvez également utiliser raspbian-ua-netinst, qui produit une image minimale sans fantaisie (pas d'utilisateur pi et d'autres trucs).<br>
Après la mise à jour, dans l'optique d'un serveur Web, de nombreux paquets sont inutiles, donc vous pouvez les supprimer par la commande <code>aptitude purge</code>:</p>
<pre><code class="sh">aptitude purge alsa alsa-base alsa-utils cups-bsd cups-client cups-common dillo gconf-service gconf2 gconf2-common ghostscript gnome-themes-standard libgconf-2-4 gksu libgksu2-0 gnome-accessibility-themes gnome-icon-theme gnome-themes-standard gnome-themes-standard-data gpicview lxde leafpad lightdm liblightdm-gobject-1-0 libxklavier16 lightdm-gtk-greeter libsamplerate0 libqt4-network libqt4-xml libqtdbus4 libqtwebkit4 lxappearance lxde-common lxde-core lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal pistore scratch squeak-plugins-scratch squeak-vm libfm-data libfm-gtk-bin libfm-gtk1 libfm1 libmenu-cache1 lxmenu-data omxplayer pcmanfm penguinspuzzle sudo xarchiver ed galculator midori wpasupplicant xpdf libraspberrypi-doc libiw30 wireless-tools wpagui libcupsimage2 sudo wolfram-engine</code></pre>
<p>Pour achever cette suppression, installez deborphan qui vous permettra de lister les dépendances devenues inutiles à supprimer, puis lancez-le</p>
<pre><code class="sh">apt-get update
apt-get install deborphan
deborphan</code></pre>
<p>Si vous êtes accro aux éditeurs vi, nano ou autres passez votre chemin. Personnellement, pour la mise en place et la configuration du blogue, j'ai choisi de laisser un peu de X-Window afin d'utiliser le petit éditeur nedit par SSH, donc <code>apt-get install nedit</code></p>
<h2 id="le-serveur-web">Le serveur web</h2>
<h3 id="installation-de-nginx">Installation de Nginx</h3>
<p>Tout d'abord il faut un utilisateur et un groupe dédiés au serveur web. Raspbian l'a fait pour vous, ils se nomment www-data : uid=33(www-data) gid=33(www-data) groups=33(www-data).<br>
Il faut aussi un répertoire dédié au blogue :</p>
<pre><code class="sh">mkdir /var/www<span class="p">;</span> chown -R www-data.www-data /var/www</code></pre>
<p>Tant qu'on y est, dans /etc/passwd changez <code>www-data:x:33:33:www-data:/var/www:/bin/sh</code> par <code>www-data:x:33:33:www-data:/var/www:/bin/false</code> afin d'empêcher une connexion sous ce nom, ce qui est plus sécurisé, mais vous devrez tout faire en root et penser à rétablir les propriétaires pour chaque fichier et répertoire créé ou modifié. Pour cela :</p>
<pre><code class="sh">chown -R www-data.www-data /var/www/répertoire <span class="c"># pour la totalité du répertoire</span>
chown www-data.www-data /var/www/répertoire/fichier <span class="c"># pour un fichier</span></code></pre>
<p>Passons à l'installation proprement dite de Nginx</p>
<pre><code class="sh">apt-get update
aptitude install nginx-full nginx-common geoip-database libgeoip1</code></pre>
<p>Avec les dépôts de Raspbian, j'ai eu la version 1.2.1-2.2 de Nginx, qui date de juillet 2012, alors que la version stable de juin 2013 est la 1.4.0. Mais rien ne vous empêche de compiler aux petits oignons la dernière version de Nginx, avec tous les modules qui vous plaisent.</p>
<p>Ensuite, pas de serveur web sans php <em>(NdM: enfin sauf LinuxFr.org bien sûr :-)</em> </p>
<pre><code class="sh">apt-get update
aptitude install php5 php5-common php5-fpm php5-gd libonig2 libqdbm1</code></pre>
<h3 id="configuration-de-nginx">Configuration de Nginx</h3>
<p>Les fichiers de configuration de Nginx sont sous /etc/nginx, les principaux étant:</p>
<ul>
<li>
<code>nginx.conf</code> le fichier principal de configuration</li>
<li>
<code>sites-available/</code> répertoire contenant les fichiers de configuration du ou des sites</li>
<li>
<code>sites-enabled/</code> répertoire contenant les fichiers de configuration du ou des sites actifs (liens symboliques vers le répertoire site-availables)</li>
</ul><p>Maintenant on va faire un peu joujou avec le serveur, ca vous fera comprendre un peu mieux comment ça se passe. D'abord, dans le fichier /etc/hosts du pc, ajoutez l'adresse IP du rpi et le nom du site : <code>192.168.1.10 nomsite.sytes.net</code>.</p>
<p>Si, comme moi, vous avez un XP virtuel installé, il faut mettre la même information dans le fichier <code>C:\windows\system32\drivers\etc\hosts</code>, ce qui permettra de vérifier l'aspect du blog sur un autre système d'exploitation.</p>
<p>Nginx a été installé, mais pas encore activé. Pour lancer un service sur Raspbian : <code>service nginx start</code> (start pour démarrer le serveur, restart pour le relancer, stop pour l'arrêter).</p>
<p>Ouvrez un navigateur web et entrez l'adresse IP du rpi, vous devriez obtenir un « Welcome to nginx! »</p>
<p>Mais ce que vous voulez, c'est créer votre propre site, il faut donc configurer un fichier spécifique, ce sera donc <code>/etc/nginx/sites-available/nomsite</code>, avec une configuration minimale pour tester.</p>
<pre><code class="sh">server <span class="o">{</span>
listen 80<span class="p">;</span>
root /var/www<span class="p">;</span>
server_name localhost<span class="p">;</span>
location / <span class="o">{</span>
index index.php index.html<span class="p">;</span>
<span class="o">}</span>
<span class="c"># enable php</span>
location ~ <span class="se">\.</span>php<span class="nv">$ </span><span class="o">{</span>
fastcgi_pass unix:/var/run/php5-fpm.sock<span class="p">;</span>
fastcgi_index index.php<span class="p">;</span>
include fastcgi_params<span class="p">;</span>
<span class="o">}</span>
<span class="o">}</span></code></pre>
<p>Ce site est « available », mais pas « enabled », donc :</p>
<pre><code class="sh"><span class="nb">cd</span> /etc/nginx/sites-enabled
rm default <span class="c"># suppression du lien sur le site par défaut présent à l'installation de Nginx</span>
ln -s ../sites-available/nomsite
service nginx restart</code></pre>
<p>On va maintenant créer deux petits fichiers de test dans le repertoire /var/www/ où seront rangées toutes les données qui apparaîtront sur votre site. Personnellement, j'ai tout rangé à la racine du répertoire, mais vous pouvez créer un répertoire dédié à votre site sous /var/www/.<br>
Un premier fichier index.html avec :</p>
<pre><code class="html"><span class="nt"><html><body></span>Hello world, c'est ma page de mon nouveau site !<span class="nt"></body></html></span></code></pre>
<p>Et un petit script php <code>info.php</code> avec :</p>
<pre><code class="php"><span class="o"><?</span><span class="nx">php</span>
<span class="nb">phpinfo</span><span class="p">();</span>
<span class="cp">?></span><span class="x"></span></code></pre>
<p>N'oubliez pas, vous êtes en root et vous créez des fichiers root pour un serveur dont l'utilisateur est www-data. Les fichiers qui n'ont pas www-data comme propriétaire ne s'afficheront pas sur le site, donc</p>
<pre><code class="sh">chown -R www-data.www-data /var/www/</code></pre>
<p>ou</p>
<pre><code class="sh">chown www-data.www-data /var/www/index.html /var/www/info.php</code></pre>
<p>Maintenant affichez dans la barre d'adresse de votre navigateur <code>192.168.1.10/index.html</code>, et vous devriez voir s'afficher son contenu.<br>
Pour afficher les infos PHP de votre système, entrez <code>192.168.1.10/info.php</code>.</p>
<p>Bon, tout fonctionne, mais le fichier /etc/nginx/sites-available/nomsite est minimaliste. Incapable de faire un tutoriel sur nginx, je vous présente tel quel mon propre fichier, fabriqué à partir de mes recherches, et notamment des références que je donne à la fin. Ce fichier est sûrement approximatif et très perfectible.</p>
<p><code>/etc/nginx/sites-available/nomsite</code></p>
<pre><code class="sh">server <span class="o">{</span>
listen 80<span class="p">;</span>
server_name localhost:
root /var/www<span class="p">;</span>
index index.php index.html index.htm<span class="p">;</span>
client_max_body_size 20M<span class="p">;</span> <span class="c"># set maximum upload size</span>
access_log /var/log/nginx/access.log combined<span class="p">;</span> <span class="c"># format combined pour logwatch</span>
error_log /var/log/nginx/error.log<span class="p">;</span>
autoindex off<span class="p">;</span> <span class="c"># pour eviter de lister les répertoires</span>
<span class="c"># drop.conf</span>
include drop.conf<span class="p">;</span> <span class="c"># voir fichier plus bas</span>
<span class="c"># default try order</span>
location /
<span class="o">{</span>
<span class="c"># First attempt to serve request as file, then as directory, then as /index.php?$args</span>
try_files <span class="nv">$uri</span> <span class="nv">$uri</span>/ /index.php?<span class="nv">$args</span><span class="p">;</span>
<span class="o">}</span>
<span class="c"># enable php</span>
location ~ <span class="se">\.</span>php<span class="err">$</span>
<span class="o">{</span>
try_files <span class="nv">$uri</span> <span class="o">=</span>404<span class="p">;</span>
fastcgi_index index.php<span class="p">;</span>
fastcgi_pass php5-fpm-sock<span class="p">;</span><span class="c">#/etc/php5/fpm/pool.d/www.conf /etc/nginx/conf.d/php5-fpm.conf</span>
fastcgi_param SCRIPT_FILENAME <span class="nv">$document_root$fastcgi_script_name</span><span class="p">;</span>
include fastcgi_params<span class="p">;</span>
<span class="o">}</span>
<span class="o">}</span></code></pre>
<p><code>/etc/nginx/drop.conf</code></p>
<pre><code class="sh"><span class="c">### protection de fichers et répertoires contenus dans /var/www/</span>
<span class="c">#</span>
<span class="c"># protection des fichiers caches</span>
location ~ /<span class="se">\.</span> <span class="o">{</span> deny all<span class="p">;</span> <span class="o">}</span>
<span class="c">#</span>
<span class="c"># protection du fichier de version de pluxml</span>
location /version <span class="o">{</span> <span class="k">return</span> 404<span class="p">;</span> <span class="o">}</span>
<span class="c">#</span>
<span class="c">#protection de répertoires</span>
location ~ /<span class="o">(</span>update<span class="p">|</span>data<span class="o">)</span>/ <span class="o">{</span> deny all<span class="p">;</span> <span class="o">}</span></code></pre>
<p>Selon les informations du <a href="https://blog.pablo-ruth.fr/index.php/optimisation-web-installer-nginx-php-fpm-apc-sur-debian-squeeze">blogue de pablo-ruth</a>, on configure php5-fm comme suit.</p>
<p>Création du fichier /etc/nginx/conf.d/php5-fpm.conf :</p>
<pre><code class="sh">upstream php5-fpm-sock <span class="o">{</span>
server unix:/var/run/php5-fpm.sock<span class="p">;</span>
<span class="o">}</span></code></pre>
<p>et modification du fichier <code>/etc/php5/fpm/pool.d/www.conf</code> (le point-virgule dans la ligne suivante indique un commentaire) :</p>
<pre><code class="sh"><span class="p">;</span><span class="nv">listen</span> <span class="o">=</span> 127.0.0.1:9000
<span class="nv">listen</span> <span class="o">=</span> /var/run/php5-fpm.sock</code></pre>
<p>Pour finir j'ai modifié le fichier <code>/etc/php5/fpm/pool.d/www.conf</code>, mais les valeurs dépendent de la taille du contenu de votre site, vous trouverez des informations <a href="http://serverfault.com/questions/295766/what-is-wrong-in-my-php-fpm-configuration">dans cette réponse</a>.</p>
<pre><code class="sh"><span class="nv">pm</span> <span class="o">=</span> dynamic
pm.max_children <span class="o">=</span> 8
pm.start_servers <span class="o">=</span> 3
pm.min_spare_servers <span class="o">=</span> 2
pm.max_spare_servers <span class="o">=</span> 5
pm.max_requests <span class="o">=</span> 500
<span class="p">;</span>php_admin_value<span class="o">[</span>sendmail_path<span class="o">]</span> <span class="o">=</span> /usr/sbin/sendmail -t -i -f www@my.domain.com
<span class="p">;</span>php_flag<span class="o">[</span>display_errors<span class="o">]</span> <span class="o">=</span> off
<span class="p">;</span>php_admin_value<span class="o">[</span>error_log<span class="o">]</span> <span class="o">=</span> /var/log/fpm-php.www.log
<span class="p">;</span>php_admin_flag<span class="o">[</span>log_errors<span class="o">]</span> <span class="o">=</span> on
<span class="p">;</span>php_admin_value<span class="o">[</span>memory_limit<span class="o">]</span> <span class="o">=</span> 32M
php_flag<span class="o">[</span>display_errors<span class="o">]</span> <span class="o">=</span> on
php_admin_value<span class="o">[</span>error_log<span class="o">]</span> <span class="o">=</span> /var/log/fpm-php.www.log
php_admin_flag<span class="o">[</span>log_errors<span class="o">]</span> <span class="o">=</span> on</code></pre>
<p>Dans /etc/nginx/nginx.conf il faut dédièser <code>server_tokens off;</code>, ce qui permet de cacher la version de Nginx, ce que vous pouvez tester depuis votre pc par telnet (ou nc ou lynx -head ou d'autres) :</p>
<pre><code class="sh">telnet 192.168.1.10 80
HEAD HTTP/1.1</code></pre>
<p>Ce qui affiche <code>nginx</code> au lieu de <code>nginx.numversion</code>. Pour cacher plus d'informations, il faut compiler Nginx.</p>
<p>Vous créez un répertoire pour les journaux de Nginx et redémarrez le service :</p>
<pre><code class="sh">mkdir /var/log/nginx/
service nginx restart</code></pre>
<h2 id="hello-the-world">Hello The World</h2>
<h3 id="la-box-internet">La box Internet</h3>
<p>Pour le moment vous êtes le seul à pouvoir accéder à votre site, mais le reste de l'univers s'impatiente. Il faut rendre votre site accessible à l'extérieur, d'abord par votre boîtier Internet. Le mien est celui de SFR, mais le principe est le même partout. Dans la partie NAT, Il faut effectuer une translation de port entre votre rpi et l'Internet par le port 80. Vous entrez l'adresse IP du rpi, établissez un protocole TCP, et définissez le port 80 comme port de communication.</p>
<h3 id="votre-nom-de-domaine-chez-noip">Votre nom de domaine chez noip</h3>
<p>Le boîtier a ouvert une porte, mais il vous manque une adresse. Vous pouvez acheter un nom de domaine, autour de 15 euros, mais dans ma démarche de solutions gratuites, j'utilise un nom de domaine attribué par <a href="http://www.noip.com">www.noip.com</a>. Bien sûr, cette solution comporte le risque de la disparition soudaine d'un service gratuit mais privé. Vous pouvez vous inscrire <a href="http://www.noip.com/select-account-type.php">ici</a>, prenez l'option « Free » et créez votre compte No-IP. Vous pouvez choisir un nom selon les disponibilités, en le faisant suivre de .noip.me, .zapto.org, .sytes.net, etc.</p>
<p>Attention, il y a un petit piège. Remplissez le formulaire, avec par exemple nomsite.sytes.net, et cochez le petit carré blanc « Create my hostname later », et ensuite validez par un Sign Up. Ensuite confirmation par mail, vous êtes redirigé dans votre espace membre et vous pouvez « Add a host ». Ici vous enregistrez votre adresse nomsite.sytes.net, choisissez le type DNS Host(A), et ajoutez l'adresse IP externe de votre boîtier Internet.</p>
<p>Si vous avez comme moi une adresse IP dynamique, le boîtier de SFR gère bien le lien avec no-ip dans Menu Réseau/DynDNS. Activez le service, sélectionnez no-ip.com, entrez vos compte et password no-ip, ainsi que l'adresse nomsite.sytes.net. La prochaine fois que vous redémarrerez votre boîter Internet, 3 ou 4 minutes suffiront pour que votre nom de domaine soit associé à la nouvelle adresse IP dynamique.</p>
<p>Si vous êtes chez un autre fournisseur d'accès, vous pouvez utiliser ce logiciel fourni pour no-ip pour mettre à jour votre DNS : <a href="http://www.noip.com/downloads.php?page=linux">http://www.noip.com/downloads.php?page=linux</a></p>
<p>Maintenant que votre nom de domaine est visible depuis l'extérieur, dans le fichier /etc/nginx/sites-available/nomsite il faut remplacer <code>server_name localhost;</code> par <code>server_name nomsite.sytes.net;</code> puis</p>
<pre><code class="sh">service nginx restart</code></pre>
<h2 id="installation-et-configuration-de-pluxml">Installation et configuration de Pluxml</h2>
<p>Récupérez le fichier d'installation ici, dézippez-le et copiez-le dans /var/www/ en lui donnant les droits appropriés.</p>
<pre><code class="sh">chown -R www-data.www-data /var/www/
chmod -R <span class="m">770</span> /var/www/
service nginx restart</code></pre>
<p>Depuis votre navigateur allez à l'adresse <code>http://nomsite.sytes.net/install.php</code> et remplissez le formulaire:</p>
<pre><code>langue+heure
Nom de l'administrateur
Identifiant de connexion à l'administration
Mot de passe
Installer
</code></pre>
<p>Après cela supprimez le fichier <code>/var/www/install.php</code>. Vous pourrez installer différents thèmes, ajouter des extensions, etc. Visitez le <a href="http://www.pluxml.org">site</a>, où vous trouverez un wiki, des thèmes, un forum, etc.</p>
<h3 id="modifier-le-thème">Modifier le thème</h3>
<p>Un petit conseil si vous souhaitez modifier les fichiers PHP et CSS du thème du blogue (mais rien ne vous y oblige si votre thème vous satisfait) : <br>
Je n'ai pas supprimé tous les paquets graphiques de Raspbian afin d'éditer ces fichiers plus confortablement avec Nedit. Pour cela vous lancerez <code>ssh -X -Y -p 22 votre_login_rpi@192.168.1.10</code>. Ensuite vous pouvez éditer avec nedit les fichiers concernés situés dans /var/www/themes/defaut/, defaut étant le nom du thème par défaut.</p>
<p>Par contre cela pose des problèmes de droit sur ces fichiers dont www-data.www-data est propriétaire. Deux possibilités s'offrent à vous :</p>
<ul>
<li>ajoutez votre_login_rpi au groupe www-data dans /etc/group ;</li>
<li>chmod o+w *.php style.css, édition des fichiers, puis chmod o-w *.php style.css.</li>
</ul><p>J'ai choisi la deuxième solution, plus contraignante mais plus sécurisée.</p>
<h3 id="corriger-un-bogue">Corriger un bogue</h3>
<p>Il y a un bogue dans Pluxml lorsque les personnes qui viennent poster un commentaire souhaitent inscrire leur site web. Le site nomsite.sytes.net est récupéré tel quel sans « http:// », donc si on clique dessus la redirection ne s'effectue pas. J'utilise le thème « defaut », peut-être que ce boque est absent des autres thèmes. Pour ajouter « http:// » par défaut dans le formulaire, il faut modifier le fichier /var/www/themes/defaut/commentaires.php et remplacer:</p>
<pre><code class="php"><span class="o"><</span><span class="nx">input</span> <span class="nx">id</span><span class="o">=</span><span class="s2">"id_site"</span> <span class="nx">name</span><span class="o">=</span><span class="s2">"site"</span> <span class="nx">type</span><span class="o">=</span><span class="s2">"text"</span> <span class="nx">size</span><span class="o">=</span><span class="s2">"20"</span> <span class="nx">value</span><span class="o">=</span><span class="s2">"<?php </span><span class="si">$plxShow->comGet</span><span class="s2">('site',''); ?>"</span> <span class="o">/></span></code></pre>
<p>par</p>
<pre><code class="php"><span class="o"><</span><span class="nx">input</span> <span class="nx">id</span><span class="o">=</span><span class="s2">"id_site"</span> <span class="nx">name</span><span class="o">=</span><span class="s2">"site"</span> <span class="nx">type</span><span class="o">=</span><span class="s2">"text"</span> <span class="nx">size</span><span class="o">=</span><span class="s2">"20"</span> <span class="nx">value</span><span class="o">=</span><span class="s2">"<?php </span><span class="si">$plxShow->comGet</span><span class="s2">('site','http://'); ?>"</span> <span class="o">/></span></code></pre>
<h2 id="administration-du-serveur">Administration du serveur</h2>
<p>Maintenant vous avez un blogue, vous postez vos articles, recevez des commentaires, etc. Tout va bien. Vraiment bien ? Votre serveur est une porte ouverte sur internet, votre nom de domaine est fixé pour l'éternité, connu du plus grand nombre. Il faut donc lui prodiguer protection et surveillance, à l'aide de quelques outils à mettre en place et à configurer.</p>
<h3 id="le-pare-feu-iptables">Le pare-feu Iptables</h3>
<p>Je ne vais pas vous faire un cours, mais seulement vous montrer mon pare-feu. Les règles iptables sont le moyen le plus simple de filtrer les entrées/sorties de votre rpi. <strong>Attention à cette étape, une mauvaise règle ssh peut vous faire perdre votre connexion avec le rpi, et dans ce cas la seule solution sera de vous connecter via la tv pour réparer le script.</strong></p>
<p>Il y a 3 scripts à écrire, et pour les rendre plus lisibles, j'emploierai cette nomenclature :</p>
<ul>
<li>adresse.ip.rpi (192.168.1.10)</li>
<li>adresse.ip.pc (192.168.1.11)</li>
<li>adresse.ip.box (192.168.1.1)</li>
</ul><p><strong>/etc/init.d/fw</strong></p>
<pre><code class="sh"><span class="c">#!/bin/sh</span>
<span class="c">### BEGIN INIT INFO</span>
<span class="c"># Provides: fw</span>
<span class="c"># Required-Start: $remote_fs $syslog</span>
<span class="c"># Required-Stop: $remote_fs $syslog</span>
<span class="c"># Default-Start: 2 3 4 5</span>
<span class="c"># Default-Stop: 0 1 6</span>
<span class="c"># Short-Description: pare-feu iptables</span>
<span class="c"># Description: iptables</span>
<span class="c">### END INIT INFO</span>
<span class="k">case</span> <span class="nv">$1</span> in
<span class="s2">"start"</span><span class="o">)</span>
/etc/fwstart
<span class="p">;;</span>
<span class="s2">"stop"</span><span class="o">)</span>
/etc/fwstop
<span class="p">;;</span>
<span class="s2">"restart"</span><span class="o">)</span>
/etc/fwstop
/etc/fwstart
<span class="p">;;</span>
<span class="k">esac</span></code></pre>
<p><strong>/etc/fwstop</strong></p>
<pre><code class="sh"><span class="c">#!/bin/sh</span>
<span class="c"># remise à zero des règles de filtrage</span>
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
<span class="c"># nous les faisons pointer par défaut sur ACCEPT</span>
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT</code></pre>
<p><strong>/etc/fwstart</strong></p>
<pre><code class="sh"><span class="c">#!/bin/sh</span>
<span class="k">if</span><span class="o">=</span>eth0
<span class="c"># remise a zero des règles de filtrage</span>
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
<span class="c"># règles par défaut</span>
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
<span class="c"># rebouclage/loopback</span>
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
<span class="c"># règles pour abandonner/droper silencieusement les transmissions internes du réseau local</span>
iptables -I INPUT -i <span class="nv">$if</span> -s adresse.ip.box -d 224.0.0.1/24 -p igmp -j DROP
iptables -I INPUT -i <span class="nv">$if</span> -s 172.16.255.254 -d 224.0.0.1/24 -p igmp -j DROP
<span class="c"># dns local</span>
iptables -A OUTPUT -o <span class="nv">$if</span> -s adresse.ip.rpi -d adresse.ip.box -p udp -m udp --sport 1024: --dport <span class="m">53</span> -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i <span class="nv">$if</span> -s adresse.ip.box -d adresse.ip.rpi -p udp -m udp --sport <span class="m">53</span> --dport 1024: -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
<span class="c"># ssh rpi - pc ### ATTENTION à cette règle : mal écrite, elle supprime votre connexion au rpi ###</span>
iptables -A OUTPUT -o <span class="nv">$if</span> -p tcp --source adresse.ip.rpi --source-port <span class="m">22</span> --destination adresse.ip.pc --destination-port 1024: -j ACCEPT
iptables -A INPUT -i <span class="nv">$if</span> -p tcp --source adresse.ip.pc --source-port 1024: --destination adresse.ip.rpi --destination-port <span class="m">22</span> -j ACCEPT
<span class="c"># règles http du serveur</span>
iptables -A OUTPUT -o <span class="nv">$if</span> -p tcp --source adresse.ip.rpi --source-port <span class="m">80</span> --destination-port 1024: -j ACCEPT
iptables -A INPUT -i <span class="nv">$if</span> -p tcp --source-port 1024: --destination adresse.ip.rpi --destination-port <span class="m">80</span> -j ACCEPT
<span class="c"># règles http du rpi comme client internet, à activer pour les mises à jour apt-get et Pluxml (plugins et une partie de l'administation), à dédièser selon les besoins (les mises à jour ne sont pas fréquentes, une fois par semaine au maximum)</span>
<span class="c">#iptables -A OUTPUT -o $if -s adresse.ip.rpi -d 0.0.0.0/0 -p tcp -m multiport --dports 80,443 -m conntrack ! --ctstate INVALID -j ACCEPT</span>
<span class="c">#iptables -A INPUT -i $if -s 0.0.0.0/0 -d adresse.ip.rpi -p tcp -m multiport --sports 80,443 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT</span>
<span class="c"># whois pour awstats</span>
iptables -A OUTPUT -o <span class="nv">$if</span> -p tcp --source adresse.ip.rpi --source-port 1024: --destination-port <span class="m">43</span> -j ACCEPT
iptables -A INPUT -i <span class="nv">$if</span> -p tcp --destination adresse.ip.rpi --source-port <span class="m">43</span> --destination-port 1024: -j ACCEPT
<span class="c"># ntp</span>
iptables -A OUTPUT -o <span class="nv">$if</span> -p udp --source adresse.ip.rpi --source-port <span class="m">123</span> --destination-port <span class="m">123</span> -j ACCEPT
iptables -A INPUT -i <span class="nv">$if</span> -p udp --source-port <span class="m">123</span> --destination adresse.ip.rpi --destination-port <span class="m">123</span> -j ACCEPT
<span class="c"># journalisation des connexions abandonnées/dropées</span>
iptables -t filter -A INPUT -p all -j LOG --log-prefix<span class="o">=</span><span class="s2">"DROPIN: "</span>
iptables -t filter -A OUTPUT -p all -j LOG --log-prefix<span class="o">=</span><span class="s2">"DROPOUT: "</span></code></pre>
<p>Vous pouvez enregistrer votre script puis le démarrer</p>
<pre><code class="sh">update-rc.d fw defaults
service fw start</code></pre>
<p>Il est recommandé d'installer nmap et de vérifier l'état des ports du rpi par <code>nmap -v nomsite.sytes.net</code>.</p>
<h3 id="rsyslog">Rsyslog</h3>
<p>Pour obtenir une meilleure lisibilité des journaux du site, il faut modifier /etc/rsyslog.conf, au début de la partie <code>RULES</code> et avant les premières règles.</p>
<pre><code class="sh">:msg, contains, <span class="s2">"DROPIN: "</span> -/var/log/dropin.log
<span class="p">&</span> ~
:msg, contains, <span class="s2">"DROPOUT: "</span> -/var/log/dropout.log
<span class="p">&</span> ~</code></pre>
<p>En lien avec les 2 dernières règles de /etc/fwstart, ceci permettra à Iptables d'envoyer les messages de drop dans des fichiers à part, à consulter régulièrement.</p>
<pre><code class="sh">service fw restart
service rsyslog restart</code></pre>
<h3 id="ssh">SSH</h3>
<p>SSH est un moyen sécurisé de connexion entre ordinateurs. Le fichier /etc/ssh/sshd_config du rpi peut être configuré plus finement. <strong>Attention</strong> des erreurs vous feront perdre votre connexion SSH avec le rpi. Améliorons le fichier /etc/ssh/sshd_config :</p>
<ul>
<li>
<code>Port 22</code> par défaut le port SSH est 22, vous devriez en choisir un autre (et revoir les règles SSH d'Iptables). Prenez un port disponible (voir /etc/services et Google).</li>
<li>
<code>PermitRootLogin no</code> il vaut mieux activer cette option et vous loguer sur le rpi comme utilisateur non privilégié, puis passer en root par su</li>
<li>
<code>AllowUsers votre_login_pc@adresse.ip.pc</code> seul l'utilisteur « votre_login_pc » de cette machine (le nom de l'utilisateur du pc) pourra se connecter au rpi par SSH (ne pas confondre le nom de l'utilisateur du rpi « votre_login_rpi » et le nom d'utilisateur du pc « votre_login_pc »)</li>
</ul><p>Puis <code>service ssh restart</code></p>
<p>Quelques commandes SSH :</p>
<ul>
<li>connexion simple</li>
</ul><p><code>ssh -p 22 votre_login_rpi@adresse.ip.rpi</code></p>
<ul>
<li>connexion graphique</li>
</ul><pre><code class="sh">ssh -X -Y -p <span class="m">22</span> votre_login_rpi@adresse_ip_rpi
nedit /var/www/themes/defaut/style.css <span class="p">&</span></code></pre>
<ul>
<li>depuis le pc, copie de fichier du pc vers le rpi</li>
</ul><pre><code class="sh">scp -P <span class="m">22</span> nom_fichier votre_login_rpi@adresse_ip_rpi:/home/votre_login_rpi/</code></pre>
<h3 id="les-clefs-ssh">Les clefs SSH</h3>
<p>Il y a une méthode plus sécurisée pour assurer la connexion SSH entre le PC et le rpi, par un système de clefs. Alors que la connexion classique est autorisée par un mot de passe, la connexion par clefs entrepose des données sur les 2 machines, et SSH ira vérifier la validité de ces données sur chacune, ainsi qu'un mot de passe, pour autoriser la connexion. Sur votre PC en tant qu'utilisateur votre_login_pc (je suis sur Arch mais la procédure doit être la même partout) :</p>
<ul>
<li>
<code>ssh-keygen -t rsa</code> génération d'une paire de clefs, une clef privée id_rsa et une clef publique id_rsa.pub dans le répertoire par défaut /home/votre_login_pc/.ssh/</li>
<li>
<code>Enter passphrase (empty for no passphrase):</code> entrez une <em>passphrase</em>, c'est-à-dire un mot de passe</li>
<li><code>Your identification has been saved in /home/votre_login_pc/.ssh/id_rsa</code></li>
<li><code>Your public key has been saved in /home/votre_login_pc/.ssh/id_rsa.pub</code></li>
</ul><p>Il faut maintenant envoyer au rpi la clef publique <code>ssh-copy-id -i ~/.ssh/id_rsa.pub votre_login_rpi@adresse.ip.rpi -p 22</code></p>
<p>Vous vous connectez comme auparavant par <code>ssh -p 22 votre_login_rpi@adresse.ip.rpi</code>, mais dorénavant c'est la <em>passphrase</em> qui vous sera demandée.</p>
<h3 id="logwatch">Logwatch</h3>
<p>Logwatch parcourt et analyse les fichiers journaux dans /var/log/ et envoie un courriel.<br><code>apt-get install logwatch</code> installe les paquets exim4-base exim4-config exim4-daemon-light heirloom-mailx libdate-manip-perl libyaml-syck-perl logwatch.</p>
<p>L'installation va jusqu'à sa fin, mais au moment du lancement du serveur de courriels Exim, j'ai eu cette erreur:</p>
<p><code>[ ok ] Starting MTA: exim4</code><br><code>ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken</code><br>
C'est un problème avec IPv6 qui n'est pas présent sur le rpi, il faut donc modifier /etc/exim4/update-exim4.conf.conf en remplaçant<br><code>dc_local_interfaces='127.0.0.1 ; ::1'</code> par <code>dc_local_interfaces='127.0.0.1'</code><br>
puis lancez <code>update-exim4.conf</code></p>
<p>Afin de lire les courriels root sous votre compte votre_login_rpi, modifiez /etc/aliases en ajoutant <code>root:votre_login_rpi</code><br><code>service exim4 restart</code></p>
<pre><code class="sh">mkdir /var/cache/logwatch
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/</code></pre>
<p>J'ai modifié /etc/logwatch/conf/logwatch.conf en commentant les lignes suivantes :</p>
<pre><code class="sh"><span class="c">#MailTo = root</span>
<span class="c">#MailFrom = Logwatch</span>
<span class="c">#Service = "-zz-network"</span>
<span class="c">#Service = "-zz-sys"</span>
<span class="c">#Service = "-eximstats"</span>
<span class="c">#mailer = "/usr/sbin/sendmail -t"</span></code></pre>
<p>et remplacé « Detail = Low » par « Detail = 10 » afin d'avoir de plus amples informations.</p>
<p>Un script cron lancera un script logwatch tous les jours à 6h25, l'étude se faisant sur les fichiers journaux de la journée précédente, et sur vos services activés et présents dans le fichier /usr/share/logwatch/default.conf/services. Demain, sous votre compte, vous n'aurez qu'à taper <code>mail</code>.</p>
<p>Le problème, c'est que Nginx n'est pas présent dans la liste de Logwatch, il faut donc s'en occuper.</p>
<p>D'abord Logwatch lit un certain format de fichier, c'est pour cela que les fichiers de log de Nginx sont au format combined dans /etc/nginx/sites-available/nomsite <code>access_log /var/log/nginx/access.log combined;</code><br>
Nginx rejette le format combined pour error.log, je ne suis pas parvenu à l'intégrer.</p>
<p>On peut maintenant configurer des fichiers Nginx pour logwatch, en prenant comme modèle les fichiers http.conf.</p>
<pre><code class="sh"><span class="nb">cd</span> /usr/share/logwatch/default.conf/logfiles
cp http.conf nginx.conf</code></pre>
<p>et modifier ce dernier en supprimant toutes les lignes <code>LogFile = et Archive =</code></p>
<p>puis ajoutez</p>
<pre><code>LogFile = nginx/*access.log
LogFile = nginx/*access.log.1
Archive = nginx/*access.log.*.gz
</code></pre>
<pre><code class="sh"><span class="nb">cd</span> /usr/share/logwatch/default.conf/services/
cp http.conf nginx.conf</code></pre>
<p>et modifier ce dernier en remplaçant au début http par nginx</p>
<pre><code>Title = "nginx"
LogFile = nginx
</code></pre>
<pre><code class="sh"><span class="nb">cd</span> /usr/share/logwatch/scripts/services
cp http nginx</code></pre>
<p>pas de modification</p>
<p>En attendant les prochains courriels de Logwatch, vous pouvez le lancer en direct, en ciblant les services et en utilisant les logs de Today ou Yesterday:</p>
<pre><code class="sh">logwatch --output stdout --format text --detail <span class="m">10</span> --service cron --service iptables --service pam_unix --service sshd --service nginx --range Today --hostname raspberry</code></pre>
<p>Cependant, vous comprendrez mieux ce qui se passe sur votre système en examinant directement les journaux dans /var/log/, et en particulier ceux de /var/log/nginx/, où nginx.error vous informe des problèmes du serveur, et access.log qui vous montrera la liste de vos visiteurs, les tentatives de connexions illicites, etc.</p>
<h3 id="logrotate">Logrotate</h3>
<p>Logrotate fait tourner les fichiers journaux dans /var/log/, donc ceux de Nginx aussi. Mon fichier /etc/logrotate.d/nginx se présente comme suit, avec une rotation par semaine :</p>
<pre><code>/var/log/nginx/*.log {
weekly
missingok
rotate 10
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 cat /var/run/nginx.pid`
endscript
}
</code></pre>
<h3 id="sauvegarde-du-système">Sauvegarde du système</h3>
<p>Bon, il y a les méthodes subtiles et la mienne, genre bourrin, mais c'est efficace : débrancher le rpi, retirer la carte SD et l'USB, et les monter sur le pc afin de les sauvegarder dans les répertoires SD et USB.</p>
<pre><code class="sh">cp /chemin_de_montage_sd/* SD/ <span class="o">(</span>en n<span class="err">'</span>oubliant pas le fichier caché .firmware_revision<span class="o">)</span>
rsync -aAXv /chemin_de_montage_usb/* USB/</code></pre>
<p>Pendant que vous y êtes, un petit e2fsck sur la carte et la clef ne sont pas inutiles <code>e2fsck -f -v /dev/sd...</code></p>
<p>Bien sûr on peut faire les sauvegardes sans arrêter le rpi, avec rsync ou tar (à distance?) sur les bons répertoires, puis copie scp sur le pc. Mais quand tout est bien installé et finalisé, les sauvegardes deviennent rares et les seules informations à sauvegarder restent les données Pluxml dans /var/www/data/.</p>
<h2 id="analyse-et-tests">Analyse et tests</h2>
<h3 id="awstats">Awstats</h3>
<p>Afin de lire les statistiques de votre site, créez un répertoire où elles seront lisibles.</p>
<pre><code class="sh">mkdir /var/www/statistiques
chown -R www-data.www-data /var/www/statistiques</code></pre>
<p>Pour utiliser Awstats, vous aurez besoin de Whois, ainsi qu'une règle Iptables, déjà écrite dans le script en 7.1. L'installation se fait ainsi :</p>
<pre><code class="sh">apt-get update
apt-get install awstats libnet-xwhois-perl whois
cp /etc/awstats/awstats.conf /etc/awstats/awstats.nomsite.sytes.net.conf</code></pre>
<p>avec quelques lignes à remplacer :</p>
<ul>
<li>
<code>LogFile="/var/log/apache2/access.log"</code> par <code>LogFile="/var/log/nginx/access.log"</code>
</li>
<li>
<code>LogFormat=4</code> par <code>LogFormat=1</code>
</li>
<li>
<code>SiteDomain=""</code> par <code>SiteDomain="nomsite.sytes.net"</code>
</li>
<li>
<code>HostAliases="localhost 127.0.0.1"</code> par <code>HostAliases="localhost 127.0.0.1 nomsite.sytes.net"</code>
</li>
<li>
<code>SkipHosts=""</code> par <code>SkipHosts="192.168.1.11"</code> afin de masquer l'adresse ip de votre pc dans les statistiques, avec une modification de /usr/lib/cgi-bin/awstats.pl comme indiqué <a href="http://sourceforge.net/p/awstats/discussion/43428/thread/f88a56c0/">ici</a> :</li>
</ul><p>Remplacez</p>
<pre><code class="perl"><span class="k">my</span> <span class="nv">@arrayunreg</span> <span class="o">=</span> <span class="nb">map</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="sr">/\(\?[-^\w]\*:(.*)\)/</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$1</span> <span class="p">}</span>
<span class="p">}</span> <span class="nv">@$array</span><span class="p">;</span></code></pre>
<p>par</p>
<pre><code class="perl"><span class="k">my</span> <span class="nv">@arrayunreg</span> <span class="o">=</span> <span class="nb">map</span> <span class="p">{</span> <span class="n">UnCompileRegex</span><span class="p">(</span><span class="nv">$_</span><span class="p">)</span> <span class="p">}</span> <span class="nv">@$array</span><span class="p">;</span></code></pre>
<p>Un script Cron relance régulièrement la mise à jour des statistiques en envoyant des données dans /var/lib/awstats/. C'est le fichier /etc/cron.d/awstats, avec, par exemple, une mise à jour toutes les 2 heures :</p>
<pre><code>MAILTO=root
5 */2 * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.nomsite.sytes.net.conf -a -r /var/log/nginx/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=nomsite.sytes.net -update > /dev/null
</code></pre>
<p>Lorsque vous souhaitez lire les statistiques sur votre site, le plus simple est de lancer :</p>
<pre><code class="sh">/usr/share/awstats/tools/awstats_buildstaticpages.pl -dir<span class="o">=</span>/var/www/statistiques/ -update-config<span class="o">=</span>nomsite.sytes.net</code></pre>
<p>Inscrivez <code>nomsite.sytes.net/statistiques/awstats.nomsite.sytes.net.html</code> dans votre navigateur et vous pourrez voir de nombreuses statistiques sur le mois en cours. Après l'ivresse de votre succès, vous pourrez faire <code>rm /var/www/stat/*</code></p>
<h3 id="tests-du-site">Tests du site</h3>
<p>Des sites existent pour savoir si votre blogue fonctionne correctement :</p>
<ul>
<li>Vérification de la syntaxe html <a href="http://validator.w3.org/#validate_by_uri+with_options">http://validator.w3.org/#validate_by_uri+with_options</a>
</li>
<li>De bonnes infos utiles sur votre site <a href="http://www.webpagetest.org/">http://www.webpagetest.org/</a>
</li>
<li>Vitesse du site avec détail des fichiers <a href="http://tools.pingdom.com/fpt/#!/HsfEP">http://tools.pingdom.com/fpt/#!/HsfEP</a> et <a href="http://www.1-referencement.com/test-vitesse-site.html">http://www.1-referencement.com/test-vitesse-site.html</a>?</li>
</ul><h2 id="références">Références</h2>
<p><em>sans lesquelles je n'aurais pas pu faire cette installation ni ce tutoriel</em></p>
<ul>
<li>Raspberry Pi
<ul>
<li>Achat <a href="http://www.kubii.fr">http://www.kubii.fr</a>
</li>
<li>Raspbian sur USB <a href="http://www.networkinghowtos.com/howto/raspbian-on-raspberry-pi-using-sd-card-usb-memory-stick/">http://www.networkinghowtos.com/howto/raspbian-on-raspberry-pi-using-sd-card-usb-memory-stick/</a>
</li>
</ul>
</li>
<li>Installation, configuration et divers
<ul>
<li><a href="http://www.epingle.info/?p=1873">www.epingle.info/?p=1873</a></li>
<li><a href="http://www.benji1000.net/tutoriel-pour-debuter-avec-le-raspberry-pi/">http://www.benji1000.net/tutoriel-pour-debuter-avec-le-raspberry-pi/</a></li>
<li><a href="http://www.tropfacile.net/doku.php">http://www.tropfacile.net/doku.php</a></li>
<li><a href="http://www.framboise314.fr/page/2/">http://www.framboise314.fr/page/2/</a></li>
<li>site wiki rpi <a href="http://elinux.org/RPi_Hub">http://elinux.org/RPi_Hub</a>
</li>
<li>forum officiel rpi <a href="http://www.raspberrypi.org/phpBB3/">http://www.raspberrypi.org/phpBB3/</a>
</li>
</ul>
</li>
<li>
<p>Overclocking </p>
<ul>
<li><a href="http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=6201&start=350">http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=6201&start=350</a></li>
<li><a href="http://www.jeremymorgan.com/tutorials/raspberry-pi/how-to-overclock-raspberry-pi">http://www.jeremymorgan.com/tutorials/raspberry-pi/how-to-overclock-raspberry-pi</a></li>
<li><a href="http://elinux.org/RPi_config.txt#Overclocking">http://elinux.org/RPi_config.txt#Overclocking</a></li>
<li>Revue en ligne <a href="http://www.themagpi.com/">http://www.themagpi.com/</a>
</li>
</ul>
</li>
<li>
<p>Serveur Web Nginx</p>
<ul>
<li>Site Nginx (doc, wiki, etc.) <a href="http://wiki.nginx.org/Main">http://wiki.nginx.org/Main</a>
</li>
<li>Serveur Web sur rpi <a href="http://www.isalo.org/wiki.debian-fr/index.php?title=Serveur_web_%C3%A0_la_maison_:_raspberry_pi">http://www.isalo.org/wiki.debian-fr/index.php?title=Serveur_web_%C3%A0_la_maison_:_raspberry_pi</a>
</li>
<li>Installation sur Ubuntu <a href="http://blog.nicolargo.com/2011/01/installation-et-test-de-nginx-sous-ubuntu.html">http://blog.nicolargo.com/2011/01/installation-et-test-de-nginx-sous-ubuntu.html</a>
</li>
<li>Installation et configuration <a href="http://wiki.deimos.fr/Nginx_:_Installation_et_configuration_d%27une_alternative_d%27Apache">http://wiki.deimos.fr/Nginx_:_Installation_et_configuration_d%27une_alternative_d%27Apache</a>
</li>
<li>Optimiser Nginx + PHP-FPM + APC <a href="http://blog.pablo-ruth.fr/index.php/optimisation-web-installer-nginx-php-fpm-apc-sur-debian-squeeze/">http://blog.pablo-ruth.fr/index.php/optimisation-web-installer-nginx-php-fpm-apc-sur-debian-squeeze/</a>
</li>
</ul>
</li>
<li>
<p>Sécurité</p>
<ul>
<li>Securing services on Debian <a href="http://www.debian.org/doc/manuals/securing-debian-howto/ch-sec-services.en.html">http://www.debian.org/doc/manuals/securing-debian-howto/ch-sec-services.en.html</a>
</li>
<li>Iptables <a href="http://olivieraj.free.fr/fr/linux/information/firewall/index.html">http://olivieraj.free.fr/fr/linux/information/firewall/index.html</a>
</li>
<li>Logs Iptables <a href="http://blog.pastoutafait.org/billets/diriger-les-logs-iptables-vers-un-fichier-specifique">http://blog.pastoutafait.org/billets/diriger-les-logs-iptables-vers-un-fichier-specifique</a>
</li>
<li>Sécuriser nginx <a href="http://fralef.me/nginx-hardening-some-good-security-practices.html">http://fralef.me/nginx-hardening-some-good-security-practices.html</a>
</li>
<li>Nginx Security <a href="http://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html">http://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html</a>
</li>
<li>Securing nginx <a href="http://levigross.tumblr.com/post/4488812448/10-tips-for-securing-nginx">http://levigross.tumblr.com/post/4488812448/10-tips-for-securing-nginx</a>
</li>
</ul>
</li>
<li>
<p>Les logs Nginx</p>
<ul>
<li>Doc Logwatch sur Ubuntu <a href="http://doc.ubuntu-fr.org/logwatch">http://doc.ubuntu-fr.org/logwatch</a>
</li>
<li>Logwatch <a href="http://blog.pastoutafait.org/billets/Analyser-les-logs-de-NGinx-avec-LogWatch">http://blog.pastoutafait.org/billets/Analyser-les-logs-de-NGinx-avec-LogWatch</a>
</li>
<li>Logrotate <a href="http://voidandany.free.fr/index.php/logs-nginx-et-logrotate/">http://voidandany.free.fr/index.php/logs-nginx-et-logrotate/</a>
</li>
</ul>
</li>
<li>
<p>Awstats</p>
<ul>
<li>Awstats sur Ubuntu <a href="http://doc.ubuntu-fr.org/awstats">http://doc.ubuntu-fr.org/awstats</a>
</li>
<li>Awstats sur Debian Squeeze <a href="http://blog.pastoutafait.org/billets/Installation-et-configuration-de-AwStats-sur-Debian-Squeeze">http://blog.pastoutafait.org/billets/Installation-et-configuration-de-AwStats-sur-Debian-Squeeze</a>
</li>
<li>Awstats sur Debian <a href="http://aitibourek.wordpress.com/2012/12/21/installation-et-configuration-dawstats-sous-debian/">http://aitibourek.wordpress.com/2012/12/21/installation-et-configuration-dawstats-sous-debian/</a>
</li>
</ul>
</li>
<li>
<p>Pluxml</p>
<ul>
<li>Doc, plugins, themes, forum, etc. <a href="http://www.pluxml.org/">http://www.pluxml.org/</a>
</li>
<li>Installation <a href="http://sorrodje.alter-it.org/index.php?article27/pluxml-un-cms-light-installation">http://sorrodje.alter-it.org/index.php?article27/pluxml-un-cms-light-installation</a>
</li>
</ul>
</li>
<li><p><strong>And a Very Big Special Dedicace to : man</strong></p></li>
</ul></div><div><a href="https://linuxfr.org/news/votre-blogue-a-la-maison-sur-raspberry-pi.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/98826/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/votre-blogue-a-la-maison-sur-raspberry-pi#comments">ouvrir dans le navigateur</a>
</p>
cpaluiBenoît Sibaudpalm123ZeroHeureJiehongbarmicNÿcofravashyoolivierwebNicolas CasanovaYves BourguignonMohamed MEDIOUNIbubar🦥pingoomaxclaudexNeoXhttps://linuxfr.org/nodes/98826/comments.atomtag:linuxfr.org,2005:Diary/344422013-10-26T13:08:55+02:002013-10-26T13:08:55+02:00Comment apprend-on Linux à des néophytes.Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Depuis quelque temps j'ai formé le projet de communiquer Linux aux autres. J'ai donc contacté un centre social qui dispose d'une salle informatique destinée à un usage en libre service et à des petits cours d'initiation informatique (internet, cv, word, etc.). Il y a 7 pc W$ et un pc Linux, pas mis à jour depuis je ne sais quand.</p>
<p>Dans un premier temps j'ai cherché la distrib idéale pour des débutants Linux. Après avoir essayé Ubuntu et Mint, j'ai trouvé <a href="http://handylinux.org">Handy Linux</a>, un fork basé sur wheezy et xfce, très orienté vers les débutants en informatique. J'ai donc dans l'idée d'installer cette distrib sur les machines de la salle, et sur celles des personnes intéressées, et de leur faire une petite initiation. Je vise les nuls, les vieux, ceux qui ont un ordinausore sous W$ qui rame, etc.</p>
<p>Mais voilà, en cherchant sur google, je n'ai pas trouvé de méthode pratique pour l'initiation à linux. Je me pose des questions toutes bêtes : quels sont les logiciels les plus utilisés sous W$, et quels sont les équivalents sous linux; quels sont les pièges à éviter; comment fait-on pour enseigner linux le plus simplement possible ? etc.</p>
<p>Merci de me donner des pistes, des idées, des conseils.</p><div><a href="https://linuxfr.org/users/cpalui/journaux/comment-apprend-on-linux-a-des-neophytes.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/100119/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/cpalui/journaux/comment-apprend-on-linux-a-des-neophytes#comments">ouvrir dans le navigateur</a>
</p>
cpaluihttps://linuxfr.org/nodes/100119/comments.atomtag:linuxfr.org,2005:Diary/342242013-08-18T13:38:49+02:002013-08-18T13:38:49+02:00Tutoriel : auto-hébergement , Raspberry Pi et blog (publi-information)Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p><strong>Préambule 1</strong><br>
Ce qui suit fait plus de 10 lignes ;) et ne s'adresse pas à ceux qui ont déjà les connaissances nécessaires pour mettre en place et administrer un serveur ; c'est la présentation d'un simple <a href="http://cpalui.free.fr">tutoriel</a> sur l'auto-hébergement d'un blog sur Raspberry Pi.</p>
<p><strong>Préambule 2</strong><br>
Il y a encore six mois, l'idée de créer un blog me paraissait aberrante : afficher des photos de mon chat ou de mon antique Super5 toute propre, parler de mes 1001 mésaventures quotidiennes, commenter l'actualité people, etc. Non, je pensais plutôt écrire mes mémoires quand j'aurais 83 ans. </p>
<p>C'est alors qu'un ami (maudit soit-il), m'a demandé de faire un blog pour une petite association locale qu'il a cofondée. Ce jour-là, le destin avait frappé à ma porte. Je cherche sur le Net une solution facile et pas prise de tête, et me retrouve chez Google avec Blogger. Outil plutôt bien fait, facile à mettre en œuvre, d'utilisation simple pour les non-initiés. Et puis c'est tout, fin de la partie.</p>
<p>Mais le ver était dans le fruit, lentement le virus rongeait sa proie de l'intérieur, en l'occurrence mon intestin grêle. Au début, c'est l'outil blog qui m'a intéressé. Donc j'installe l'outil, on verra bien après. Je recherche à nouveau un outil pas trop prise de tête, mais bon je suis un vicieux, je jette mon dévolu sur Dotclear, Wordpress c'est trop connu, je suis snob. Alors je suis chez SFR, houla la mauvaise réputation des blogs sur SFR, je m'enfuis, condamné à l'errance numérique. Mais au fait, il y a plusieurs années, j'étais chez Free, et j'avais un petit site en HTML bien pourri avec un CV de chômeur. Je retrouve le site au bout de 15 tentatives de mot de passe, et mes tendres souvenirs de HTML et d'ASSEDIC emplissent mes yeux de larmes. Le site est rendu difficile à gérer puisque je ne peux accéder à la base de données qu'avec des commandes SQL que j'arrive péniblement à me remémorer. Du fait de mon départ vers la concurrence, Xavier a coupé mon interface phpmyadmin. Je suis déçu et trouve ça mesquin. Mais en cherchant un peu, j'apprends qu'on peut s'enregistrer gratuitement chez le traître et construire un site avec FTP, MySQL ou PostgreSQL, bref la totale. Si c'est <a href="https://subscribe.free.fr/accesgratuit/index.html">gratuit</a>, on va pas se gêner.</p>
<p>Je m'installe donc confortablement chez Xavier avec mon DotClear, et je commence à écrire, et même par y prendre goût, tout va bien. Vraiment ? Non, évidemment. Ayant succombé à un premier virus, l'effet Gillette me guettait dans l'ombre. L'animal avait pour nom : Raspberry Pi. Ma première réaction quand j'ai appris son existence et vu des photos : «Pffffouah!!! L'ordi oh ils appellent ça un ordi mdr faut vraiment être crétin pour gober des conneries pareilles, les gens y me font vraiment trop marrer, top naze.» Vous voyez, j'ai eu une première réaction saine et lucide, les anticorps ont bien fait leur boulot. Pas pour très longtemps, Internet est une maladie mortelle. «Pffffouah!!! Installer un site Web sur une carte de crédit, faut vraiment être crétin pour gober des conneries pareilles, les gens y me font vraiment trop marrer, top naze.»</p>
<p>Bref, je ne m'étends pas sur les nuits de torture et de honte que j'ai dû traverser avant de faire, penaud et le visage dissimulé derrière une écharpe, mon achat de la sale petite bête vicieuse déguisée en inoffensive framboise (pourquoi pas en Casimir pendant qu'on y est ?).</p>
<p>Et j'installe. Donc doc internet, prise de tête évidemment, blogs, forums, informations dispersées et contradictoires, enfin comme d'hab dans ces cas-là. Et puis ça marche, enfin ça a l'air, en tout cas c'est suffisant pour moi. J'écris mes posts, un peu d'administration mais pas trop, ça roule. Fin de la partie.</p>
<p>Et là, alors je vous dis pas, la dernière des conneries qu'il ne fallait surtout pas faire, je l'ai faite: « Il est pas peu fier de lui le bonhomme, c'est le roi du pétrole, tiens, et si j'abreuvais de mon savoir la masse des incultes qui errent dans l'obscurité, soyons altruiste et sortons-les de la fange où ils se vautrent complaisamment comme des gorets.» Si ce genre d'idée saugrenue vous traverse l'esprit, prenez vite une cuite et oubliez tout ça, c'est un conseil d'ami.</p>
<p>Bon, c'est parti mon quiqui. Mais que c'est chiant à faire un tuto, mais que c'est long, et que je m'y perds dans mes notes que je retrouve ou que je ne retrouve pas. Le doute s'installe, avec l'angoisse, les cigarettes et le whisky. Quelques nuits de cauchemar plus tard, agonisant et prêt à y laisser ma peau s'il le faut, je décide, hésitant et tremblant, de proposer mon tutoriel à … ? Oui, vous l'avez compris, mon esprit égaré par l'alcool et l'envie de passer à la télé m'ont poussé à l'ultime faute, celle qui allait définitivement me perdre : proposer un wiki à une institution centenaire et mondialement connue : linuxfr.org. Déjà "org", moi ça me fait peur, ça fait genre organisation mafieuse : «Ton tuto, si c'est de la daube, et je sais que c'est de la daube, t'as un contrat sur la tête.» Moi : «Même pas peur !»</p>
<p>Mais voilà, depuis plusieurs semaines, si je n'ai pas reçu une balle dans la bouche, le tuto est tombé dans les oubliettes de linuxfr, d'où il ne ressortira pas à mon avis. Comme on n'est jamais mieux servi que par soi-même, je prends les devants et décide de le poser sur mon ex-blog chez Free (le blog sur mon Rpi n'étant pas destiné à ce genre de prose).</p>
<p>Bref, voici le beau, le grand, celui que vous attendiez tous sans oser y croire, le sublime tutoriel de l'été 2013 : <a href="http://cpalui.free.fr">Installation d'un blog à la maison sur Raspberry Pi</a>. Bon, soyons modeste : c'est mon premier tuto, le potentiel d'erreurs dépasse l'entendement d'un ornithorynque de niveau bac, les solutions choisies sont personnelles et totalement discutables. J'ai installé la distribution Raspbian, le serveur Web Nginx, un CMS sans base de données, <a href="//linuxfr.org/news/pluxml-5-2-le-cms-propulse-a-l-xml-est-de-sortie">Pluxml</a>, et les outils habituels, ou pas, pour un site Web.</p><div><a href="https://linuxfr.org/users/cpalui/journaux/tutoriel-auto-hebergement-raspberry-pi-et-blog-publi-information.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99391/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/cpalui/journaux/tutoriel-auto-hebergement-raspberry-pi-et-blog-publi-information#comments">ouvrir dans le navigateur</a>
</p>
cpaluihttps://linuxfr.org/nodes/99391/comments.atomtag:linuxfr.org,2005:Diary/341852013-08-04T16:51:18+02:002013-08-04T16:51:18+02:00La liberté d'internet est en danger.... Mais, au fait, de quelle liberté parle-t-on ?Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Ceci n'est pas un troll, ceci n'est pas pas un journal, ni une pipe, c'est un coup de gueule, avec le ton polémique qui va avec. Mais puisque la liberté est menacée, c'est que la dictature est proche et que nous sommes en état de guerre. Donc polêmikôs. Je vous soumets ma réflexion, qui fait suite à la litanie new-age de tous les sages qui, dans un réflexe pavlovien incontrôlable, dès qu'ils entendent le mot internet, se mettent à hurler « Liberté ! » Et, pour paraphraser un <a href="http://www.ina.fr/video/I00012536">humoriste</a> du siècle dernier : « Bien entendu, on peut sauter sur sa chaise comme un cabri en disant liberté ! liberté ! liberté !… mais cela n'aboutit à rien. »</p>
<p>Depuis le début d'internet, les deux mots qui lui sont accolés mécaniquement sont liberté et créativité. Très franchement, je n'ai jamais compris pourquoi. Si vous pouvez me l'expliquer, avec de solides arguments et des exemples appropriés si possibles, je vous en serai reconnaissant. La liberté d'internet est devenu un lieu commun qui rassemble tout le monde. Il faut savoir soumettre les lieux communs à la question, les interroger.</p>
<p>Je lis et entends partout, c'est donc un consensus établi, que l'internet est un moyen de communication, un média de masse (mass media) dont l'un des attributs, voire un attribut essentiel, sine qua non, est la liberté. Le réseau des réseaux appartient à tous ! Enfin presque, surtout à ceux qui vivent dans des pays riches. C'est un outil censitaire réservé en 2013 à 2,2 milliards d'internautes, c'est-à-dire moins du tiers de la population mondiale. Le premier problème semble donc la liberté d'avoir accès à internet.</p>
<p>Mais nous, au Nord, on n'a pas ce genre de problèmes bassement matérialistes, on a les moyens de s'offrir des obstacles existentialistes plus reluisants, plus héroïques. C'est carrément notre LIBERTE (Alleluia, tout le monde se lève, Hymne à la joie) qui est menacée. Liberté, j'écris ton nom….sur mon clavier. Au fait, Eluard a écrit son poème en 1942, sous occupation allemande, à une époque ou le mot liberté n'était pas un slogan publicitaire utilisé pour vendre des voitures, des smartphones, des abonnements triple play ou des cartes de crédit.</p>
<p>Donc, de quoi veut-on nous priver sur internet ? De notre liberté de lire et écrire, de créer, d'innover, d'apprendre, de transmettre, de communiquer, de s'exprimer, de dialoguer, de critiquer ? Ou bien de consommer, de télécharger, de mater des femmes à poil ou des chatons mouillés ? Internet est en danger, l'hyper-décentralisation salvatrice est menacée, le cyber-espionnage étatique vous surveille, vos droits numériques sont bafoués, etc. Mais quelle liberté, quels droits ? Dites-moi exactement comment vous jouissez de votre liberté sur internet, et en quoi cette liberté est menacée. Tenez, citez-moi un acte de liberté que vous avez commis ces douze derniers mois sur internet (d'ailleurs c'est une bonne idée pour un sondage, du genre : « Votre liberté de vous déguiser en Obi-wan Kenobi est-elle menacée par la NSA ? »).</p>
<p>Vous pourriez peut-être me parler de la liberté d’accès à l'information ? Mais quelle information ? Celle qui est filtrée par les sites que vous avez librement choisis, et seulement cette information, pas une autre, et surtout pas celle qui ne vous intéresse pas, mais qui est peut-être essentielle. Mais là, c'est à vous d'utiliser correctement vos possibilités, votre potentiel. C'est vous qui guidez vos doigts sur le clavier, ou la main très visible de Google ? L'accès à la connaissance et à l'information dépend plus de vous que de votre moteur de recherche.</p>
<p>Après la deuxième guerre mondiale, l'offre éditoriale de la presse française était très large, puis les Français en ont eu marre de lire, la tv c'est plus joli, ça bouge, et on peut s'endormir devant (en passant, la télévision à ses débuts a été présentée comme un moyen de créativité et de liberté). Les quotidiens nationaux ont tous disparu les uns après les autres. En terme de liberté, les gens préfèrent souvent qu'on choisisse pour eux, et ça c'est la liberté panurgique, je fais comme tout le monde, je choisis librement Google et Facebook, parce que c'est un droit inaliénable que la Quadrature du Net doit inscrire dans la Constitution.</p>
<p>OK, Google est un grand centralisateur de données, donc d'informations. Comme Wikipédia. Mais dans une société démocratique et libérale, si nous acceptons la servitude volontaire de nous comporter en consommateurs-citoyens, il ne faut pas crier au grand méchant loup castrateur de libertés, il suffit de se regarder dans le miroir.</p>
<p>Et puis les mails sont surveillés, bientôt censurés, comme le courrier l'est par les gouvernements en temps de guerre. Imaginez que vos mails soient lus, ils sont tellement dangereux, subversifs, polémiques, destructeurs, perturbateurs, révolutionnaires, indignés par l'état de la société et du monde, ils remettent tellement en cause les structures fondamentales de la société démocratique et libérale que la DGSE vous a mis sur écoute et qu'une geôle vous est déjà réservée à la Bastille. J'aimerais bien savoir comment cette liberté s'exerce dans ces mails si secrets et sacrés. Le courrier papier n'a pas disparu à cause des mails, il a disparu parce que les gens ont refusé d'exercer leur droit à l'écriture manuscrite, et à une forme de communication qui nécessitait un peu de temps et de réflexion. </p>
<p>Vous êtes-vous déjà accordé la liberté de réfléchir à ce qu'est la liberté aujourd'hui dans une société d'idéologie démocratique, libérale et capitaliste, dans laquelle le net et ses utilisateurs s'épanouissent comme des poissons dans l'eau ? Ou bien avez-vous plutôt choisi la liberté de prendre la pose du rebelle en armes décidé à en découdre avec le grand méchant loup yankee ? J'ai l'impression que les internautes s'ennuient parce qu'ils ne savent plus quoi faire de la liberté dont ils disposent, alors ça les réveille un peu de leur torpeur d'avoir des méchants à portée de clavier, en plus ils sont américains, on ne pouvait pas rêver mieux. « Indignez-vous ! », n'est-ce pas, ça défoule toujours un peu.</p>
<p>1984 a été écrit par Orwell en 1948 pour critiquer la dictature stalinienne. Si vous prenez le temps et la liberté de lire ce livre, vous comprendrez que nous sommes en plein dans ce qui est décrit, donc vous étiez prévenus, et qu'avez-vous fait ? La liberté n'est pas qu'un mot, ce n'est pas seulement un slogan qu'on balance sur un forum pour épater les copains, c'est un comportement, une éthique, un effort, un travail jamais achevé, où on ne gagne jamais une fois pour toutes. Avant de se plaindre des ennemis de la liberté, qu'ils soient réels ou imaginaires, il faut commencer par exercer cette liberté, qui n'est pas un droit, mais seulement une possibilité, qu'il faut décider volontairement de mettre en pratique. Ou pas.</p>
<p>D'autres l'ont dit bien mieux que moi (Foucault, Deleuze, Baudrillard, Debord, etc.), nous ne sommes plus dans une société de surveillance a posteriori, mais dans une société de contrôle a priori : il est inutile de surveiller les individus dans une société démocratique libérale, puisque les consommateurs agissent en fonction des messages que les pouvoirs économiques et idéologiques leur distillent : achetez nos nouvelles technologies, nos smartphones, tablettes, consoles de jeu, achetez les tuyaux, on vous a préparé des contenus qui vous plairont, même si vous les critiquez.</p>
<p>Depuis l'apparition de l'homme sur terre, les possibilité de communication n'ont jamais été aussi gigantesques. Il y a le matériel, les technologies, les logiciels. Votre liberté d'expression peut se déverser sur les forums, les blogs, les sites web, les réseaux sociaux, le tchat, etc., et ceci par l'écriture, la voix et l'image. Les possibilités n'ont jamais atteint un tel niveau, la liberté n'a jamais été aussi grande. Mais voilà, la liberté, c'est comme un grand trou noir qui fait peur, on reste au bord de peur de tomber dedans. Alors il vaut mieux se fabriquer des épouvantails pour se faire peur et se détourner vers le fond de la caverne où les ombres sont plus connues et plus rassurantes. Rien de neuf sous le soleil, depuis l'agora d'Athènes jusqu'à l'agora numérique, les sophistes ont toujours eu plus de succès grâce à leur séductions rhétoriques. Votez d'un clic de souris : Gorgias +10, Socrate -10.</p><div><a href="https://linuxfr.org/users/cpalui/journaux/la-liberte-d-internet-est-en-danger-mais-au-fait-de-quelle-liberte-parle-t-on.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99275/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/cpalui/journaux/la-liberte-d-internet-est-en-danger-mais-au-fait-de-quelle-liberte-parle-t-on#comments">ouvrir dans le navigateur</a>
</p>
cpaluihttps://linuxfr.org/nodes/99275/comments.atom