Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Le RaspBerry Pi

Le RPI est un PC de la taille d'une carte de crédit, avec une connectique riche : hdmi, audio/vidéo, ethernet, usb, gpio (pour piloter des appareils ou des capteurs).

1. Description

Le modèle actuel est le Raspberry Pi 3, ainsi qu'un modèle économique (Raspberry Pi Zero) pour 5 dollars.

Raspberry Pi 2

Raspberry Pi Zero

Toute une communauté s'est créée autour du RPI, inventant :

  • de nombreuses applications peu coûteuses :
    • serveur dédié (serveur de fichiers accessible par wifi)
    • Domotique : piloter tout l'électroménager depuis le réseau par des serveurs RPI
    • etc.
  • des trucs et astuces
  • des plugins
  • etc.
Processeur
Broadcom BCM2836 Arm7 Quad Core cadencé à 900 MHz
RAM
1 Go
compatibilité
compatible avec les modèles précédents de RPI, que ce soit au niveau logiciel ou au niveau physique
compatible avec Windows 10
ports, sorties et prises
  • 1 port GPIO étendu à 40 pins, 100% compatible avec les modèle B+ et A+. Les 26 premières broches sont identiques à celles des modèles A et B
  • 4 ports USB 2.0 ; les ports USB peuvent fournir jusqu'à 1,2 A (possibilité de connexion directe au RPI de périphériques alimentés par le port USB)
  • 1 port Ethernet 10/100 Mbits
  • Source d'alimentation Micro USB 5V, 2 Amp (type chargeur de téléphone)
  • 1 sortie vidéo + audio analogique via un connecteur jack 4 pt
  • 1 prise HDMI
  • 1 connecteur Micro SD pour le système d'exploitation et le stockage de données
  • 1 Port CSI pour connecter une caméra ou un écran tactile au RPI
Système d'exploitation
Le RPI supporte :
Raspbian, une version adaptée de Linux Debian
d'autres systèmes : Pidora, OpenElec, RaspBMC, RISC OS, Arch Linux… et même Windows 10

2. Compatibilité

Le RPI appartient au monde Linux, son système d'exploitation étant une version adaptée de Debian.

Comme tout Linux, il s'insère parfaitement dans un réseau comportant des machines Linux ou Windows.

3. Pré-requis

Le RPI utilise une carte µSD comme disque dur pour le système d’exploitation (le plus souvent, Raspbian).

Le RPI est livré nu. Il faut lui adjoindre :

  • une carte micro-SD, classe 4 1) de 8Go au moinsCliquez pour voir des conseils
  • un câble Ethernet pour mettre le RPI en réseau en le branchant sur un routeur (une box le plus souvent)
  • une alimentation micro-USB d'au moins 5V 2 A (par exemple un chargeur pour téléphone portable)

Et facultativement :

  • un câble HDMI/HDMI, HDMI/DVI ou un câble vidéo/audio jack 4 pt pour des TV ou des moniteurs avec entrée HDMI ou DVI (inutile de se ruiner en moniteur, la TV suffit)
  • un clavier / souris
  • un hub USB avec alimentation séparée

On peut brancher le RPI sur une freebox :

  • avec le câble Ethernet
  • et l'alimenter avec un câble USB ↔ micro-USB branché sur une prise USB de la freebox.

On le manipule alors à distance, à partir d'un PC du réseau, via une connexion SSH (en utilisant Putty si ce PC est sous Windows).

3.1. Formatage de la carte (µ)SD

Installez-vous sur un PC.

Insérez la carte (µ)SD dans un lecteur de cartes et formatez-la en FAT 32 :

  • sous Windows, utilisez l'outil de gestion des disques (Windows 10 : clic droit sur le bouton Démarrer, autres Windows : clic droit sur l'icône de l'ordinateur sur le bureau)
  • sous Linux, utilisez gparted ou la version parted en ligne de commande

4. Installation

Nous supposons ici que nous n'avons ni écran ni clavier ni souris à brancher sur le RPI.

Nous travaillons donc depuis un PC du réseau, via SSH ou VNC.

4.1. Méthode classique, sans NOOBS

(cf. Installer une carte SD Raspberry avec Raspbian sous GNU/Linux)

Placez-vous sur un PC sous Linux. Si vous ne possédez pas de PC sous Linux, vous pouvez utiliser une Live Distribution sur une clef USB.

Téléchargez le fichiez zip de Raspbian ici : http://downloads.raspberrypi.org/raspbian_latest. Dézippez-le pour obtenir un fichier *.img que vous enregistrez où vous voulez (par défaut dans le dossier ~/Téléchargements)

Insérez la carte micro-SD dans un lecteur de carte. Linux ne monte pas toujours automatiquement la carte SD.

