[TUTO] Gérez et partagez vos fichiers avec Pydio sur votre Debian

Bonjour à tous !

Je viens apporter ma contribution à la communauté en vous proposant un petit tutoriel qui va vous permettre de gérer vos fichiers sur votre serveur dédié. En effet, Pydio est un outil open source qui va vous offrir une très jolie interface permettant de gérer les fichiers de votre seedbox, mais aussi de les partager très simplement avec vos amis. Il fait office de Cloud, c'est-à-dire que vous allez pouvoir uploader des fichiers directement depuis l'interface afin de stocker sur votre espace personnel certains documents qui sont importants pour vous.
Pydio possède également une fonction multimédia qui permet de streamer directement vos musiques ou vidéos préférées, et cela via votre navigateur web, votre smartphone Android ou encore votre iPhone.

Voici à quoi ça ressemble une fois installé et correctement configuré :

Texte caché

Trève de bavardage, place au tutoriel !

Prérequis :

  • Un serveur dédié ou VPS sous Debian

  • Un accès SSH + SFTP

  • Terminal (mac) ou Putty (windows)

  • La dernière archive de Pydio

  • Un peu de temps

Temps d'installation : 10 minutes
Difficulté : 4/10

1ère étape :
Tout d'abord il va falloir installer tout ce dont notre serveur va avoir besoin pour lancer Pydio. C'est un service web donc on a besoin de php et de Nginx (vous pouvez aussi utiliser Apache).
Donc dans un premier temps, connectez-vous en root en SSH à votre machine, puis lancez cette commande :

apt-get install nginx php5 php5-fpm php5-gd php5-cli php5-mcrypt

Normalement ça ne devrait pas prendre plus de quelques secondes voire quelques minutes. Lorsque c'est terminé on passe à la suite, on va créer un dossier /www/ qui contiendra notre plateforme Pydio. Pour cela, tapez cette commande :

mkdir /var/www
chown www-data:www-data /var/www

Voilà pour la base de notre installation, on va donc maintenant passer à sa configuration.

2ème étape :
Si vous comptez utiliser Pydio comme espace de stockage externe, un peu à la manière d'un cloud, il va falloir modifier la configuration de php afin d'autoriser l'upload de gros fichiers. (Si vous voulez utiliser Pydio simplement pour gérer les téléchargements de votre seedbox, vous pouvez passer à l'étape suivante.)
On tape alors cette commande pour modifier la configuration de php :

nano /etc/php5/fpm/php.ini

Et éditez ces valeurs par celles qui vous conviennent :

file_uploads = On
post_max_size = 5G
upload_max_filesize = 5G
max_file_uploads = 20000

Sauvegardez vos modifications en faisant un CTRL + X, puis Y, puis Entrée.

3ème étape :
Maintenant place à la configuration de Ngynx pour accueillir notre Pydio.
On commence par créer le fichier de configuration, remplacez VOTRE_ADRESSE_IP par celle de votre serveur :

nano /etc/nginx/sites-available/VOTRE_ADRESSE_IP

Vous arrivez sur un document vierge, c'est normal, il faut le remplir par cette pré-configuration :

server {
listen 80;
server_name VOTRE_ADRESSE_IP;
root /var/www;
index index.php;
client_max_body_size 5G;
access_log /var/log/nginx/VOTRE_ADRESSE_IP.access.log;
error_log /var/log/nginx/VOTRE_ADRESSE_IP.error.log;
location / {
}
location ~* .(?:ico|css|js|gif|jpe?g|png)$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
include drop.conf;
include php.conf;
}

N'oubliez pas de remplacer par votre adresse IP où c'est indiqué, il y a 3 occurences. De même vous pouvez modifier la valeur de la ligne client_max_body_size par le nombre de gigas que vous avez détérminez dans la configuration de php. On sauvegarde le fichier de la même façon que la configuration de php.

On continue avec la création de drop.conf :

nano /etc/nginx/drop.conf

On insère dans ce fichier ces valeurs :

