Owncloud 8 sur Raspberry Pi

 

Pour faire suite à l'article sur l'installation d'un serveur LAMP sur un Raspberry Pi. On va ici installer une application Web qui permet entre autre le partage de fichiers, d'agenda et de contacts : Owncloud.

Isolation de l'environnement Web

Pour commencer je crée un environnement d'hébergements Web de la façon suivante :

  • un répertoire de travail contenant les répertoires suivants :
    • www : pour la partie Web
    • etc : pour la configuration apache et php
    • var : pour les logs, les fichiers temporaires
    • scripts : si besoins de mettre en place des scripts spécifiques
  • un utilisateur et un groupe dédié
  • une base de données et un utilisateur dédié

Répertoire de travail

# mkdir -p /var/www/cloud.guidtz.local/{etc,var/{log,tmp/upload},scripts}

Utilisateur

# useradd -s /bin/false -d /var/www/cloud.guidtz.local/www/ cloud
# adduser www-data cloud

Base de données

mysql> create database cloud character set utf8 ;
mysql> grant all privileges on cloud.* to 'cloud_uzer'@'localhost' identified by 'cloudmaison' with grant option ;

 

Installation d'Owncloud

Installation du code

# cd /var/www/cloud.guidtz.local/
# wget https://download.owncloud.org/community/owncloud-8.0.3.tar.bz2
# tar xvjf owncloud-8.0.3.tar.bz2
# ln -s owncloud www
# owncloud-8.0.3.tar.bz2

Paramétrages

Dans le répertoire  etc j'ai deux fichiers : apache.conf

<VirtualHost *:80>
ServerName cloud.guidtz.local
ServerAdmin sysadmin@cheramy.name

Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm-cloud
FastCgiExternalServer /fcgi-bin-php5-fpm-cloud -socket /var/run/php5-fpm-cloud.sock -idle-timeout 180 -pass-header Authorization

LogLevel warn
ErrorLog "|nice -n 10 /usr/bin/cronolog /var/www/cloud.guidtz.local/var/logs/apache2/%Y/%W/%d-error.log"
CustomLog "|nice -n 10 /usr/bin/cronolog /var/www/cloud.guidtz.local/var/logs/apache2/%Y/%W/%d-access.log" combined

DocumentRoot /var/www/cloud.guidtz.local/www
<Directory /var/www/cloud.guidtz.local/www/>
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

et php5.conf

[cloud]
user = cloud
group = cloud

listen = /var/run/php5-fpm-cloud.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 5
pm.max_requests = 50
;request_terminate_timeout = 45s

 

On modifie les droits sur le répertoire de travail :

# cd /var/www
# chmod 2770 cloud.guidtz.local/
# find ./cloud.guidtz.local/ -type d -exec chmod 2770 {} \;
# find ./cloud.guidtz.local/ -type f -exec chmod 660 {} \;
# chown -R cloud.cloud cloud.guidtz.local/

 

On crée les liens pour php et apache :

# cd /etc/php5/fpm/pool.d/
# ln -s /var/www/cloud.guidtz.local/etc/php5.conf ./cloud.conf
# /etc/init.d/php5-fpm reload

# cd /etc/apache2/sites-available/
# ln -s /var/www/cloud.guidtz.local/etc/apache.conf ./cloud.guidtz.local
# a2ensite cloud.guidtz.local
# /etc/init.d/apache2 reload

 

Il faut modifier les dns de la zone ou les fichiers hosts pour accéder au site.

Une fois sur l'interface Web, il faut finaliser l'installation d'owncloud il reste à créer :

  • un identifiant et password administrateur
  • affecter l'utilisateur et password de la base de données

L'installation d'Owncloud est alors finie.

 

Optimisation

Il faut pas oublier que notre petit Raspberry n'a qu'un processeur ARM et 512Mb de Ram il faut donc régler quelques paramétrages.

Raspberry

Côté performances Raspberry je suis passé sur le modèle Medium (900Mhz) dans l'Overclock.

 

Owncloud cron

Il faut passer les cron en crontab et non pas en Ajax et paramétrer la crontab comme ceci :

# crontab -u cloud -e
*/15 * * * * php -f /var/www/cloud.guidtz.local/www/cron.php

 

Owncloud limiter les applications

Il faut limiter à l'essentiel les applications activées. Par exemple je désactive :

  • activity
  • first run wizard
  • pdf viewer
  • text editor
  • updater
  • video viewer

 

Monter un disque externe

On ne va pas stocker les données sur la carte SD, on va utiliser un disque dur ou une clé USB pour stocker les fichiers.

La première chose à faire est d'indentifier le périphérique de stockage :

# fdisk -l

Disk /dev/sda: 7864 MB, 7864320000 bytes
30 heads, 33 sectors/track, 15515 cylinders, total 15360000 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: 0x58431388

Device Boot Start End Blocks Id System
/dev/sda1 2048 15359999 7678976 c W95 FAT32 (LBA)

 

On va monter ce périphérique dans un répertoire de l'arborescence du système :

# mkdir /media/data

 

Modifier la fstab pour que le montage se refasse à chaque démarrage :

/dev/sda1       /media/data     vfat    defaults,uid=1001,gid=1004,umask=007        0       0

l'uid et le gid correspondent à ceux de l'utilisateur et du group cloud créé précédement.

 

Monter la partition :

# mount -a

 

Il reste à adapter le paramètre dans le fichier de config d'owncloud www/config/config.php :

'datadirectory' => '/media/data',

 

Owncloud est maintenant opérationnel et les fichiers seront stockés sur le support USB.