Repérez la carte SD (/dev/sdX ou /dev/mmX) :

  • soit avec l'utilitaire Disques en examinant les propriétés de la carte micro-SD.
  • soit en lançant
    $ sudo ls -ltr /dev/*
    

    pour lister les dev ; le nom de votre carte devrait apparaître dans les derniers résultats, de la forme mmX, ou sdX (X étant les numéros de partition).

Copiez Raspbian sur la carte SD :

  • avec l'utilitaire graphique Etcher à télécharger sur https://etcher.io/ qui indique le déroulement de l'opération et finit par une vérification.
  • ou en ligne de commande :
    $ sudo dd bs=1M if=chemin_vers_le_img_de_raspbian of=/dev/sdX
    

    (sdX sans numéro de partition). L’écriture de Raspbian sur la carte SD peut être longue, c'est normal.

Quand c'est fini, activez SSH en créant un fichier ssh dans le répertoire /boot/ :

$ cd /chemin/de/boot
touch ssh

.Au démarrage, le RPI recherche ce fichier ; s'il le trouve, il active SSH puis supprime le fichier.

Vous pouvez retirer votre carte SD : Raspbian est installé dessus.

voir la page Raspbian : Installer une carte SD Raspberry avec Raspbian sous GNU/Linux

et Installation du système du Rpi avec BerryBoot

4.2. Avec NOOBS

Téléchargez NOOBS Lite sur le site : https://www.raspberrypi.org/downloads/noobs/ :

Dé-compressez le fichier zip (double-clic) et extrayez son contenu à la racine de la carte µSD.

Éditez le fichier recovery.cmdline et ajoutez à la fin de la ligne le paramètre vncinstall, ce qui donne par exemple :

recovery.cmdline
runinstaller quiet (...) elevator=deadline vncinstall

noobsconfig permet de personnaliser l'installation d'une installation d'une distribution avec NOOBS

noobsconfig est intégré à PINN (un fork de NOOBS) : préférez donc PINN à NOOBS ; cela évite de devoir copier noobsconfig.zip et patcher les fichiers partition_setup.sh

Cliquez pour voir comment

Allez dans le répertoire /os et créez-y un répertoire Raspbian dans lequel vous créez un fichier ssh vide :

$ cd /media/.../os
$ mkdir Raspbian
$ cd Raspbian
$ <code>touch ssh

Créez enfin dans le répertoire /os/Raspbian un fichier Raspbian_boot.txt contenant :

Raspbian_boot.txt
ssh

4.3. Avec un disque WD PiDrive

Téléchargez le fichier zip de la version personnalisée de NOOBS sur le site de WDLabs http://wdlabs.wd.com/downloads/ 2)

4.4. Premier démarrage de la RPI

  • Installez la carte (µ)SD préparée sur votre RPI,
  • branchez le câble réseau
  • et l’alimentation du RPI.

Le RPI démarre. Attendez que les clignotements se calment.

4.5. Installation depuis un PC du réseau

4.5.1. Installation via VNC (NOOBS)

Placez-vous devant un PC du réseau.

Pour connaître l'IP du PC sur lequel vous travaillez, lancez ifconfig :

$ ifconfig
...
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255
...

Par exemple,

  • si vous lisez à la rubrique inet l'adresse IP de la machine 192.168.0.1,
  • c'est que le réseau est 192.168.0
  • et que l'adresse du RPI est de la forme 192.168.0.*.

Le réseau à scanner est donc 192.168.0.*.

Pour retrouver l'adresse du RPI, lancez nmap et repérez les lignes concernant le Raspberry : :

$ sudo nmap -sV -T4 -O -F --version-light 192.168.0.*
...
Starting Nmap 7.60 ( https://nmap.org ) at 2019-06-08 11:45 CEST
...
Nmap scan report for framboise.parc (192.168.0.31)
Host is up (0.0039s latency).
Not shown: 93 closed ports
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 3.0.2
22/tcp   open  ssh         OpenSSH 6.7p1 Raspbian 5+deb8u8 (protocol 2.0)
53/tcp   open  domain      dnsmasq 2.72
80/tcp   open  http        nginx 1.6.2
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5900/tcp open  vnc         RealVNC Enterprise 5.3 or later (protocol 5.0)
MAC Address: B8:27:EB:A0:A1:A6 (Raspberry Pi Foundation)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.8
Network Distance: 1 hop
Service Info: Host: FRAMBOISE; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
...
Nmap done: 256 IP addresses (5 hosts up) scanned in 50.77 seconds

Le RPI a donc l'adresse IP : 192.168.0.31

Vous auriez pu aussi :

  • lire la table DHCP de votre box qui donne la liste des ordinateurs connectés et leur IP.
  • ou utiliser une tablette sous Android connectée à votre réseau local, installer fing et scanner votre réseau, ce qui vous donnera la liste des machines connectées ainsi que leur IP, leur adresse MAC, et vous permettra aussi de connaître les services actifs sur chacune d’elles.

Téléchargez Vnc viewer sur https://www.realvnc.com/download/viewer/

  1. Choisissez votre système d'exploitation
  2. choisissez le binaire correspondant à votre système
  3. téléchargez sur le bureau ; c'est un exécutable sans installation

Lancez Vnc viewer (double clic) et connectez-vous en VNC au RPI en remplissant l'adresse IP du RPI puis ↵ Entrée :

L'écran du RPI apparaît :

  1. Choisissez la langue et le clavier français
  2. cochez Raspbian
  3. cochez Data Partition
  4. cliquez sur le bouton Réseaux Wi+Fi et sélectionnez votre réseau ainsi que son mot de passe
  5. cliquez sur le bouton Installer

Dans le message qui s'affiche, cliquez sur Oui

Quand l'installation est terminée, cliquez sur OK.

La connexion s'interrompt : fermez la fenêtre.

Éteignez la RPI et retirez la carte µSD.

Retournez sur le PC et insérez la carte µSD dans le lecteur.

Allez dans le répertoire boot de la carte µSD, créez un fichier vide nommé ssh

$ cd /media/[USER]/boot\\
$ sudo touch ssh

Démontez la carte µSD et installez-la sur votre RPI. Rallumez le RPI. Attendez que les clignotements se calment.

4.6. Sur un PC du réseau, mise en place de l'accès SSH à la RPI

Retournez sur le PC

Lancez nmap :

$ sudo nmap -O 192.168.0.31
...
Nmap scan report for framboise.parc (192.168.0.31)
Host is up (0.0046s latency).
...
22/tcp   open  ssh
...
MAC Address: B8:27:EB:A0:A1:A6 (Raspberry Pi Foundation)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.8
Network Distance: 1 hop
...

La connexion SSH est disponible. Voici comment la lancer.

Lancez une session SSH sur l'adresse du RPI sous l'utilisateur pi 3) :

$ ssh pi@192.168.0.31
...
pi@192.168.1.101's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun  4 07:17:34 2019
pi@framboise:~ $ 

En cas de réinstallation, Il se peut qu'un message s'affiche :

Dans ce cas, faites :

$ ssh-keygen -f "/home/<...>/.ssh/known_hosts" -R 192.168.0.31

comme demandé et recommencez.

A la première connexion acceptez la demande d’autorisation de clé de cryptage du SSH (Répondez yes à la demande de confirmation de clé)

A la demande de mot de passe, tapez raspberry (réglage d'usine).

En dernière ligne, le prompt confirme que vous n'êtes plus sur la console du pc mais sur celle du RPI.

Accéder au RPI sans fournir de mot de passe

Pour ne pas avoir à fournir le mot de passe à chaque connexion SSH au RPI, placez-vous sur le PC et tapez :

$ ssh-keygen -t dsa

Répondez ↵ Entrée à chaque fois pour ne pas avoir de mot de passe et acceptez les noms de fichier.

Envoyez la clé publique ainsi générée au RPI :

$ ssh-copy-id pi@framboise.local

Reconnectez-vous au RPI :

$ ssh pi@framboise.local

et donnez une dernière fois le mot de passe.

Déconnectez-vous. Maintenant, vous pouvez vous connecter au RPI via SSH sans mot de passe.

Pour automatiser cette connexion, créez avec les droits d'administration le fichier ~/.ssh/config pour y écrire ceci :

~/.ssh/config
Host framboise
User pi
Hostname framboise.local
Port 22
CheckHostIP no
LocalForward 5900 127.0.0.1:5900
Compression yes
ForwardX11 yes

Il suffit maintenant de :

$ ssh framboise

pour lancer une session SSH sur le RPI

  • sous l'utilisateur pi
  • sans mot de passe
  • et en mode graphique
$ ssh pi@192.168.0.31
sign_and_send_pubkey: signing failed: agent refused operation

Solution Les autorisations de fichier sont trop ouvertes (0644). Les changer ainsi :

$ chmod 600 ~/.ssh/id_rsa

4.7. Fixer l'adresse IP de la RPI sur le réseau

Pour attribuer des noms aux IPS, 3 méthodes :

  1. le plus simple : sur la box, en y configurant un bail DHCP
  2. sur chaque PC du réseau, avec son fichier hosts
  3. par un serveur unbound sur un PC du réseau (qui peut être le RPI)

Plan de nommage des PCs du réseau

Première méthode : sur la box

Deuxième méthode : fichiers hosts des PCs du réseau

Troisième méthode : avec un serveur DNS : unbound

4.8. Branchement d'un disque dur externe USB - création d'un serveur NAS

Connecter un disque dur en usb présente beaucoup d'avantages :

  1. On peut y installer des serveurs : HTTP, DNS, FTP, etc.
  2. On peut y installer le système du RPI, libérant la carte SD qui sera en lecture seule, ce qui l'économise : voir http://www.framboise314.fr/booter-le-raspberry-pi-sur-un-disque-dur-usb/
  3. On peut créer un espace NAS

Le meilleur point de montage est /disk pour éviter d'interférer avec les montages automatiques…

Prévoir si possible un disque disposant de sa propre alimentation et formaté en ext3 ou ext4.

Repérage des partitions

4.9. Mise en place d'un NAS avec Raid 1 sur un Raspberry Pi

4.10. Mise à jour de Raspbian wheezy vers jessie

D'après https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=121880

Cliquez pour voir

5. Configuration

6. Utilisation

6.1. Serveur DNS

6.1.1. Unbound

6.1.2. Configuration de Dnsmasq (serveur DNS local)

Le paquet a été installé sur le RPI. Il reste à le configurer.

Se placer sur le RPI, directement, via ssh ou vnc.

Objectif : schéma du réseau

Internet Freebox o 192.168.0.254 o DHCP chateau o 192.168.0.1 Framboise (RPI) o serveur DNS / DHCP o wlan0:192.168.0.31 o serveur HTTP Wi-Fi

Voir la page Configuration

6.2. Serveur LAMP

6.2.1. Serveur LAMP Lighty

6.2.1.1. Configuration

La définition d'un hôte virtuel permet de redéfinir les valeurs par défaut du fichier principal.

public_html
Lors de la création d'un compte utilisateur, les droits par défaut interdisent à lighttpd de traverser le dossier. Pour utiliser les sites personnels (dossier public_html), il faut donc donner aux “autres” (et donc à l'utilisateur lighttpd) le droit de traverser le répertoire d'accueil. Chaque utilisateur fera :
chmod o+x $HOME

L'ajout d'hôte supplémentaire est très simple et permet de varier les options de configuration.

Ajout du nom du site dans le DNS ou, pour test, dans le fichier /etc/hosts

127.0.0.1       nommachine site1 site2 site3  localhost.localdomain localhost

Exemple de définition d'un hôte dans notre fichier de configuration (messites.conf) :

messites.conf
server.modules += ( "mod_dirlisting" )

$HTTP["host"] == "site1" { # hote du site http://site1/
    server.document-root = "/var/www/lighttpd/site1"
    dir-listing.activate = "enable" # affiche la liste des fichiers d'un répertoire
    dir-listing.hide-dotfiles = "enable" #bloque l'accès aux fichier cachés
    accesslog.filename = "/var/log/lighttpd/site1/access_log" #un fichier de log dédié
}

Il est possible d'utiliser les expressions régulières dans les nom d'hôtes en utilisant =~ au lieu de == : $HTTP[“host”] =~ “(www.|)site1”. Remarque: server.modules = assigne le contenu à server.modules, server.modules += ajoute le contenu en conservant l'existant à server.modules.

En l'état actuel, seules les pages statiques fonctionnent. Pour du PHP, il est nécessaire d'installer l'extension fast-cgi et php-cli (Installation_et_configuration_de_PHP).

6.2.1.2. Extensions

Il existe un grand nombre d'extensions dont la liste est ici : http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs (en).

6.2.1.3. Déplacement de la racine du site (Apache)

Apache est démarré à son installation. On peut le vérifier depuis un pc du réseau en ouvrant http://framboise.home dans un navigateur. Il s'affiche :

It works! → le serveur fonctionne.

Sauvegarder l'original du fichier /etc/apache2/sites-available/default :

  • sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.original

Ouvrir avec les droits d'administration le fichier /etc/apache2/sites-available/default et y remplacer les occurences de /var/www par /le/chemin/voulu (par exemple /media/Reservoirs/www :

remplacerpar
    DocumentRoot /var/www
    DocumentRoot /media/Reservoirs/www
    <Directory /var/www/>
    <Directory /media/Reservoirs/www/>

Redémarrer le serveur apache par :

  • sudo service apache2 restart

Désormais, en tapant l'adresse http://framboise, on aboutit dans le répertoire /media/Reservoirs/www.

6.2.1.4. Création de sous-domaines automatisés

Il faut d'abord installer le module vhost_alias :

  • a2enmod vhost_alias
    /etc/init.d/apache2 reload

Tout se passe dans le répertoire /etc/apache2/sites-available/. Ce répertoire contient un fichier de configuration par serveur. Le serveur par défaut est défini par le fichier default.

Nous prendrons comme exemple le sous-domaine doc.framboise.home qui correspond à un dokuwiki de racine /media/Reservoirs/www/doc.

Les sous-domaines sont déduits de l'appel :

  • sous-répertoires de domaine :
    • xxx.domaine.tld → répertoire www/domaine/xxx
    • yyy.domaine.tld → répertoire www/domaine/yyy
  • mais on peut aussi faire des répertoires plus élaborés :
    • aaa.domaine.tld → répertoire www/domaine/aaa/un_répertoire
    • bbb.domaine.tld → répertoire www/domaine/bbb/un_répertoire

Créer une copie de /etc/apache2/sites-available/default/etc/apache2/sites-available/framboise.home

Ajouter une directive VirtualDocumentRoot et ServerAlias dans la configuration de votre VirtualHost comme dans l’ex suivant :

framboise.home
# obtenir le nom du serveur à partir de l'entête "Host:"
UseCanonicalName Off

<VirtualHost *:80>
    DocumentRoot /media/Reservoirs/www
    ServerName framboise.home
    ServerAlias *.framboise.home
    VirtualDocumentRoot /media/Reservoirs/%-3
    # format de journal avec l'appel
    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
    CustomLog access.log vcommon
</VirtualHost>

# réglages pour les répertoires du dokuwiki
<Directory /media/Reservoirs/www/doc>
    Order deny,allow
    allow from all
</Directory>

<LocationMatch "/doc/(data|conf|bin|inc)/">
    Order allow,deny
    Deny from all
    Satisfy All
</LocationMatch>
  • variable %0 = le sous-domaine déduit de l'adresse appelée. (xxx.domaine.com)
  • variable %1 = premier élément de l'adresse appelée. (xxx)
  • variable %2 = 2e élément de l'adresse appelée. (domaine)
  • variable %-1 = dernier élément de l'adresse appelée. (com)
  • variable %-2 = avant-dernier élément de l'adresse appelée. (domaine)
  • variable %-3 = avant-avant-dernier élément de l'adresse appelée. (xxx, yyy, …)

Ici, %-3 permet d'éviter les problèmes dûs à www.

Enregistrer le fichier framboise.home et relancer apache :

  • sudo a2ensite framboise.home
    sudo service apache2 restart

6.2.1.5. Methode simple pour un domaine

Pour créer un sous-domaine (par ex. doc.framboise), nous allons créer un fichier doc.framboise dans ce répertoire. Chaque sous-domaine doit être répertorié dans le dns ou dans le fichier hosts.

Éditer le fichier /etc/hosts et relancer Apache :

sh fredit.sh /etc hosts \
&& ssh framboise "sudo /etc/init.d/apache2 restart"

Ajouter au fichier /etc/hosts la ligne :

192.168.0.100  doc.framboise

Enregistrer : apache se relance.

Copier le fichier /etc/apache2/sites-available/default → doc.framboise :

scp framboise:/etc/apache2/sites-available/default /etc/apache2/sites-available/doc.framboise

, l'éditer, enregistrer le site et relancer apache :

sh fredit.sh /etc/apache2/sites-available default \
&& ssh framboise "sudo a2ensite doc.framboise; \
sudo /etc/init.d/apache2 restart"

et y ajouter les lignes :

doc.framboise
NameVirtualHost doc.framboise

<VirtualHost doc.framboise>
    ServerAdmin webmaster@domaine.fr
    ServerName www.doc.framboise
    ServerAlias doc.framboise
    DocumentRoot /media/Reservoirs/www/dokuwiki

    # réglages pour le répertoire
    <Directory /media/Reservoirs/www/dokuwiki>
        Order deny,allow
        allow from all
    </Directory>
	
    <LocationMatch "/dokuwiki/(data|conf|bin|inc)/">
        Order allow,deny
        Deny from all
        Satisfy All
    </LocationMatch>
</VirtualHost>

Pour pouvoir accéder depuis deux adresses (par exemple une en local et une sur internet) :

<note important>Les adresses doc.framboise et 1.2.3.4 doivent exister dans le DNS ou le hosts</note>

doc.framboise
NameVirtualHost doc.framboise
NameVirtualHost 1.2.3.4

<VirtualHost 1.2.3.4 doc.framboise>
    ServerAdmin webmaster@domaine.fr
    ServerName www.doc.framboise
    ServerAlias doc.framboise
    DocumentRoot /media/Reservoirs/www/dokuwiki

    # réglages pour le répertoire
    <Directory /media/Reservoirs/www/dokuwiki>
        Order deny,allow
        allow from all
    </Directory>
    
    <LocationMatch "/dokuwiki/(data|conf|bin|inc)/">
        Order allow,deny
        Deny from all
        Satisfy All
    </LocationMatch>
</VirtualHost>

6.2.1.6. Autres exemples de sous-domaines

fichier de configuration apache /etc/apache2/sites-available/domaine.com (http://forum.ubuntu-fr.org/viewtopic.php?id=361680):

domaine.com :

NameVirtualHost *:80

<VirtualHost *:80>

    ServerAdmin admin@domaine.com
    ServerName   www.domaine.com
    ServerAlias domaine.com

    UseCanonicalName Off

    DocumentRoot /websites/www.domaine.com
        <Directory /websites/www.domaine.com>
            Options Indexes FollowSymlinks
            AllowOverride none
            Order deny,allow
            Allow from all
        </Directory>

    ErrorLog /var/log/apache2/www_error.log
    LogLevel warn
    CustomLog /var/log/apache2/www_access.log combined
    ServerSignature On

</VirtualHost>

UseCanonicalName Off → le nom du serveur est déduit du contenu de l'entête Host: de la requête0.

sql.domaine.com :

<VirtualHost *:80>
    ServerName sql.domaine.com
    ServerAdmin "admin@domaine.com"

    DocumentRoot /websites/sql.domaine.com
        <Directory /websites/sql.domaine.com>
            Options Indexes FollowSymlinks
            AllowOverride none
            Order deny,allow
            Allow from all
        </Directory>
    ErrorLog /var/log/apache2/sql_error.log
    LogLevel warn
    CustomLog /var/log/apache2/sql_access.log combined
</VirtualHost>

dev.domaine.com :

<VirtualHost *:80>
        ServerName dev.domaine.com
        ServerAdmin "admin@domaine.com"

        DocumentRoot /websites/dev.domaine.com
        <Directory /websites/dev.domaine.com>
            Options Indexes FollowSymlinks
            AllowOverride none
            Order deny,allow
            Allow from all
        </Directory>


        ErrorLog /var/log/apache2/dev_error.log
        LogLevel warn
        CustomLog /var/log/apache2/dev_access.log combined
</VirtualHost>

phpmyadmin.domaine.com :

<VirtualHost *:80>
        ServerName phpmyadmin.domaine.com
        ServerAdmin "admin@domaine.com"

        DocumentRoot /websites/phpmyadmin.domaine.com
        <Directory /websites/phpmyadmin.domaine.com>
            Options Indexes FollowSymlinks
            AllowOverride none
            Order deny,allow
            Allow from all
        </Directory>
        ErrorLog /var/log/apache2/phpmyadmin_error.log
        LogLevel warn
        CustomLog /var/log/apache2/phpmyadmin_access.log combined
</VirtualHost>

blog.domaine.com :

<VirtualHost *:80>
        ServerName blog.domaine.com
       ServerAdmin "admin@domaine.com"

        DocumentRoot /websites/blog.domaine.com
        <Directory /websites/blog.domaine.com>
            Options Indexes FollowSymlinks
            AllowOverride none
            Order deny,allow
            Allow from all
        </Directory>
        ErrorLog /var/log/apache2/blog_error.log
        LogLevel warn
        CustomLog /var/log/apache2/blog_access.log combined
</VirtualHost>

6.2.1.7. Rendre le serveur disponible sur Internet

Nous allons configurer le routeur pour autoriser les connexions ssh et des trafics Web grâce à son pare-feu au RPI.

Par sécurité, le mot de passe de l'utilisateur pi doit avoir été changé et éventuellement un nouvel utilisateur mis en place.

Il faut rediriger les adresses parvenant sur le routeur (la freebox) vers le RPI.

Les ports à rediriger en TCP sont :

  • le port 80 (pour http)
  • le port 22 (pour ssh)
  • le port 1723 (pour vpn)

6.2.1.8. Optimisation du Raspberry Pi pour Lighttpd Owncloud, WordPress et plus

source : http://c-mobberley.com/wordpress/index.php/2013/05/18/raspberry-pi-lighttpd-optimisation-for-wordpress-owncloud-and-more/

Lighttpd, sont installés. Nous allons optimiser lighttpd pour le Raspberry Pi en installant PHP APC, en activant fast cgi et en mettant en place la compression avec gzip.

Tout d'abord, Ouvrir avec les droits d'administration le fichier /etc/lighttpd/lighttpd.conf et remplir la section server.modules avec les modules suivants :

server.modules = (
    #"mod_rewrite",
    "mod_redirect",
    "mod_alias",
    "mod_access",
    #"mod_auth",
    #"mod_status",
    #"mod_simple_vhost",
    #"mod_evhost",
    #"mod_userdir",
    #"mod_secdownload",
    #"mod_fastcgi",
    #"mod_proxy",
    #"mod_cgi",
    #"mod_ssi",
    #"mod_compress",
    #"mod_usertrack",
    #"mod_expire",
    #"mod_rrdtool",
    #"mod_accesslog"
)

6.2.1.9. PostgreSQL

6.3. Création d'un serveur FTP

Voir ftp

Voir la page Vsftpd : un serveur FTP sécurisé et efficace

Éditez avec les droits d'administration le fichier /etc/vsftpd.conf pour le modifier comme ceci :

  • changer anonymous_enable=YESanonymous_enable=NO
  • Dé-commenter local_enable=YES et write_enable=YES
  • Ajouter à la fin du fichier force_dot_files=YES

Sauvegarder et quitter le fichier. Redémarrer vsftpd :

ssh framboise 'sudo service vsftpd restart'

Désormais, framboise est accessible par ftp depuis un PC (par exemple avec FileZilla) avec :

  • identifiant : pi
  • mot de passe de pi

7. Accéder au NAS depuis un autre PC

7.1. Depuis un PC sous Windows

Un clic droit sur le poste de travail, ajouter un lecteur réseau.

Renseigner :

  • la lettre à utiliser pour ce disque
  • le répertoire, de la forme : \\framboise.local\reservoirs ou \\192.168.0.31\reservoirs
  • pour un utilisateur enregistré : son nom
  • pour la zone publique, son répertoire
  • cocher “reconnecter au démarrage”

Il est demandé un nom et un mot de passe

  • Fournir ceux d'un utilisateur enregistré sur samba du RPI (en général, pi).
  • Pour la zone publique, n'importe quel nom convient.

7.2. Depuis un PC sous Linux

Installez le paquet cifs-utils ou en ligne de commande :

$ sudo apt install cifs-utils

7.2.1. Méthode en ligne de commande

Tapez :

$ sudo mount -t cifs -o username=pi,password=PASSWD //framboise.local/reservoirs /disk/RReservoirs

en complétant le mot de passe. Normalement, le montage se fait et le disque apparaît dans Nautilus.

7.2.2. Méthode graphique

Ouvrez Nautilus.

Tapez Ctrl+L et entrez :

smb://<serveur>/<partage>
<serveur>
adresse IP ou nom d'hôte du RPI
<partage>
répertoire auquel se connecter.

Renseignez :

  • l'utilisateur (pi)
  • le mot de passe (raspberry)
  • cochez retenir toujours si vous voulez

On peut aussi entrer Ctrl+L puis :

smb://<serveur>

et naviguer dans les partages.

7.2.3. Pour monter le NAS en permanence

Placez-vous sur le PC qui doit accéder au disque. Installez le paquet cifs-utils ou en ligne de commande :

  • sudo apt-get install cifs-utils

Par exemple, soit à monter le répertoire reservoirs du NAS

nom de partage samba
reservoirs
utilisateur samba
pi
mot de passe samba
raspberry

Sur ce PC, créez un répertoire de montage :

  • sudo mkdir /disk/reservoirs

Ouvrez avec les droits d'administration le fichier /etc/fstab et ajoutez la ligne :

  • /etc/fstab
    //framboise.local/reservoirs	/disk/reservoirs	cifs	credentials=/etc/framboise.credentials	0	0

Créez avec les droits d'administration le fichier /etc/framboise.credentials et inscrivez-y le nom d'utilisateur et son mot de passe, comme ceci :

/etc/framboise.credentials
username=pi
password=<raspberry>

Protégez les fichiers credentials par :

  • sudo chmod 600 /etc/*.credentials

D'autres options peuvent être ajoutées au fichier /etc/fstab selon les besoins (les ajouter, séparées par des virgules)

user
permet le montage par les utilisateurs normaux
noauto
empêche le montage automatique au démarrage du système
guest
montage sans protection par mot de passe

Les entrées ajoutées à /etc/fstab sont montées au démarrage. On peut aussi les monter à la main en exécutant une de ces trois commandes :

  • mount //192.168.0.31/reservoirs

  • mount //framboise.local/reservoirs

  • mount /disk/reservoirs

Pour une freebox, on utilise la même méthode avec un fichier /etc/freebox.credentials sans user ni mdp, tel que :

/etc/freebox.credentials
username=
password=

7.3. Création d'un serveur Owncloud

Voir OwnCloud : votre cloud à la maison sur votre Raspberry Pi !

Voir https://www.windtopik.fr/owncloud/ et la 2e partie : https://www.windtopik.fr/configuration-owncloud/

Sur un PC du réseau, ouvrir la page http://owncloud.org/install/.

Télécharger le fichier en cliquant sur Tar or Zip File :

Télécharger owncloud

Dans la fenêtre qui s'ouvre, cliquer sur le lien Unix :

Lien Unix

Déplacer le fichier à la racine du serveur http du RPI (disons /media/DISQUE/www) 5) :

  • scp owncloud-x.x.x.tar.bz2 framboise:/mnt/DISQUE/www

Ouvrir une console ssh sur le RPI.

  • Extraire le fichier par :
    cd /racine/du/serveur
    tar -xjf chemin/du/fichier/téléchargé/owncloud-x.x.x.tar.bz2

On peut renommer le répertoire, par exemple :

  • mv owncloud cloud

Donner les bonnes permissions :

  • sudo chown -R $USER:www-data cloud
    sudo chmod -R 770 cloud

Installation : voir Installation

http://www.instructables.com/id/Raspberry-Pi-Owncloud-dropbox-clone/

Ouvrir avec les droits d'administration le fichier /etc/php5/cgi/php.ini pour le modifier comme ceci :

  • Chercher upload_max_filesize et puis modifier la valeur à 1024M pour autoriser de charger des fichiers jusqu'à 1 Go
  • Puis chercher post_max_size et changer la valeur à 1200m pour autoriser de charger des fichiers jusqu'à 1 gb
  • Chercher la section extension= et y ajouter extension=apc.so
  • Sauvegarder et sortir.

Régler les permissions :

sudo chown -R pi:www-data /media/Reservoirs/www/owncloud/

Editer le fichier .htaccess pour modifier le paramètre max upload file aux mêmes valeurs que celles définies dans le fichier php.ini.

Paramétrage : voir Paramétrage

7.4. Client nzb

  • sudo apt-get -y install sabnzbdplus

7.5. Client torrent

  • sudo apt-get -y install transmission-daemon avahi-daemon

Pour cela, lancer les commandes :

  • sudo apt-get -y install php5-gd php5-curl

apache2 php5-json curl libcurl3 libcurl4-openssl-dev php5-curl libapache2-mod-php5 php5-fpm

Ouvrir avec les droits d'administration le fichier /etc/php5/apache2/php.ini pour configurer l’upload et les posts maximum de fichier :

/etc/php5/apache2/php.ini
upload_max_filesize 1024M
post_max_size 1024M
extension=apc.so

7.6. Applications

7.7. La ligne de commande Linux

Le système d'exploitation sur votre RasPi est une version de Linux. Il ressemble un peu à Windows, ou au système d'exploitation Mac. Il dispose d'une interface utilisateur graphique (GUI) qui permet d'interagir avec les dossiers et fichiers par double-clic droit ou clic gauche, ou glisser-déposer.

7.8. Commandes ssh utiles

7.8.1. Login/mdp

  • Login : pi
  • Mot de passe au premier démarrage :
    • en Qwerty : rqspberry
    • en Azerty : raspberry

7.8.2. Commandes

  • Éteindre le RPI :
    sudo halt

  • Redémarrer le RPI :

    sudo reboot

  • Connaitre son adresse IP :

    ifconfig eth0

  • Renouveler l'adresse IP en dhcp :

    sudo dhclient eth0

  • Lire un fichier texte :

    cat chemindufichier

  • Editer un fichier texte :

    sudo nano

    ou

    sudo nano chemindufichier

  • Vérifier la température du RPI :

    sudo /opt/vc/bin/vcgencmd measure_temp

  • Page de configuration du RPI :

    sudo raspi-config

    commande indispensable, elle permet dans l'ordre de

    • étendre la partition
    • modifier l'overscan (les marges) de l'écran
    • choisir la disposition du clavier
    • changer le mot de passe de l'utilisateur “pi”
    • modifier les préférences locales
    • modifier le fuseau horaire
    • gérer le partage de la mémoire
    • activer le SSH
    • démarrer sur l'interface graphique
  • Mise à jour du système :

    sudo apt-get update

  • Démarrer l'environnement graphique :

    startx

7.9. 3 façons d'exécuter un bureau à distance sur Raspberry Pi

8. Voir aussi

8.1. Où l'acheter ?

Les délais sont d'environ 2 semaines pour la France.

8.2. Autres

1)
la classe indique la rapidité
2)
en bas de la page
3)
l'adresse réseau de la RPI, retrouvée par nmap, est supposée 192.168.0.31
4)
s'il y a plusieurs lignes, c'est que le disque a plusieurs partitions
5)
s'aider de l'autocomplétion

Navigation