location = /conf/       { deny all; }
location = /data/       { deny all; }
location = /robots.txt  { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
location ~ /.          { access_log off; log_not_found off; deny all; }
location ~ ~$           { access_log off; log_not_found off; deny all; }

Puis on sauvegarde, comme d'habitude.

On passe à la configuration de l'utilisation de php :

nano /etc/nginx/php.conf

Et on y ajoute :

location ~ .php {
try_files $uri =404;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME    $request_filename;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

On sauvegarde encore une fois de la même manière le fichier. Evidemment toutes ces configurations peuvent être modifiées à votre convenance, je ne fais qu'exposer ma propre configuration.

4ème étape :
Une fois que tout est bien configuré où il faut, on peut modifier le site par défaut mis en place lors de l'installation de Nginx pour mettre en place notre propre configuration :

cd /etc/nginx/sites-enabled
rm default
ln -s ../sites-available/VOTRE_ADRESSE_IP

5ème étape :
Voici enfin l'étape qui parle de Pydio, on va placer les fichiers nécessaires dans le bon répertoire afin qu'ils s'affichent lorsque l'on se rend sur notre serveur.
Pour commencer, extrayez l'archive que vous avez récupéré de Pydio. Puis on se connecte en SFTP à son serveur et on se rend dans le répertoire /var/www/. Uploadez-y tous les dossiers et fichiers de l'archive, à savoir conf, core, data etc…

Repassez sur votre connexion SSH et tapez ceci pour donner les bonnes permissions aux dossiers.

cd /var/www
chown -R www-data:www-data /var/www

6ème étape :
Vous en faites pas, c'est presque terminé ! Tout est bien configuré et placé où il faut, il ne reste plus qu'à relancer les services nécessaires et tout devrait fonctionner à la perfection. Donc on tape :

service php5-fpm restart
service nginx restart

Si aucune erreur n'apparait, vous êtes tout bon, l'installation s'est déroulée comme prévue.

7ème étape :
Ouvrez votre navigateur préféré et rendez-vous sur votre adresse IP, pas besoin de spécifier de port spéciaux ou autres, juste votre adresse IP.
Vous devriez tomber sur cette page :

On clique sur Démarrer l'assistant! et on remplit le formulaire selon notre préférence. Choisissez donc les identifiants de votre compte admin (vous pourrez les modifier plus tard) et les options globales comme vous le désirez.
Remplissez les données concernant le stockage des configurations en choisissant "Pas de base de donnée"

Ensuite vous pouvez ajouter directement des utilisateurs, mais vous pourrez le faire très simplement plus tard. Allez hop, on clique sur Installer Pydio, et tout devrait bien se dérouler, patientez quelques secondes. Il se peut que l'assistant vous demande de créer vous-même le fichier .htaccess, pour cela on tape sur SSH :

nano /var/www/.htaccess

Et on y colle :

<IfModule mod_rewrite.c>
# You must set the correct values here if you want
# to enable webDAV sharing. The values assume that your 
# Pydio installation is at http://yourdomain/
# and that you want the webDAV shares to be accessible via 
# http://yourdomain/shares/repository_id/
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^shares ./dav.php [L]
RewriteRule ^api ./rest.php [L]
RewriteRule ^user ./index.php?get_action=user_access_point [L]
RewriteCond %{REQUEST_URI} !^/index
RewriteCond %{REQUEST_URI} !^/plugins
RewriteCond %{REQUEST_URI} ^/dashboard|^/welcome|^/settings|^/ws-
RewriteRule (.*) index.php [L]
#Following lines seem to be necessary if PHP is working
#with apache as CGI or FCGI. Just remove the #
#See http://doc.tiki.org/WebDAV#Note_about_Apache_with_PHP_as_fcgi_or_cgi
#RewriteCond %{HTTP:Authorization} ^(.*)
#RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
#Following lines may be necessary for a PHP-FPM setup
# to make sure that authorization is transmitted.
# Just remove the # at the beginning of the line
#SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>
AddType application/json .json

En pensant bien à sauvegarder. On recharge la page et c'est bon, vous voila sur votre interface Pydio.

Je ne vais pas pouvoir vous détailler toutes les options qu'offre Pydio car j'y passerai ma semaine, mais je vous invite à consulter cette page afin d'en apprendre un peu plus et de vous y retrouver dans toutes ces options. Pydio est vraiment très complet, vous pouvez faire un peu tout ce que vous voulez avec, mais comme il est intuitif vous allez très vite vous en sortir.

J'espère que mon tuto est clair, si vous avez des problèmes ou des questions n'hésitez surtout pas à m'en faire part. Je ferai de mon mieux pour vous aider, et au pire quelqu'un d'expérimenté pourra aussi vous aider.

Bonne journée à tous !

Tutoriel largement inspiré de cette page, mais refait à ma sauce.