1.  Comment utiliser un Raspberry Pi pour faire un NAS

C'est sans doute la xx millième page du web qui aborde ce sujet. Cette dernière n'a pas pour objectif de révolutionner le domaine, mais d'accompagner un atelier dans le cadre de la faironnerie ABC. Avant d'aller plus loin précisons qu'un NAS est un serveur de stockage en réseau à destination de clients hétérogènes.

2.  Le matériel nécessaire

  1. Un raspberry Pi modèle B+ : 4 ports USB 2.0, un port Ethernet 10/100 ou mieux encore le modèle Pi 2.
  2. Une alimentation au format micro-USB délivrant 5V/700mA au moins. Un ancien chargeur de téléphone peut faire l'affaire. Néanmoins si vous avez le choix prenez une alimentation délivrant 2A.
  3. Une micro SD classe 10 8 Go. Le 10 correspond au débit minimal par seconde (Classe 10 = 1O Mb/s).
  4. Un boitier, je vous renvoie à l'atelier ou nous avons présenté comment l'imprimer.
  5. Un hub usb alimenté si vous voulez mettre un disque dur auto-alimenté ou d'autres périphériques un peu gourmands.
  6. Un DD usb alimenté ou auto-alimenté derrière le hub.
  7. Un PC sous linux ou éventuellement sous windows avec un client ssh. Ce qui est développé ci-dessous utilise Linux.
  8. Un cable réseau pour votre raspberry.
  9. Une box.

Je n'ai pas d'action chez les revendeurs dont j'ai mis les liens, mais cela permet de fixer le budget. Les prix peuvent avoir changé.

MatérielPrix (€)
Raspberry Pi B+32
Alimentation5
micro SD 8 Go6
DD (1 To)70
hub USB12,90
Total125,90

3.  Installation d'une version légère

Je vous propose d'utiliser une raspbian-ua-netinst qui offre une version Raspian ayant subi un régime mais ayant les éléments essentiels pour vous connecter. Vous devez formater votre carte SD en FAT 32 pour commencer. La première chose à faire est d'identifier le device :

 % lsblk -f

 NAME        FSTYPE   LABEL     UUID                                   MOUNTPOINT
 sda                                                                   
 ├─sda1      ext2     ManjaroBoot
 │                              31b1f744-8689-42a8-a135-d7cc856b2580   /boot
 └─sda2      LVM2_mem           gHWyPA-Q30h-cIbo-JUKz-eyKO-SFoX-llfydB 
   ├─ManjaroVG-ManjaroRoot
   │         ext4     ManjaroRoot
   │                            5eb340dc-b8a1-44ba-934d-99b67a6f63ee   /
   ├─ManjaroVG-ManjaroHome
   │         ext4     ManjaroHome
   │                            220f9149-2002-46df-a206-7d6e47b8569e   /home
   └─ManjaroVG-ManjaroSwap
             swap     ManjaroSwap
                                66e814a1-e989-4ac1-b347-725e25942555   [SWAP]
 sdb                                                                   
 └─sdb1      ntfs     My Passport
                                F474B7AA74B76DCC                       
 sr0         udf      AB_STEP1_MONTE_IMAGEDVD
                                2014-10-21-07-17-13-00                 
 mmcblk0                                                               
 ├─mmcblk0p1 vfat     boot      936C-7154                              
 └─mmcblk0p2 ext4               c1398422-7a7c-4863-8a8f-45a1db26b4f2 

Il s'agit de mmcblk0. La commande dmesg peut également faire l'affaire. Ensuite le couteau suisse pour gérer les partitions fdisk :

 % sudo fdisk /dev/mmcblk0

 Bienvenue dans fdisk (util-linux 2.26.1).
 Les modifications resteront en mémoire jusqu'à écriture.
 Soyez prudent avant d'utiliser la commande d'écriture.

On demande l'affichage des partitions présentes et on les supprime s'il en existe.

 Commande (m pour l'aide) : p
 Disque /dev/mmcblk0 : 7,4 GiB, 7969177600 octets, 15564800 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x000c45c9

 Périphérique   Amorçage Début      Fin Secteurs Taille Id Type
 /dev/mmcblk0p1            8192   122879   114688    56M  c W95 FAT32 (LBA)
 /dev/mmcblk0p2          122880 15564799 15441920   7,4G 83 Linux

C'est mon cas.

 Commande (m pour l'aide) : d
 Numéro de partition (1,2, 2 par défaut) : 1

 La partition 1 a été supprimée. 

 Commande (m pour l'aide) : d
 Partition 2 sélectionnée
 La partition 2 a été supprimée.

 Commande (m pour l'aide) : p
 Disque /dev/mmcblk0 : 7,4 GiB, 7969177600 octets, 15564800 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x000c45c9

On crée une nouvelle partition primaire sur la micro SD carte.

 Commande (m pour l'aide) : n
 Type de partition
    p   primaire (0 primaire, 0 étendue, 4 libre)
    e   étendue (conteneur pour partitions logiques)
 Sélectionnez (p par défaut) : p
 Numéro de partition (1-4, 1 par défaut) : 1
 Premier secteur (2048-15564799, 2048 par défaut) : 
 Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-15564799, 15564799 par défaut) : 

 Une nouvelle partition 1 de type « Linux » et de taille 7,4 GiB a été créée. On modifie le type de partition.
 Commande (m pour l'aide) : t
 Partition 1 sélectionnée
 Type de partition (taper L pour afficher tous les types) : c
 Type de partition « Linux » modifié en « W95 FAT32 (LBA) ».

On écrit sur la carte SD.

 Commande (m pour l'aide) : w
 La table de partitions a été altérée.
 Appel d'ioctl() pour relire la table de partitions.
 Synchronisation des disques.

On note le nom de la partition

 % sudo fdisk /dev/mmcblk0
 Commande (m pour l'aide) : p
 Disque /dev/mmcblk0 : 7,4 GiB, 7969177600 octets, 15564800 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x000c45c9

 Périphérique   Amorçage Début      Fin Secteurs Taille Id Type
 /dev/mmcblk0p1           2048 15564799 15562752   7,4G  c W95 FAT32 (LBA)

Il s'agit de mmcblk0p1. Il reste a formater.

 % sudo mkfs.vfat /dev/mmcblk0p1

gparted peu également remplir le même office.

Téléchargez la dernière release de raspbian-ua-netinst (raspbian-ua-netinst-<latest-version-number>.img.xz) et ensuite copiez le fichier téléchargé à la racine de la carte SD.

 % sudo -i
 # xzcat /home/damien/Téléchargements/raspbian-ua-netinst-v1.0.6.img.xz > /dev/mmcblk0

3.1  Mise en route

Connectez votre raspberry au réseau par un cable ethernet et attendez que le système s'installe. Chez moi avec un réseau desservi par pigeon voyageur cela a pris un certain temps. Un petit nmap vous renseignera sur l'adresse ip de votre raspberry. Si vous ne connaissez pas l'adresse de votre réseau local ifconfig ou route vous permettront de trouver.

 # route 
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 default         gateway         0.0.0.0         UG    600    0        0 wlo1
 192.168.0.0     *               255.255.255.0   U     600    0        0 wlo1

ensuite

 # nmap -T4 -sP 192.168.0.0/24

 Starting Nmap 6.47 ( http://nmap.org ) at 2015-04-26 18:54 CEST
 Nmap scan report for 192.168.0.12
 Host is up (0.033s latency).
 MAC Address: XX:YY:ZZ:KK:LL:MM (Samsung Electro Mechanics co.)
 Nmap scan report for 192.168.0.14
 Host is up (0.0066s latency).
 MAC Address: XX:YY:ZZ:KK:LL:MM (Hon Hai Precision Ind. Co.)
 Nmap scan report for 192.168.0.16
 Host is up (0.015s latency).
 MAC Address: XX:YY:ZZ:KK:LL:MM (HTC)
 Nmap scan report for 192.168.0.25
 Host is up (0.0047s latency).
 MAC Address: A8:32:EA:FF:67:5E (Raspberry Pi Foundation)
 Nmap scan report for 192.168.0.254
 Host is up (0.027s latency).
 MAC Address: XX:YY:ZZ:KK:LL:MM (Freebox SA)
 Nmap scan report for 192.168.0.11
 Host is up.
 Nmap done: 256 IP addresses (6 hosts up) scanned in 3.43 seconds

À l'aide de nmap on a scanné toutes les adresses comprises entre 192.168.0.0 et 192.168.0.255. Une fois l'adresse connue on peut vérifier les ports ouverts.

 # nmap -F 192.168.0.25
 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 21:24 CEST
 Nmap scan report for 192.168.0.25
 Host is up (0.040s latency).
 All 1000 scanned ports on 192.168.0.25 are closed

Aucun port n'est encore ouvert. Il faut attendre la fin de la configuration. Il suffira alors de se connecter par ssh. On a l'adresse 192.168.0.25, le login root et le mot de passe par défaut est raspbian.

 # nmap 192.168.0.25

 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 21:32 CEST
 Nmap scan report for 192.168.0.25
 Host is up (0.035s latency).
 Not shown: 999 closed ports
 PORT   STATE SERVICE
 22/tcp open  ssh

Le port ssh est ouvert. On repasse en utilisateur normal ctrl D sur la machine hote.

 % ssh root@192.168.0.25
 root@192.168.0.25's password: 
 Linux pi 3.18.0-trunk-rpi #1 PREEMPT Debian 3.18.5-1~exp1+rpi16 (2015-03-28) armv6l

 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: Sun Apr 26 20:00:20 2015 from 192.168.0.11

3.2  Configuration

Vous êtes maintenant sur le raspberry. Modifiez le mot de passe :

 # passwd

Ne l'oubliez pas comme moi .....

Configurez l'encodage et le fuseau horaire (fr_FR.UTF-8, Paris).

 # dpkg-reconfigure locales
 # dpkg-reconfigure tzdata

Pour améliorer la gestion mémoire :

 # apt-get install raspi-copies-and-fills

Créez un fichier de swap

 # dd if=/dev/zero of=/swap bs=1M count=512 && mkswap /swap

On l'ajoute à la table des partitions

 # echo "/swap none swap sw 0 0" > /etc/fstab

C'est une bonne idée de créer un utilisateur pi par exemple.

 # adduser pi

Ajoutez votre utilisateur pi aux groupes audio,sudo,ssh,video

 # usermod -aG audio,sudo,ssh,video pi

On installe un éditeur texte nano et sudo, cela peut servir.

 # apt-get update && apt-get install nano sudo

On redémarre

 # reboot

3.3  Préparation d'un stockage

Les performances du raspberry sont ce qu'elles sont .... et le format reconnu par windows NTFS et souvent par défaut sur les disques USB externes. Cela consomme du CPU pour les lectures/écritures c'est pourquoi il faut lui préférer du ext3 ou ext4.

Connectez vous sur votre raspberry avec le compte pi.

 % ssh pi@192.168.0.25

On insère la clef ou on branche le DD et on repére le device avec la commande dmesg.

 % dmesg
 [ 3202.771558] usb-storage 1-1.2:1.0: USB Mass Storage device detected
 [ 3202.795547] scsi host6: usb-storage 1-1.2:1.0
 [ 3203.808663] scsi 6:0:0:0: Direct-Access     USB 2.0  Flash Disk       5.00 PQ: 0 ANSI: 2
 [ 3203.832854] sd 6:0:0:0: Attached scsi generic sg0 type 0
 [ 3203.845583] sd 6:0:0:0: [sda] 4096000 512-byte logical blocks: (2.09 GB/1.95 GiB)
 [ 3203.868905] sd 6:0:0:0: [sda] Write Protect is off
 [ 3203.891459] sd 6:0:0:0: [sda] Mode Sense: 0b 00 00 08
 [ 3203.892146] sd 6:0:0:0: [sda] No Caching mode page found
 [ 3203.919455] sd 6:0:0:0: [sda] Assuming drive cache: write through
 [ 3203.938575]  sda: unknown partition table
 [ 3203.955486] sd 6:0:0:0: [sda] Attached SCSI removable disk

On supprime les partitions existantes si nécessaire. Je vous renvoie a ce qui a été fait précédemment avec la carte SD.

 % sudo fdisk /dev/sda  
  Command (m for help): n
 Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
 Select (default p): p
 Partition number (1-4, default 1): 
 Using default value 1
 First sector (2048-4095999, default 2048): 
 Using default value 2048
 Last sector, +sectors or +size{K,M,G} (2048-4095999, default 4095999): 
 Using default value 4095999

 Command (m for help): p

 Disk /dev/sda: 2097 MB, 2097152000 bytes
 65 heads, 62 sectors/track, 1016 cylinders, total 4096000 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x062828d0

    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1            2048     4095999     2046976   83  Linux

 Command (m for help): w
 The partition table has been altered!

 Calling ioctl() to re-read partition table.
 Syncing disks.

On le formate en ext4 ensuite :

 % sudo mkfs.ext4 /dev/sda1 -L cloud

Enlevez et remettez la clé ou le disque. On va ensuite monter le support. Pour cela on crée un répertoire dans media.

 % sudo mkdir /media/ddnuage

Vous pouvez tester manuellement si cela fonctionne :

 % sudo mount -t ext4 /dev/sda1 /media/ddnuage

Modifier le propriétaire

 % sudo chown pi.pi /media/ddnuage

Pour le démonter

 % sudo umount /media/ddnuage

Dans ce cas il est plus intéressant d'avoir un montage permanent, on va donc l'ajouter dans la fstab. On va utiliser l'UUID de façon a être certain que c'est le bon périphérique de stockage.

 % sudo blkid
 /dev/mmcblk0p1: SEC_TYPE="msdos" UUID="CD04-2948" TYPE="vfat" 
 /dev/mmcblk0p2: UUID="ae33a032-bba7-4c24-b437-d62ef5f8fc21" TYPE="ext4" 
 /dev/sdb1: LABEL="Iomega HDD" UUID="D27431CF7431B6D7" TYPE="ntfs" 
 /dev/sda1: LABEL="cloud" UUID="954ef6f5-1f24-4c4d-87ff-9594e3f9aeec" TYPE="ext4"

On ajoute alors la ligne suivante dans /etc/fstab

 % sudo nano /etc/fstab

Sous l'éditeur nano vous ajoutez à la fin

 # Le disque servant de stockage au cloud
 UUID=954ef6f5-1f24-4c4d-87ff-9594e3f9aeec /media/ddnuage ext4 defaults 0 0

Vous pouvez tester le montage maintenant.

 % sudo mount /media/ddnuage
 % sudo umount /media/ddnuage

Il n'est plus nécessaire de préciser le device et le support de stockage sera monté automatiquement à chaque redémarrage. Avant de passer à l'étape suivante cela peut être utile.

 % sudo reboot

4.  Un nuage dans la mer

On va maintenant installer seafile une alternative à Dropbox ou google drive avec un contrôle sur vos fichiers. Il existe bien sur owncloud mais cette solution est plus lourde et les clients parfois payant.

On commence par se connecter sur le raspberry avec le compte créé.

 % ssh pi@192.168.0.25

A tout hasard mettez à jour

 % sudo apt-get update && apt-get upgrade -y

On installe quelques paquets utiles avec les dépendances.

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

On crée un répertoire ad hoc.

 % mkdir monnuage; cd monnuage 

Il faut ensuite télécharger la version serveur de seafile pour raspberry.

 % wget https://github.com/haiwen/seafile-rpi/releases/download/v4.1.2/seafile-server_4.1.2_pi.tar.gz

Pensez à adapter le numéro de version si nécessaire.

 % mkdir installation
 % tar zxvf seafile-server_4.1.2_pi.tar.gz
 % mv seafile-server* installation/

4.1  Configuration

Avant d'aller plus loin vous pouvez jeter un œil sur la documentation cela peut être utile. Il peut être utile de fixer l'adresse ip de votre raspberry la gestion des baux permanents dhcp sur la box permet en général cela. Notez l'adresse choisie. Pour commencer il suffit de lancer le script de configuration et de suivre les informations.

 % cd ~/installation/seafile-server-4.1.2/
 % ./setup-seafile.sh
 This is your config information:

 server name:        neptune
 server ip/domain:   192.168.0.25
 server port:        10001
 seafile data dir:   /media/ddnuage/seafile-data
 seafile port:       12001
 fileserver port:    8082

Vous lancez ensuite le serveur Seafile pour la gestion des fichiers

 % ./seafile.sh start

Et ensuite le point d'accès.qui permettra les connexions.

 ./seahub.sh start

Vous devez alors créer un compte administrateur. Il ne reste plus qu'à vous connecter http://192.168.0.25:8000

4.2  Démarrer seafile comme un service

Ce qui suit est présenté presque totalement dans le manuel. La première chose à faire est de créer un fichier /etc/init.d/seafile-server

  1. #!/bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides:          seafile-server
  5. # Required-Start:    $local_fs $remote_fs $network
  6. # Required-Stop:     $local_fs
  7. # Default-Start:     2 3 4 5
  8. # Default-Stop:      0 1 6
  9. # Short-Description: Starts Seafile Server
  10. # Description:       Starts Seafile Server
  11. ### END INIT INFO
  12.  
  13. # Change the value of "user" to your linux user name
  14. # Si vous avez choisi un autre nom d'utilisateur il faut changer
  15. user=pi
  16.  
  17. # Change the value of "script_path" to your path of seafile installation
  18. # usually the home directory of $user
  19. # Si vous n'avez pas la même arborescence pensez à changer
  20. seafile_dir=/home/pi/monnuage/installation
  21. script_path=${seafile_dir}/seafile-server-latest
  22. seafile_init_log=${seafile_dir}/logs/seafile.init.log
  23. seahub_init_log=${seafile_dir}/logs/seahub.init.log
  24.  
  25. # Change the value of fastcgi to true if fastcgi is to be used
  26. fastcgi=false
  27. # Set the port of fastcgi, default is 8000. Change it if you need different.
  28. fastcgi_port=8000
  29.  
  30. #
  31. # Write a polite log message with date and time
  32. #
  33. echo -e "\n \n About to perform $1 for seafile at `date -Iseconds` \n " >> ${seafile_init_log}
  34. echo -e "\n \n About to perform $1 for seahub at `date -Iseconds` \n " >> ${seahub_init_log}
  35.  
  36. case "$1" in
  37.         start)
  38.                 sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
  39.                 if [ $fastcgi = true ];
  40.                 then
  41.                         sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
  42.                 else
  43.                         sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
  44.                 fi
  45.         ;;
  46.         restart)
  47.                 sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
  48.                 if [ $fastcgi = true ];
  49.                 then
  50.                         sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
  51.                 else
  52.                         sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
  53.                 fi
  54.         ;;
  55.         stop)
  56.                 sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
  57.                 sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
  58.         ;;
  59.         *)
  60.                 echo "Usage: /etc/init.d/seafile-server {start|stop|restart}"
  61.                 exit 1
  62.         ;;
  63. esac

Vous pouvez récupérer le fichier sur votre pc connecté en ssh à votre raspberry et ensuite le transférer.

 %  scp seafile-server pi@192.168.0.25:

Ensuite à partir du raspberry

 % cd
 % sudo mv seafile-server /etc/init.d/ 

Vérifier que le répertoire pour les fichiers de log existe sinon il suffit de le créer.

 % ls /home/pi/monnuage/installation/logs

ou

 % mkdir /home/pi/monnuage/installation/logs

Rendre le fichier seafile-server executable

 % sudo chmod +x /etc/init.d/seafile-server

Ajouter seafile-server to rc.d

 % sudo update-rc.d seafile-server defaults

C'est l'heure de vérité.

 % sudo reboot

et il reste à tester.

Arreter demarrer le serveur seafile

 % sudo /etc/init.d/seafile-server stop
 % sudo /etc/init.d/seafile-server start

Ces commandes pourront être utilisée à chaque fois que vous faites une modification.

4.3  Pour aller plus loin

Il s'agit d'amélioration qui permette d'envoyer des mails, de rendre visible le NAS hors du réseau local, si cela ne vous concerne pas vous pouvez passer.

Rendre visible le NAS avec une ip fixe

Si vous avez une ip fixe (dégroupé ou abonnement spécifique), il est possible de rendre visible à l'extérieur de votre réseau le NAS. Il faut alors faire de la redirection de port, c'est généralement possible avec votre box.

Il faut maintenant modifier votre fichier de configuration ccnet.conf.

 % cd
 % cd monnuage/installation/ccnet
 % sudo nano ccnet.conf

Mettre l'adresse fixe ip à la place des XY.....

 SERVICE_URL = http://XYZ.LMN.0PQ.RST:8000

Il est possible de faire mieux encore lorsque vous avez une adresse fixe en utilisant un nom de domaine dont vous êtes propriétaire enfin je devrai dire locataire. Mon fournisseur d'accès permet(free) cela. J'ai la possibilite de lien une adresse symbolique du type [mamachine].hd.free.fr à l'adresse ip. Les redirections mises en place joueront alors leur rôle pour atteindre les bonnes machines et les bons services de votre réseau local.

 % ping oudanedesk.hd.free.fr

Plutôt qu'utiliser l'adresse ip vous pouvez maintenant utiliser oudanedesk.hd.free.fr:8000.

Rendre visible le NAS sans une ip fixe

La procédure décrite ici est sans garantie, comme les autres, mais en plus elle n'a pas été testée sérieusement ! Il existe différents services gratuits pour résoudre une adresse ip changeante. NoIp est considéré comme la référence, mais le renouvellement d'abonnement semble pénible. FreeDNS me semble être une alternative intéressante, cela offre le service de base gratuit.

Inscription et création du domaine

Inscrivez vous sur le site FreeDNS. Vous allez recevoir un courriel pour confirmer votre demande et activer votre compte. Il faut ensuite créer le sous-domaine.

  1. Type : choisir le type de service, sélectionnez A ;
  2. Subdomain : le nom de votre sous-domaine sous-que vous souhaitez ;
  3. Domaine : choisir votre domaine dans les propositions gratuites ;
  4. Destination : correspond à l'ip de la box avec laquelle vous travaillez (ne modifier que si vous travaillez avec une ip différente de celle que vous comptez utiliser) ;
  5. TTL et wildcard sont des options payantes.

Il vous reste à valider et ensuite rendez-vous sur la page de Dynamic DNS. Sur la page correspondante cliquez sur direct url. Noter dans la barre l'url correspondante. Cela ressemble à :

 http://freedns.afraid.org/dynamic/update.php?RVJQVlRjdGdHJJJpshjhsjkzOjE0NTQ3Nzc0 

Ce qui est utile c'est RVJQVlRjdGdHJJJpshjhsjkzOjE0NTQ3Nzc0

Sur votre raspberry il faut installer inadyn. Il existe un package que l'on peut utiliser.

 % sudo apt-get install inadyn

Ensuite on configure inadyn

 % sudo nano /etc/inadyn.conf

 --username <your_username>
 --password <your_password>
 --update_period 60000
 --forced_update_period 320000
 --alias oudanedesk.mooo.com,RVJQVlRjdGdHJJJpshjhsjkzOjE0NTQ3Nzc0
 --background
 --dyndns_system default@freedns.afraid.org
 --syslog

On va maintenant automatiser le démarrage. Pour cela il va falloir écrire un petit script mais avant on récupère killall.

 % sudo apt-get install psmisc

 % sudo nano /etc/init.d/inadyn
#! /bin/sh
# /etc/init.d/inadyn

### BEGIN INIT INFO
# Provides:          inadyn
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

# Si vous souhaitez qu'une commande fonctionne en permanence
# ajoutez la sous cette ligne

# Execution d'un certain nombre de fonctions specifiques
# a la demande du système
case "$1" in
   start)
      echo "Starting inadyn"
      /usr/sbin/inadyn
      ;;
   stop)
      echo "Stop inadyn"
      killall inadyn
      ;;
   *)
      echo "Usage : /etc/init.d/inadyn {start|stop}"
      exit 1
      ;;
esac

exit 0

Il faut rendre le script exécutable

 % sudo chmod 755 /etc/init.d/inadyn

Le mettre dans la liste des programme à lancer au démarrage.

 % sudo update-rc.d inadyn defaults

Si un jour vous souhaitez le supprimer

 % sudo update-rc.d -f inadyn remove

Après un reboot vous pouvez vérifier que cela fonctionne en allant à l'url oudanedesk.mooo.com:8000

 % sudo reboot

Sur votre raspberry vous pouvez vérifier que cela fonctionne

 % ps -A | grep inadyn

et consulter le fichier de log

 % sudo less /var/log/messages | grep INADYN

Gérer les mails de seafile

La première chose peut être de créer un compte gmail spécifique. Supposons que cela soit nuagesur.oudane@gmail.com nous allons modifier seahub_settings.py. Une fois connecté sur votre compte pi

 % cd monnuage/installation
 % sudo nano seahub_settings.py

Ajoutez les lignes suivantes :

 EMAIL_USE_TLS = True
 EMAIL_HOST = 'smtp.gmail.com'
 EMAIL_HOST_USER = 'nuage.suroudane@gmail.com '
 EMAIL_HOST_PASSWORD = 'password'
 EMAIL_PORT = 587
 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
 SERVER_EMAIL = EMAIL_HOST_USER

5.  Utiliser seafile

Dans cette partie je vous propose de voir comment ajouter un utilisateur et également comment utiliser un client de synchronisation. On considère dans ce qui suit que vous utilisez votre NAS aussi à l'intérieur du réseau local qu'à l'extérieur, nous allons donc utiliser l'adresse http:oudanedesk.mooo.com:8000 . Si vous vous contentez de l'utilisez dans le réseau local il suffit d'utiliser l'adresse ip fixée pour votre raspberry 192.168.0.25 par exemple.

5.1  Ajouter un utilisateur

Lors de l'installation vous avez défini un administrateur et son mot de passe il faut alors se connecter sur votre NAS avec ce compte et cliquer sur l’icône (clef) administration en haut à droite.

Vous pouvez alors ajouter un utilisateur vous avez les informations nécessaires qui s'affiche au niveau de l'interface.

5.2  Client de synchronisation

Rendez-vous sur la page de téléchargement des clients et téléchargez celui qui correspond à votre système d'exploitation et votre distribution éventuelle. Sur ma distribution le client est présent dans le dépôt AUR.

 % yaourt seafile-client

Si vous êtes sous ubuntu ou debian ou dérivé. En vous positionnant dans le repértoire où vous avez téléchargé votre paquet seafile-XXX.deb

 % sudo dpkg -i seafile-XXX.deb

Une fois votre client installé, il faut le configurer. Commencez par créer un répertoire dans votre arborescence personnelle qui va accueillir vos fichiers synchronisés entre vos différentes machines.

 % mkdir ~/OudaneDesK

Ensuite lancez l'applet

 % seafile-applet &

6.  Sauvegarder sa configuration

Une fois votre installation complète terminée, il est utile de sauvegarder une image de votre système. En effet les cartes SD sont parfois un peu capricieuse et il est dommage d'être obligé de recommencer une grande partie des manipulations. La commande dd est votre amie. Si vous voulez en savoir plus vous pouvez aller voir ici.

De même il peut être utile de sauvegarder l'ensemble des fichiers stockés au niveau de seafile, mais là je n'ai pas encore eu le temps de rédiger des explications elles viendront plus tard.

7.  Protéger ses données et ses échanges

TODO

8.  Sources

Des sources m'ont aidé pour rédiger cela

  1. Installer une mini Raspbian sur votre Raspberry Pi par réseau http://www.pihomeserver.fr/2014/09/30/raspberry-pi-home-server-installer-raspbian-reseau/
  2. Le manuel de seafile, très bien fait je trouve http://manual.seafile.com
  3. HOWTO Configure Freedns (afraid.org) service with Inadyn (Lucid) http://ubuntuforums.org/showthread.php?t=1758930

L'image pré-installée sur les raspberry lors de l'atelier.

(:googleplusone size=small:)